diff --git a/docs/faq.md b/docs/faq.md index a13e737c2..1dd93af33 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -179,7 +179,7 @@ TensorArray 和控制流支持需要借助 MNN-Express , - 加载网络时,把需要获取的中间结果加到 output name 中 -### GPU 后端无法使用 +### OpenCL 或 Vulkan 后端无法使用 Linux系统上的简单解决方案: cmake .. -DMNN_USE_SYSTEM_LIB=true -DMNN_SEP_BUILD=false @@ -193,6 +193,21 @@ OpenCL / Vulkan 采用静态变量自注册的方式往 MNN 主库注册后端. 1. 设置 MNN_SEP_BUILD = OFF (cmake -DMNN_SEP_BUILD=OFF).  把 opencl / vulkan 后端统一编入 MNN 的 so. 1. 自己在使用的代码中加上 dlopen("libMNN_CL.so") . 参考 [https://github.com/alibaba/MNN/issues/105](https://github.com/alibaba/MNN/issues/105) . +#### Android App 上因权限问题打不开 OpenCL 库 +由于Android新版本增强了权限控制,有可能遇到加载OpenCL库失败的问题,可以修改 AndroidManifest.xml 对应栏,加入OpenCL相关 so 的权限需求 + +``` + + ... + + + + ... + + +``` + ### 部分模型用 MNNV2Basic 运行出现段错误 - 模型不满足运行条件 diff --git a/docs/tools/convert.md b/docs/tools/convert.md index 84c654ef4..98b1aac98 100644 --- a/docs/tools/convert.md +++ b/docs/tools/convert.md @@ -15,7 +15,7 @@ Usage: --batch arg 如果模型时输入的batch是动态的,可以指定转换后的batch数 - --keepInputFormat 是否保持原始模型的输入格式,默认为:否; + --keepInputFormat 是否保持原始模型的输入格式,默认为:是; --optimizeLevel arg 图优化级别,默认为1: - 0: 不执行图优化,仅针对原始模型是MNN的情况; @@ -34,8 +34,6 @@ Usage: --fp16 将conv/matmul/LSTM的float32参数保存为float16, 模型将减小一半,精度基本无损 - --benchmarkModel 不保存模型中conv/matmul/BN等层的参数,仅用于benchmark测试 - --bizCode arg MNN模型Flag, ex: MNN --debug 使用debug模型显示更多转换信息 @@ -46,6 +44,8 @@ Usage: 仅优化模型大小,加载模型后会解码为float32,量化位宽可选2~8, 运行速度和float32模型一致。8bit时精度基本无损,模型大小减小4倍 default: 0,即不进行权值量化 + + --weightQuantAsymmetric 与weightQuantBits结合使用,决定是否用非对称量化,默认为`true` --compressionParamsFile arg 使用MNN模型压缩工具箱生成的模型压缩信息文件 @@ -79,12 +79,12 @@ Usage: 可选值:{0, 1}, 默认为1, 会检测权重是否使用稀疏化加速 --saveExternalData 将权重,常量等数据存储在额外文件中,默认为`false` + ``` -**说明1: 选项benchmarkModel将模型中例如卷积的weight,BN的mean、var等参数移除,减小转换后模型文件大小,在运行时随机初始化参数,以方便测试模型的性能。** -**说明2: 选项weightQuantBits,使用方式为 --weightQuantBits numBits,numBits可选2~8,此功能仅对conv/matmul/LSTM的float32权值进行量化,仅优化模型大小,加载模型后会解码为float32,量化位宽可选2~8,运行速度和float32模型一致。经内部测试8bit时精度基本无损,模型大小减小4倍。default: 0,即不进行权值量化。** +**说明1: 选项weightQuantBits,使用方式为 --weightQuantBits numBits,numBits可选2~8,此功能仅对conv/matmul/LSTM的float32权值进行量化,仅优化模型大小,加载模型后会解码为float32,量化位宽可选2~8,运行速度和float32模型一致。经内部测试8bit时精度基本无损,模型大小减小4倍。default: 0,即不进行权值量化。** -**说明3:如果使用Android JNI的Java接口开发,因为接口中不提供`copyFromHost`功能,所以需要在转换模型时使用`keepInputFormat`** +**说明2:如果使用Interpreter-Session C++接口开发,因为NC4HW4便于与ImageProcess结合,可以考虑在转换模型时使用自动内存布局:`--keepInputFormat=0`** ## 其他模型转换到MNN ### TensorFlow to MNN diff --git a/docs/tools/test.md b/docs/tools/test.md index 25a24700f..c4981e2a3 100644 --- a/docs/tools/test.md +++ b/docs/tools/test.md @@ -29,7 +29,7 @@ Model Version: < 2.0.0 `./MNNV2Basic.out model [runLoops runMask forwardType numberThread precision_memory inputSize]` - `model:str` 模型文件路径 - `runLoops:int` 性能测试的循环次数,可选,默认为`1` -- `runMask:int` 是否输出推理中间结果,0为不输出,1为只输出每个算子的输出结果({op_name}.txt),2为输出每个算子的输入(Input_{op_name}.txt)和输出({op_name}.txt)结果; 默认输出当前目录的output目录下(使用工具之前要自己建好output目录),可选,默认为`0` +- `runMask:int` 是否输出推理中间结果,0为不输出,1为只输出每个算子的输出结果({op_name}.txt);2为输出每个算子的输入(Input_{op_name}.txt)和输出({op_name}.txt)结果; 默认输出当前目录的output目录下(使用工具之前要自己建好output目录); 16为开启自动选择后端;32为针对Winograd算法开启内存优化模式,开启后会降低模型(如果含有Winograd Convolution算子)运行时的内存但可能会导致算子的性能损失。可选,默认为`0` - `forwardType:int` 执行推理的计算设备,有效值为:0(CPU)、1(Metal)、2(CUDA)、3(OpenCL)、6(OpenGL),7(Vulkan) ,9 (TensorRT),可选,默认为`0` - `numberThread:int` 线程数仅对CPU有效,可选,默认为`4` - `precision_memory:int` 测试精度与内存模式,precision_memory % 16 为精度,有效输入为:0(Normal), 1(High), 2(Low), 3(Low_BF16),可选,默认为`2` ; precision_memory / 16 为内存设置,默认为 0 (memory_normal) 。例如测试 memory 为 low (2) ,precision 为 1 (high) 时,设置 precision_memory = 9 (2 * 4 + 1) @@ -79,6 +79,10 @@ Avg= 5.570600 ms, OpSum = 7.059200 ms min= 3.863000 ms, max= 11.596001 ms ### 默认输出 在当前目录 output 文件夹下,依次打印输出为 0.txt , 1.txt , 2.txt , etc +### 测试文件夹生成 +- 若有原始的tf模型/Onnx模型,可以使用testMNNFromTf.py / testMNNFromOnnx.py / testMNNFromTflite.py 等脚本生成 +- 若只有mnn模型,可以用 tools/script/make_test_for_mnn.py 脚本生成测试文件夹,使用方式:mkdir testdir && pythhon3 make_test_for_mnn.py XXX.mnn testdir + ### runMask 参数说明 - 1 : 输出推理中间结果,每个算子的输入存到(Input_{op_name}.txt),输出存为({op_name}.txt), 默认输出当前目录的output目录下(使用工具之前要自己建好output目录),不支持与 2 / 4 叠加 - 2 : 打印推理中间结果的统计值(最大值/最小值/平均值),只支持浮点类型的统计,不支持与 1 / 4 叠加 @@ -88,6 +92,7 @@ Avg= 5.570600 ms, OpSum = 7.059200 ms min= 3.863000 ms, max= 11.596001 ms - 32 : rearrange 设为 true ,降低模型加载后的内存大小,但会增加模型加载的初始化时间 - 64 : 创建模型后,clone 出一个新的模型运行,用于测试 clone 功能(主要用于多并发推理)的正确性 - 128 : 使用文件夹下面的 input.mnn 和 output.mnn 做为输入和对比输出,对于数据量较大的情况宜用此方案 +- 512 : 开启使用Winograd算法计算卷积时的内存优化,开启后模型的运行时内存会降低,但可能导致性能损失。 ### 示例 @@ -114,7 +119,7 @@ Avg= 9.946699 ms, min= 9.472000 ms, max= 10.227000 ms `./SequenceModuleTest.out model [forwardType] [shapeMutable] dir1 dir2 ......` - `model:str` 模型文件路径 - `forwardType:int` 执行推理的计算设备,有效值为:0(CPU)、1(Metal)、2(CUDA)、3(OpenCL)、6(OpenGL),7(Vulkan) ,9 (TensorRT) -- `shapeMutable:int` 输入形状是否可变 +- `numberThread:int` 线程数或GPU模式 - `dir_n:str` 输入输出信息文件夹,可使用 testMNNFromOnnx.py 等脚本生成,参考模型转换的正确性校验部分 ```bash ./SequenceModuleTest.out transformer.mnn 0 1 tr tr1 tr2 tr3 tr4 > error.txt diff --git a/express/Executor.cpp b/express/Executor.cpp index 1abaaad72..c54520ccc 100644 --- a/express/Executor.cpp +++ b/express/Executor.cpp @@ -58,10 +58,6 @@ void Executor::setGlobalExecutorConfig(MNNForwardType type, const BackendConfig& mAttr->firstType = std::make_pair(type, numberThread); info.mode = Backend::Info::DIRECT; info.numThread = numberThread; - if (MNN_FORWARD_METAL == type) { - // Close metal's defer encoder - info.numThread |= MNN_GPU_RECORD_OP; - } info.user = (BackendConfig*)&config; std::shared_ptr bn(creator->onCreate(info)); mRuntimes[mAttr->firstType] = bn; @@ -264,6 +260,8 @@ void Executor::RuntimeManager::setHint(Interpreter::HintMode mode, int value) { case Interpreter::MEM_ALLOCATOR_TYPE: mInside->modes.memoryAllocatorType = value; break; + case Interpreter::WINOGRAD_MEMORY_LEVEL: + mInside->modes.winogradMemoryUsed = value; default: break; } @@ -303,6 +301,7 @@ Executor::RuntimeManager::RuntimeManager() { mInside->modes.outputMode = Interpreter::Session_Output_User; } Executor::RuntimeManager::~RuntimeManager() { + updateCache(); delete mInside; } Executor::RuntimeManager* Executor::RuntimeManager::createRuntimeManager(const ScheduleConfig &config) { @@ -367,7 +366,7 @@ void Executor::RuntimeManager::setCache(std::string cacheName) { MNN_ERROR("Empty cacheFile\n"); return; } - std::unique_ptr loader(new FileLoader(mInside->mCache->cacheFile.c_str())); + std::unique_ptr loader(new FileLoader(mInside->mCache->cacheFile.c_str(), true)); if (!loader->valid()) { MNN_ERROR("Load Cache file error.\n"); return; @@ -394,9 +393,9 @@ void Executor::RuntimeManager::setCache(std::string cacheName) { // Reset cache loadCache(mInside->mInfo, nullptr, 0); MNN_PRINT("Cache invalid, will be reset\n"); + } else { + mInside->mCache->lastCacheSize = mInside->mCache->cacheBuffer.size() - mInside->mCache->cacheOffset; } - - mInside->mCache->lastCacheSize = mInside->mCache->cacheBuffer.size() - mInside->mCache->cacheOffset; } void Executor::RuntimeManager::setExternalFile(std::string fileName) { @@ -404,6 +403,9 @@ void Executor::RuntimeManager::setExternalFile(std::string fileName) { } void Executor::RuntimeManager::updateCache() { + if (nullptr == mInside->mCache) { + return; + } std::lock_guard _l(mLock); // Backend_Auto and no Async work, then don't need updateCache @@ -489,7 +491,10 @@ void Executor::_makeCache(const std::vector& expr, bool forceCPU) { if (dfsStack.empty()) { return; } + auto current = ExecutorScope::Current(); + auto rt = current->getRuntime(); Schedule::ScheduleInfo scheduleInfo; + scheduleInfo.externalWeightPath = current->getAttr()->externalFile; scheduleInfo.pipelineInfo.resize(1); auto& pipeline = scheduleInfo.pipelineInfo[0].second; std::vector> opBuffers; @@ -577,8 +582,6 @@ void Executor::_makeCache(const std::vector& expr, bool forceCPU) { } pipeline.emplace_back(std::move(opInfo)); } - auto current = ExecutorScope::Current(); - auto rt = current->getRuntime(); Session::ModeGroup group; group.inputMode = Interpreter::Session_Input_User; group.outputMode = Interpreter::Session_Output_User; @@ -593,9 +596,9 @@ void Executor::_makeCache(const std::vector& expr, bool forceCPU) { cahce->mCacheBuffers = std::move(opBuffers); // Don't report error when use expr dynamic compute, which will be called in model convert scheduleInfo.pipelineInfo[0].first.reportError = false; - scheduleInfo.pipelineInfo[0].first.info.numThread = 1; if (forceCPU) { scheduleInfo.pipelineInfo[0].first.info.type = MNN_FORWARD_CPU; + scheduleInfo.pipelineInfo[0].first.info.numThread = 1; } else { scheduleInfo.pipelineInfo[0].first.info.type = current->getAttr()->firstType.first; scheduleInfo.pipelineInfo[0].first.info.numThread = current->getAttr()->firstType.second; diff --git a/express/Expr.cpp b/express/Expr.cpp index 94deaf933..4ff29a59c 100644 --- a/express/Expr.cpp +++ b/express/Expr.cpp @@ -85,9 +85,9 @@ bool VARP::fix(VARP::InputType type) const { VARP newVARP = Express::Variable::create(Express::Expr::create(tensor, true)); newVARP->expr().first->mType = type; auto& pipelineInfo = inside->mCache->getSession()->getPipelineInfo(0); - if (TensorUtils::getDescribe(tensor)->getBackend() == pipelineInfo.first.cache.first.get()) { + if (TensorUtils::getDescribeOrigin(tensor)->getBackend() == pipelineInfo.first.cache.first.get()) { newVARP->expr().first->inside()->mHoldBackend = pipelineInfo.first.cache.first; - } else if (TensorUtils::getDescribe(tensor)->getBackend() == pipelineInfo.first.cache.second.get()) { + } else if (TensorUtils::getDescribeOrigin(tensor)->getBackend() == pipelineInfo.first.cache.second.get()) { newVARP->expr().first->inside()->mHoldBackend = pipelineInfo.first.cache.second; } Variable::replace(VARP(mContent), newVARP); @@ -224,6 +224,16 @@ EXPRP Expr::create(const OpT* op, std::vector inputs, int outputSize) { return create(std::move(info), nullptr, VARP::INPUT); } if (OpType_Const == op->type || OpType_TrainableParam == op->type) { + if (!op->externalPath.empty()) { + flatbuffers::FlatBufferBuilder builder; + auto offset = Op::Pack(builder, op); + builder.Finish(offset); + std::shared_ptr extra(new BufferStorage); + extra->storage = builder.ReleaseRaw(extra->allocated_size, extra->offset); + auto resExpr = Expr::create(extra, std::move(inputs), outputSize); + resExpr->setName(op->name); + return resExpr; + } Variable::Info info; info.dim = op->main.AsBlob()->dims; info.order = Utils::revertFormat(op->main.AsBlob()->dataFormat); @@ -568,7 +578,7 @@ bool Variable::copyToDevicePtr(void* devicePtr, int memoryType) { auto inside = mFrom->inside(); auto originTensor = inside->mOutputTensors[mFromIndex]; - auto bn = TensorUtils::getDescribe(originTensor)->getBackend(); + auto bn = TensorUtils::getDescribeOrigin(originTensor)->getBackend(); if(bn == nullptr) { MNN_ERROR("Error: Varp copyToDevicePtr can't find backend\n"); return false; @@ -577,7 +587,7 @@ bool Variable::copyToDevicePtr(void* devicePtr, int memoryType) { MNN::Tensor tempTensor(originTensor->dimensions(), originTensor->getDimensionType()); tempTensor.setDevicePtr(devicePtr, memoryType); - TensorUtils::getDescribe(originTensor)->getBackend()->onCopyBuffer(originTensor, &tempTensor); + TensorUtils::getDescribeOrigin(originTensor)->getBackend()->onCopyBuffer(originTensor, &tempTensor); // Sync the result tempTensor.wait(Tensor::MAP_TENSOR_READ, true); return true; @@ -738,12 +748,11 @@ bool Variable::resize(INTS dims) { info.syncSize(); Utils::copyInfoToTensor(mFrom->inside()->mOutputTensors[0], mFrom->inside()->mOutputInfos.data()); Utils::releaseMemoryForHostTensor(mFrom->inside()->mOutputTensors[0]); - if (0 >= info.size) { - return false; - } - bool res = Utils::allocMemoryForHostTensor(mFrom->inside()->mOutputTensors[0]); - if (!res) { - return false; + if (0 < info.size) { + bool res = Utils::allocMemoryForHostTensor(mFrom->inside()->mOutputTensors[0]); + if (!res) { + return false; + } } mFrom->mValid = true; @@ -946,7 +955,7 @@ bool Expr::setInfoDirty() { std::vector Variable::load(const char* fileName) { AutoStorage buffer; { - FileLoader loader(fileName); + FileLoader loader(fileName, true); if (!loader.valid()) { MNN_ERROR("Error for open %s\n", fileName); return {}; diff --git a/express/NeuralNetWorkOp.cpp b/express/NeuralNetWorkOp.cpp index 38a636977..18d58c3ec 100644 --- a/express/NeuralNetWorkOp.cpp +++ b/express/NeuralNetWorkOp.cpp @@ -1756,18 +1756,6 @@ VARP _Int8ToFloat(VARP x, VARP scale) { auto xInfo = x->getInfo(); auto scaleInfo = scale->getInfo(); auto scalePtr = scale->readMap(); - if (nullptr == scalePtr || nullptr == xInfo || nullptr == scaleInfo) { - MNN_ERROR("Error for _Int8ToFloat because var not ready\n"); - return nullptr; - } - if (xInfo->order != NC4HW4 || xInfo->type.code != halide_type_int) { - MNN_ERROR("Not Support Input for _Int8ToFloat because var not NC4HW4 or not int8\n"); - return nullptr; - } - if ((scaleInfo->size != xInfo->dim[1]) && (scaleInfo->size != 1)) { - MNN_ERROR("_Int8ToFloat Scale's size not match input's channel\n"); - return nullptr; - } std::unique_ptr op(new OpT); op->type = OpType_Int8ToFloat; op->main.type = OpParameter_QuantizedFloatParam; @@ -1781,18 +1769,6 @@ VARP _Int8ToFloat(VARP x, VARP scale, int8_t zeroPoint) { auto xInfo = x->getInfo(); auto scaleInfo = scale->getInfo(); auto scalePtr = scale->readMap(); - if (nullptr == scalePtr || nullptr == xInfo || nullptr == scaleInfo) { - MNN_ERROR("Error for _Int8ToFloat because var not ready\n"); - return nullptr; - } - if (xInfo->order != NC4HW4 || xInfo->type.code != halide_type_int) { - MNN_ERROR("Not Support Input for _Int8ToFloat because var not NC4HW4 or not int8\n"); - return nullptr; - } - if ((scaleInfo->size != xInfo->dim[1]) && (scaleInfo->size != 1)) { - MNN_ERROR("_Int8ToFloat Scale's size not match input's channel\n"); - return nullptr; - } std::unique_ptr op(new OpT); op->type = OpType_Int8ToFloat; op->main.type = OpParameter_QuantizedFloatParam; diff --git a/express/RuntimeAttr.hpp b/express/RuntimeAttr.hpp index 013b6a446..0aef32824 100644 --- a/express/RuntimeAttr.hpp +++ b/express/RuntimeAttr.hpp @@ -26,6 +26,7 @@ struct RuntimeAttr { struct ExecutorAttr { std::shared_ptr constantBackend; std::pair firstType; + std::string externalFile; }; }; }; diff --git a/express/module/Module.cpp b/express/module/Module.cpp index 2fb31b367..d56c944cd 100644 --- a/express/module/Module.cpp +++ b/express/module/Module.cpp @@ -25,8 +25,20 @@ namespace MNN { namespace Express { +static MNN::Express::Executor::RuntimeManager* _createDefaultRuntimeManager(const Module::Config* config) { + ScheduleConfig sche_config; + if(nullptr != config && config->backend != nullptr) { + sche_config.type = config->backend->type; + sche_config.backendConfig = config->backend->config; + } else { + auto exe = ExecutorScope::Current(); + sche_config.type = exe->getAttr()->firstType.first; + sche_config.mode = exe->getAttr()->firstType.second; + } + return Executor::RuntimeManager::createRuntimeManager(sche_config); +} -static Module* loadInternal(const std::vector& inputs, const std::vector& outputs, const uint8_t* buffer, size_t length, const std::shared_ptr _rtMgr, const Module::Config* config, bool enforceAuth); +static Module* loadInternal(const std::vector& inputs, const std::vector& outputs, const uint8_t* buffer, size_t length, const std::shared_ptr _rtMgr, const Module::Config* config); class EmptyModule : public Module { public: @@ -144,29 +156,11 @@ Module* Module::load(const std::vector& inputs, const std::vector& inputs, const std::vector& outputs, const char* fileName, const std::shared_ptr rtMgr, const Module::Config* config) { - AutoStorage buffer; - { - FileLoader loader(fileName); - if (!loader.valid()) { - MNN_ERROR("Error for open %s\n", fileName); - return nullptr; - } - loader.read(); - if (!loader.valid()) { - return nullptr; - } - loader.merge(buffer); - if (buffer.get() == nullptr) { - return nullptr; - } - } - return load(inputs, outputs, buffer.get(), buffer.size(), rtMgr, config); -} class NetModule : public Module { public: NetModule(std::shared_ptr m, std::shared_ptr info, const MNN::Net* net, size_t size, float costTime) { - mModule = m; + mChildren = {m}; + auto mModule = mChildren[0]; mInfo = info; setType("Net"); #ifdef MNN_INTERNAL_ENABLED @@ -204,13 +198,14 @@ class NetModule : public Module { #endif // MNN_INTERNAL_ENABLED } virtual ~ NetModule(){ - mModule.reset(); + mChildren.clear(); mInfo.reset(); auto exe = ExecutorScope::Current(); exe->gc(Executor::FULL); } virtual std::vector onForward(const std::vector& inputs) override { + auto mModule = mChildren[0]; #ifdef MNN_INTERNAL_ENABLED auto glo = ExecutorScope::Current(); @@ -246,6 +241,7 @@ class NetModule : public Module { return outputs; } virtual Module* clone(CloneContext* ctx) const override { + auto mModule = mChildren[0]; std::shared_ptr submodule(mModule->clone(ctx)); NetModule* module(new NetModule(submodule, mInfo, nullptr, 0, 0.0f)); @@ -259,7 +255,6 @@ class NetModule : public Module { } private: - std::shared_ptr mModule; std::shared_ptr mInfo; #ifdef MNN_INTERNAL_ENABLED std::map mLogInfo; @@ -312,13 +307,45 @@ static void _loadInputs(Module::Info* info, const std::vector& inpu } } +Module* Module::load(const std::vector& inputs, const std::vector& outputs, const char* fileName, const std::shared_ptr _rtMgr, const Module::Config* config) { + AutoStorage buffer; + { + FileLoader loader(fileName, true); + if (!loader.valid()) { + MNN_ERROR("Error for open %s\n", fileName); + return nullptr; + } + loader.read(); + if (!loader.valid()) { + return nullptr; + } + loader.merge(buffer); + if (buffer.get() == nullptr) { + return nullptr; + } + } + auto rtMgr = _rtMgr; + if (nullptr == rtMgr.get()) { + rtMgr.reset(_createDefaultRuntimeManager(config)); + } + if (rtMgr->getInside()->mExternalFile.empty()) { + // Set Default externalFile + rtMgr->setExternalFile(std::string(fileName) + ".weight"); + } + return loadInternal(inputs, outputs, buffer.get(), buffer.size(), rtMgr, config); +} + Module* Module::load(const std::vector& inputs, const std::vector& outputs, const uint8_t* buffer, size_t length, const std::shared_ptr _rtMgr, const Module::Config* config) { - return loadInternal(inputs, outputs, buffer, length, _rtMgr, config, true); + auto rtmgr = _rtMgr; + if (nullptr == rtmgr) { + rtmgr.reset(_createDefaultRuntimeManager(config)); + } + return loadInternal(inputs, outputs, buffer, length, rtmgr, config); } -static Module* loadInternal(const std::vector& inputs, const std::vector& outputs, const uint8_t* buffer, size_t length, const std::shared_ptr _rtMgr, const Module::Config* config, bool enforceAuth) { +static Module* loadInternal(const std::vector& inputs, const std::vector& outputs, const uint8_t* buffer, size_t length, const std::shared_ptr _rtMgr, const Module::Config* config) { // Check if runtime is valid - if (nullptr != _rtMgr && _rtMgr->getInside()->mRuntime.first.empty()) { + if (nullptr == _rtMgr || _rtMgr->getInside()->mRuntime.first.empty()) { MNN_ERROR("Invalid runtime\n"); return nullptr; } @@ -349,12 +376,6 @@ static Module* loadInternal(const std::vector& inputs, const std::v if (nullptr == config) { config = &defaultConfig; } - if(nullptr == rtMgr && config->backend != nullptr) { - ScheduleConfig sche_config; - sche_config.type = config->backend->type; - sche_config.backendConfig = config->backend->config; - rtMgr.reset(Executor::RuntimeManager::createRuntimeManager(sche_config)); - } info->inputNames = inputs; info->outputNames = outputs; if ((!inputs.empty()) && (!outputs.empty())) { @@ -457,6 +478,13 @@ Module* Module::cloneBaseTo(CloneContext* ctx, Module* module) const { Module* Module::extract(std::vector inputs, std::vector outputs, bool fortrain, const std::map& subGraph) { return new PipelineModule(inputs, outputs); } +int Module::traceOrOptimize(Interpreter::SessionMode stage) { + for (auto& m : mChildren) { + m->traceOrOptimize(stage); + } + return this->onOptimize(stage); +} + } // namespace Express } // namespace MNN diff --git a/express/module/PipelineModule.cpp b/express/module/PipelineModule.cpp index 55dd413a3..fc2551687 100644 --- a/express/module/PipelineModule.cpp +++ b/express/module/PipelineModule.cpp @@ -16,6 +16,7 @@ #include "Utils.hpp" #include "core/Backend.hpp" #include "core/WrapExecution.hpp" +#include "core/FileLoader.hpp" #include "utils/InitNet.hpp" #include "RuntimeAttr.hpp" #include "geometry/GeometryComputer.hpp" @@ -509,6 +510,7 @@ struct ModuleRuntimeConfig { Backend::Info compute; const BackendConfig* userConfig = nullptr; Session::ModeGroup modes; + std::string externalFile; }; static Module* _createSubModule(std::shared_ptr bufferStorage, const SubModuleInfo& info, const std::map& subs, std::shared_ptr sharedConst, const Module::Config& config, const ModuleRuntimeConfig& runtimeConfig) { @@ -527,6 +529,7 @@ static Module* _createSubModule(std::shared_ptr bufferStorage, co // MNN_ASSERT(false); } Schedule::ScheduleInfo scheduleInfo; + scheduleInfo.externalWeightPath = runtimeConfig.externalFile; scheduleInfo.defaultBackend = sharedConst->defaultBackend; scheduleInfo.constReplaceBackend = sharedConst->constReplaceBackend; scheduleInfo.allTensors = sharedConst->allTensors; @@ -602,6 +605,7 @@ Module* PipelineModule::load(const std::vector& inputs, const std:: } Module* PipelineModule::load(const std::vector& inputs, const std::vector& outputs, std::shared_ptr bufferStorage, std::shared_ptr rtMgr, const Module::Config* config, std::map& subGraphMap) { + MNN_ASSERT(nullptr != rtMgr); std::shared_ptr sharedConst; auto buffer = bufferStorage->buffer(); auto length = bufferStorage->size(); @@ -611,43 +615,40 @@ Module* PipelineModule::load(const std::vector& inputs, const std:: sharedConst.reset(new Schedule::ScheduleInfo); auto curExe = ExecutorScope::Current(); bool permitCodeGen = false; - if (rtMgr && !rtMgr->getInside()->mExternalFile.empty()) { - curExe->getRuntime().second->setExternalFile(rtMgr->getInside()->mExternalFile); - permitCodeGen = rtMgr->getInside()->modes.codegenMode == Interpreter::Session_Codegen_Enable; + std::shared_ptr modRuntimeCfgPtr(new ModuleRuntimeConfig); + if (!rtMgr->getInside()->mExternalFile.empty()) { + modRuntimeCfgPtr->externalFile = rtMgr->getInside()->mExternalFile; } + permitCodeGen = rtMgr->getInside()->modes.codegenMode == Interpreter::Session_Codegen_Enable; std::shared_ptr defaultBackend = curExe->getAttr()->constantBackend; std::vector> allTensors; sharedConst->allTensors.resize(net->tensorName()->size()); sharedConst->defaultBackend = defaultBackend; - std::shared_ptr modRuntimeCfgPtr(new ModuleRuntimeConfig); ModuleRuntimeConfig& modRuntime = *modRuntimeCfgPtr; modRuntime.needGeometry = needGeometry; - if (nullptr == rtMgr) { - modRuntime.rt = Executor::getRuntime(); - auto glo = ExecutorScope::Current(); - modRuntime.compute.type = glo->getAttr()->firstType.first; - modRuntime.compute.numThread = glo->getAttr()->firstType.second; - } else { + { modRuntime.modes = rtMgr->getInside()->modes; modRuntime.rt = rtMgr->getInside()->mRuntime; + modRuntime.externalFile = rtMgr->getInside()->mExternalFile; modRuntime.userConfig = &rtMgr->getInside()->mConfig; modRuntime.compute.type = modRuntime.rt.first.begin()->first; modRuntime.compute.numThread = 1; - // set external file info - if (!rtMgr->getInside()->mExternalFile.empty()) { - modRuntime.rt.first.begin()->second->setExternalFile(rtMgr->getInside()->mExternalFile); - modRuntime.rt.second->setExternalFile(rtMgr->getInside()->mExternalFile); - } // set allocator type modRuntime.rt.first.begin()->second->setAllocatorType(rtMgr->getInside()->modes.memoryAllocatorType); modRuntime.rt.second->setAllocatorType(rtMgr->getInside()->modes.memoryAllocatorType); + // set winograd memory type + modRuntime.rt.first.begin()->second->setWinogradMemoryLevel(rtMgr->getInside()->modes.winogradMemoryUsed); + modRuntime.rt.second->setWinogradMemoryLevel(rtMgr->getInside()->modes.winogradMemoryUsed); } auto& rt = modRuntime.rt; auto firstRt = rt.first[modRuntime.compute.type]; sharedConst->constReplaceBackend.reset(firstRt->onCreate(modRuntime.userConfig)); ErrorCode code = NO_ERROR; std::set noneedComputeIndexes; - initConstTensors(sharedConst->allTensors, net, defaultBackend.get(), code); + { + FileLoader fileLoader(modRuntimeCfgPtr->externalFile.c_str()); + initConstTensors(sharedConst->allTensors, net, defaultBackend.get(), code, &fileLoader); + } if (NO_ERROR != code) { MNN_ERROR("Alloc memory for const tensor error\n"); return nullptr; @@ -776,17 +777,12 @@ Module* PipelineModule::load(const std::vector& inputs, const std:: std::shared_ptr wrapTensor = WrapExecution::makeCopyTensor(t.get(), curBackend); auto outDes = TensorUtils::getDescribe(wrapTensor.get()); outDes->usage = des->usage; - auto tempRes = curBackend->onAcquireBuffer(wrapTensor.get(), Backend::STATIC); + auto tempRes = WrapExecution::allocAndCopy(curBackend, t.get(), wrapTensor.get()); if (!tempRes) { continue; } - outDes->setBackend(curBackend); - curBackend->onCopyBuffer(t.get(), wrapTensor.get()); outDes->stageMask |= Tensor::InsideDescribe::CONVERTED_STAGE; - TensorUtils::getDescribeOrigin(t.get())->mContent = TensorUtils::getDescribeOrigin(wrapTensor.get())->mContent; - t->buffer().host = wrapTensor->buffer().host; - t->buffer().device = wrapTensor->buffer().device; - t->buffer().dim = TensorUtils::getDescribe(wrapTensor.get())->dims; + WrapExecution::copyReplaceTensor(wrapTensor.get(), t.get()); } } } diff --git a/express/module/StaticModule.cpp b/express/module/StaticModule.cpp index 24d45ff8a..9bdc86e77 100644 --- a/express/module/StaticModule.cpp +++ b/express/module/StaticModule.cpp @@ -16,12 +16,15 @@ #include "core/MNNMemoryUtils.h" #include "RuntimeAttr.hpp" #include "core/TensorUtils.hpp" +#include "core/FileLoader.hpp" +#include "core/OpCommonUtils.hpp" namespace MNN { namespace Express { static std::vector> preRearrangeWeights( // NOLINT Schedule::ScheduleInfo& scheduleInfo, Backend* backend, Backend* backupBackend) { + FileLoader loader(scheduleInfo.externalWeightPath.c_str()); auto&& pipelineInfo = scheduleInfo.pipelineInfo[0].second; std::vector> splitOps(pipelineInfo.size()); for (int i = 0; i < pipelineInfo.size(); ++i) { @@ -68,9 +71,10 @@ static std::vector> preRearrangeWeights( // NOLIN } } } - exe.reset(backend->onCreate(info.inputs, info.outputs, op)); + std::shared_ptr tmpstorage; + exe.reset(OpCommonUtils::createExecutionWithExternal(backend, info.inputs, info.outputs, op, &loader, tmpstorage)); if (exe.get() == nullptr) { - exe.reset(backupBackend->onCreate(info.inputs, info.outputs, op)); + exe.reset(OpCommonUtils::createExecutionWithExternal(backupBackend, info.inputs, info.outputs, op, &loader, tmpstorage)); } if (nullptr == exe) { break; @@ -313,7 +317,7 @@ std::vector StaticModule::onForward(const std::vector(cacheIter->second) = true; mPrevInputTensor[i] = inputTensor; if (std::get<1>(*cacheTensor) != nullptr) { - if (!WrapExecution::needWrap(inputTensor, TensorUtils::getDescribe(std::get<0>(*cacheTensor))->getBackend())) { + if (!WrapExecution::needWrap(inputTensor, TensorUtils::getDescribeOrigin(std::get<0>(*cacheTensor))->getBackend())) { // No need copy now, reset it cacheIter->second = std::make_tuple(nullptr, nullptr, true, true); } @@ -342,7 +346,7 @@ std::vector StaticModule::onForward(const std::vectorbuffer().host != srcPtr; mInputTensors[i]->buffer().host = srcPtr; mInputTensors[i]->buffer().device = 0; - des->setBackend(pipelineInfo.first.cache.second.get()); + TensorUtils::getDescribeOrigin(mInputTensors[i])->setBackend(pipelineInfo.first.cache.second.get()); if (nullptr == srcDes->quantAttr.get()) { // For device need copy, cache device tensor auto cacheIter = pipelineInfo.first.inputTensorCopyCache.find(mInputTensors[i]); @@ -427,7 +431,7 @@ std::vector StaticModule::onForward(const std::vectormOutputFromTensor[i]] = Express::Variable::create(Express::Expr::create(tensor, true)); - auto backend = TensorUtils::getDescribe(tensor)->getBackend(); + auto backend = TensorUtils::getDescribeOrigin(tensor)->getBackend(); if (backend == pipelineInfo.first.cache.first.get()) { outputs[mResource->mOutputFromTensor[i]]->expr().first->inside()->mHoldBackend = pipelineInfo.first.cache.first; } else if (backend == pipelineInfo.first.cache.second.get()) { @@ -460,6 +464,19 @@ Module* StaticModule::clone(CloneContext* ctx) const { module->resetInputOutputs(); return this->cloneBaseTo(ctx, module); } +int StaticModule::onOptimize(Interpreter::SessionMode stage) { + switch (stage) { + case MNN::Interpreter::Session_Resize_Check: + mSession->openResizeCheck(); + break; + case MNN::Interpreter::Session_Resize_Fix: + mSession->fixResizeCache(); + break; + default: + break; + } + return 0; +} } // namespace Express } // namespace MNN diff --git a/express/module/StaticModule.hpp b/express/module/StaticModule.hpp index c87857b38..f01adc270 100644 --- a/express/module/StaticModule.hpp +++ b/express/module/StaticModule.hpp @@ -24,6 +24,8 @@ class StaticModule : public Module { virtual ~ StaticModule(); virtual std::vector onForward(const std::vector& inputs) override; virtual void onClearCache() override; + virtual int onOptimize(Interpreter::SessionMode stage) override; + private: StaticModule() = default; void resetInputOutputs(); diff --git a/include/MNN/Interpreter.hpp b/include/MNN/Interpreter.hpp index df900f3f0..5a6e235fb 100644 --- a/include/MNN/Interpreter.hpp +++ b/include/MNN/Interpreter.hpp @@ -159,6 +159,10 @@ class MNN_PUBLIC Interpreter { /** Determine whether use codegen function */ Session_Codegen_Disable = 12, // Disable codegen in case extra build codegen cost Session_Codegen_Enable = 13, // Enable codegen + + /** Dynamic Reisze Optimization */ + Session_Resize_Check = 14, // Open Trace for resize + Session_Resize_Fix = 15, // Apply Resize Optimization }; /** * @brief The API shoud be called before create session. @@ -188,6 +192,7 @@ class MNN_PUBLIC Interpreter { * @param session given session * @param flag Protected param, not used now */ + ErrorCode updateCacheFile(Session *session, int flag = 0); enum HintMode { @@ -196,6 +201,8 @@ class MNN_PUBLIC Interpreter { // Strictly check model file or not, default 1. if set 0, will not check model file valid/invalid STRICT_CHECK_MODEL = 1, MEM_ALLOCATOR_TYPE = 2, + // Winograd unit candidates count, default 3. if set 0, will use less unit candidates for less memory at the expense of performance. + WINOGRAD_MEMORY_LEVEL = 3, }; /** * @brief The API shoud be called before create session. diff --git a/include/MNN/MNNDefine.h b/include/MNN/MNNDefine.h index d2e3d1757..ec0956421 100644 --- a/include/MNN/MNNDefine.h +++ b/include/MNN/MNNDefine.h @@ -69,6 +69,6 @@ MNN_ERROR("Check failed: %s ==> %s\n", #success, #log); \ #define STR(x) STR_IMP(x) #define MNN_VERSION_MAJOR 2 #define MNN_VERSION_MINOR 8 -#define MNN_VERSION_PATCH 3 +#define MNN_VERSION_PATCH 4 #define MNN_VERSION STR(MNN_VERSION_MAJOR) "." STR(MNN_VERSION_MINOR) "." STR(MNN_VERSION_PATCH) #endif /* MNNDefine_h */ diff --git a/include/MNN/expr/Module.hpp b/include/MNN/expr/Module.hpp index b3b4da718..2436b3985 100644 --- a/include/MNN/expr/Module.hpp +++ b/include/MNN/expr/Module.hpp @@ -115,16 +115,21 @@ class MNN_PUBLIC Module { void registerModel(const std::vector>& children); static void destroy(Module* m); + + int traceOrOptimize(Interpreter::SessionMode stage); protected: + virtual int onOptimize(Interpreter::SessionMode stage) { + return 0; + } virtual void onClearCache() { } Module* cloneBaseTo(CloneContext* ctx, Module* module) const; -private: - void _collectParameters(std::vector& result) const; std::vector> mChildren; std::vector mParameters; +private: + void _collectParameters(std::vector& result) const; bool mIsTraining = true; std::string mName; std::string mType; diff --git a/llm/include/llm.hpp b/llm/include/llm.hpp index 125e32e09..5b56fb481 100644 --- a/llm/include/llm.hpp +++ b/llm/include/llm.hpp @@ -16,7 +16,6 @@ #include #include -#include #include #include #include @@ -26,9 +25,10 @@ using namespace MNN; using namespace Express; class Tokenizer; +class Pipeline; +// Llm start // llm stream buffer with callback - class LlmStreamBuffer : public std::streambuf { public: using CallBack = std::function;; @@ -52,19 +52,24 @@ class MNN_PUBLIC Llm { // default tokenier is senrencepiece tokenizer_.reset(new Sentencepiece); } - virtual ~Llm() = default; - static Llm* createLLM(const std::string& path, std::string model_type = "auto"); - VARP disk_embedding(const std::vector& input_ids); + virtual ~Llm() { + decode_modules_.clear(); + prefill_modules_.clear(); + modules_.clear(); + visual_module_.reset(); + runtime_manager_.reset(); + } + static Llm* createLLM(const std::string& path, std::string model_type = "auto", int forwardType = 0); void load(const std::string& model_dir); - int forward(const std::vector& input_ids); - std::vector tokenizer_encode(const std::string& input_str); - std::string decode(int id); void chat(); + void trace(bool start); void warmup(); std::string response(const std::string& input_str, std::ostream* os = &std::cout, const char* end_with = nullptr); + std::string response_nohistory(const std::string& input_str, std::ostream* os = &std::cout, const char* end_with = nullptr); float load_progress() { return load_progress_; } void reset(); void print_speed(); + friend class Pipeline; public: std::vector history_; // forward info @@ -75,29 +80,45 @@ class MNN_PUBLIC Llm { // time int64_t prefill_us_ = 0; int64_t decode_us_ = 0; -private: - virtual std::vector tokenizer(const std::string& query) = 0; - virtual VARP gen_attention_mask(int seq_len) = 0; - virtual VARP gen_position_ids(int seq_len) = 0; - virtual bool is_stop(int token_id) = 0; +protected: + void response_init(); + std::string response_impl(const std::vector& input_ids, std::ostream* os, const char* end_with); + VARP embedding(const std::vector& input_ids); + VARP txt_embedding(const std::vector& input_ids); + int forward(const std::vector& input_ids); + std::vector tokenizer_encode(const std::string& input_str); + std::string decode(int id); protected: // model configs bool is_single_ = false; + bool is_disk_embedding_ = false; + bool is_visual_ = false; int layer_nums_ = 0; int hidden_size_ = 4096; std::vector key_value_shape_ = {}; std::string model_name_ = ""; + std::string disk_embedding_file_ = ""; // gen info float load_progress_ = 0.f; // tokenizer std::unique_ptr tokenizer_; + std::shared_ptr visual_module_; +private: + virtual VARP visual_embedding(const std::vector& input_ids) { return nullptr; } + virtual std::vector tokenizer(const std::string& query) = 0; + virtual VARP gen_attention_mask(int seq_len) = 0; + virtual VARP gen_position_ids(int seq_len) = 0; + virtual bool is_stop(int token_id) = 0; private: // MNN Modules std::shared_ptr runtime_manager_; std::vector> modules_; + std::vector> decode_modules_; + std::vector> prefill_modules_; std::vector past_key_values_; // model dir std::string model_dir_; + int mForwardType = 0; }; // some llm models @@ -130,6 +151,19 @@ class Chatglm2_6b : public Llm { virtual bool is_stop(int token_id) override; }; +class Phi_2 : public Chatglm2_6b { +public: + Phi_2() { + model_name_ = "Phi_2"; + layer_nums_ = 32; + key_value_shape_ = {1, 0, 2, 32, 80}; + hidden_size_ = 2560; + tokenizer_.reset(new Tiktoken); + } +private: + virtual std::vector tokenizer(const std::string& query) override; + virtual bool is_stop(int token_id) override; +}; class Qwen_7b : public Llm { public: @@ -147,6 +181,29 @@ class Qwen_7b : public Llm { virtual bool is_stop(int token_id) override; }; +class Qwen_vl : public Qwen_7b { +public: + Qwen_vl() { + model_name_ = "Qwen_vl"; + is_visual_ = true; + layer_nums_ = 32; + key_value_shape_ = {2, 1, 0, 32, 128}; + hidden_size_ = 4096; + tokenizer_.reset(new Tiktoken); + } +private: + const int img_size_ = 448; + const int imgpad_len_ = 256; + const int img_start_ = 151857; + const int img_end_ = 151858; + const int img_pad_ = 151859; +private: + std::vector url_encode(const std::string& url); + virtual VARP visual_embedding(const std::vector& input_ids) override; + virtual std::vector tokenizer(const std::string& query) override; + virtual VARP gen_attention_mask(int seq_len) override; +}; + class Qwen_1_8b : public Qwen_7b { public: Qwen_1_8b() { @@ -172,4 +229,135 @@ class Llama2_7b : public Llm { virtual bool is_stop(int token_id) override; }; +class Qwen2 : public Llama2_7b { +public: + Qwen2() { + model_name_ = "Qwen2"; + tokenizer_.reset(new HuggingfaceTokenizer); + } +private: + virtual std::vector tokenizer(const std::string& query) override; + virtual bool is_stop(int token_id) override; +}; + +class Qwen2_0_5b : public Qwen2 { +public: + Qwen2_0_5b() { + model_name_ = "Qwen2_0.5b"; + layer_nums_ = 24; + key_value_shape_ = {2, 1, 16, 0, 64}; + hidden_size_ = 1024; + } +}; + +class Qwen2_1_8b : public Qwen2 { +public: + Qwen2_1_8b() { + model_name_ = "Qwen2_1.8b"; + layer_nums_ = 24; + key_value_shape_ = {2, 1, 16, 0, 128}; + hidden_size_ = 2048; + } +}; + +class Qwen2_4b : public Qwen2 { +public: + Qwen2_4b() { + model_name_ = "Qwen2_4b"; + layer_nums_ = 40; + key_value_shape_ = {2, 1, 20, 0, 128}; + hidden_size_ = 2560; + } +}; + +class Qwen2_7b : public Qwen2 { +public: + Qwen2_7b() { + model_name_ = "Qwen2_7b"; + layer_nums_ = 32; + key_value_shape_ = {2, 1, 32, 0, 128}; + hidden_size_ = 4096; + } +}; + +class TinyLlama : public Llama2_7b { +public: + TinyLlama() { + model_name_ = "TinyLlama"; + layer_nums_ = 22; + key_value_shape_ = {2, 1, 4, 0, 64}; + } +private: + virtual std::vector tokenizer(const std::string& query) override; +}; + +class Yi_6b : public Llama2_7b { +public: + Yi_6b() { + model_name_ = "Yi_6b"; + key_value_shape_ = {2, 1, 4, 0, 128}; + } +private: + virtual std::vector tokenizer(const std::string& query) override; + virtual bool is_stop(int token_id) override; +}; +// Llm end + +// Embedding start +class Embedding { +public: + Embedding() { + // default tokenier is Bert + tokenizer_.reset(new BertTokenizer); + } + virtual ~Embedding() { + module_.reset(); + runtime_manager_.reset(); + } + static Embedding* createEmbedding(const std::string& path, std::string model_type = "auto"); + static float dist(VARP var0, VARP var1); + void load(const std::string& model_dir); + VARP embedding(const std::string& txt); + void print_speed(); + int dim() { return hidden_size_; } +public: + // time + int64_t embedding_us_ = 0; + int prompt_len_ = 0; +protected: + std::vector tokenizer_encode(const std::string& input_str); +protected: + // model configs + int layer_nums_ = 0; + int hidden_size_ = 1024; + std::string model_name_ = ""; + // tokenizer + std::unique_ptr tokenizer_; +private: + virtual std::vector tokenizer(const std::string& query) = 0; + virtual VARP gen_attention_mask(int seq_len) = 0; + virtual VARP gen_position_ids(int seq_len) = 0; +private: + // MNN Modules + std::shared_ptr runtime_manager_; + std::shared_ptr module_; + // model dir + std::string model_dir_; +}; + +// some embedding models +class Bge : public Embedding { +public: + Bge() { + model_name_ = "Bge"; + layer_nums_ = 24; + hidden_size_ = 1024; + } +private: + virtual std::vector tokenizer(const std::string& query) override; + virtual VARP gen_attention_mask(int seq_len) override; + virtual VARP gen_position_ids(int seq_len) override; +}; +// Embedding end + #endif // LLM_hpp diff --git a/llm/include/tokenizer.hpp b/llm/include/tokenizer.hpp index bc3a59915..7711e0eee 100644 --- a/llm/include/tokenizer.hpp +++ b/llm/include/tokenizer.hpp @@ -79,7 +79,39 @@ class Tiktoken : public Tokenizer { virtual bool load(const std::string& filename) override; virtual std::vector encode(const std::string& str) override; virtual std::string decode(int id) override; +protected: + std::unordered_map encoder_; + std::vector decoder_; +}; + +class BertTokenizer : public Tiktoken { +public: + BertTokenizer() = default; + virtual std::vector encode(const std::string& str) override; +private: + std::vector word_piece(const std::string& token); +}; + +class HuggingfaceTokenizer : public Tokenizer { +struct hash_pair_wstring { + size_t operator()(const std::pair& p) const { + auto hash1 = std::hash{}(p.first); + auto hash2 = std::hash{}(p.second); + // If hash1 == hash2, their XOR is zero. + return (hash1 != hash2) ? hash1 ^ hash2 : hash1; + } +}; +using BPERanks = std::unordered_map, int, hash_pair_wstring>; +public: + HuggingfaceTokenizer() = default; + virtual bool load(const std::string& filename) override; + virtual std::vector encode(const std::string& str) override; + virtual std::string decode(int id) override; private: + void bpe(const std::wstring& token, const BPERanks& bpe_ranks, std::vector* result); + BPERanks bpe_ranks_; + std::unordered_map b2u_; + std::unordered_map u2b_; std::unordered_map encoder_; std::vector decoder_; }; diff --git a/llm/llm_demo.cpp b/llm/llm_demo.cpp index 41b96b16c..4a59954ae 100644 --- a/llm/llm_demo.cpp +++ b/llm/llm_demo.cpp @@ -6,10 +6,36 @@ // #include "llm.hpp" +#define MNN_OPEN_TIME_TRACE +#include #include +#include #include -void benchmark(Llm* llm, std::string prompt_file) { +static void trace_prepare(Llm* llm) { + MNN_PRINT("Prepare for resize opt Begin\n"); + std::vector prompts = { + "Hello", + }; + llm->trace(true); + int prompt_len = 0; + int decode_len = 0; + int64_t prefill_time = 0; + int64_t decode_time = 0; + // llm->warmup(); + for (int i = 0; i < prompts.size(); i++) { + std::ostringstream cacheOs; + llm->response(prompts[i], &cacheOs); + prompt_len += llm->prompt_len_; + decode_len += llm->gen_seq_len_; + prefill_time += llm->prefill_us_; + decode_time += llm->decode_us_; + llm->reset(); + } + MNN_PRINT("Prepare for resize opt End\n"); + llm->trace(false); +} +static void benchmark(Llm* llm, std::string prompt_file) { std::cout << "prompt file is " << prompt_file << std::endl; std::ifstream prompt_fs(prompt_file); std::vector prompts; @@ -46,19 +72,32 @@ void benchmark(Llm* llm, std::string prompt_file) { printf("##################################\n"); } + int main(int argc, const char* argv[]) { if (argc < 2) { std::cout << "Usage: " << argv[0] << " model_dir " << std::endl; return 0; } std::string model_dir = argv[1]; + int forwardType = 0; + if (argc >= 3) { + std::istringstream os(argv[2]); + os >> forwardType; + } std::cout << "model path is " << model_dir << std::endl; - std::unique_ptr llm(Llm::createLLM(model_dir)); - llm->load(model_dir); - if (argc < 3) { + std::unique_ptr llm(Llm::createLLM(model_dir, "auto", forwardType)); + { + AUTOTIME; + llm->load(model_dir); + } + { + AUTOTIME; + trace_prepare(llm.get()); + } + if (argc < 4) { llm->chat(); } - std::string prompt_file = argv[2]; + std::string prompt_file = argv[3]; benchmark(llm.get(), prompt_file); return 0; -} \ No newline at end of file +} diff --git a/llm/src/llm.cpp b/llm/src/llm.cpp index ec7d73636..118c2c019 100644 --- a/llm/src/llm.cpp +++ b/llm/src/llm.cpp @@ -7,16 +7,24 @@ // #define MNN_OPEN_TIME_TRACE 1 #include +#include +#include +#include -#include "llm.hpp" -#include "tokenizer.hpp" #include #include +#include "llm.hpp" +#include "tokenizer.hpp" -#include +#ifdef USING_VISUAL_MODEL +#include "httplib.h" +#include +#endif -Llm* Llm::createLLM(const std::string& path, std::string model_type) { +// Llm start +Llm* Llm::createLLM(const std::string& path, std::string model_type, int forwardType) { auto size = path.size(); + // end with '.mnn' is single model file, otherwise split block models bool is_single = (size > 4 && path[size - 4] == '.' && @@ -39,9 +47,22 @@ Llm* Llm::createLLM(const std::string& path, std::string model_type) { } else if (model_type.find("codegeex2") != std::string::npos) { llm = new Chatglm2_6b; llm->model_name_ = "Codegeex2_6b"; + } else if (model_type.find("qwen1.5") != std::string::npos || + model_type.find("qwen2") != std::string::npos) { + if (model_type.find("0.5b") != std::string::npos) { + llm = new Qwen2_0_5b; + } else if (model_type.find("1.8b") != std::string::npos) { + llm = new Qwen2_1_8b; + } else if (model_type.find("4b") != std::string::npos) { + llm = new Qwen2_4b; + } else if (model_type.find("7b") != std::string::npos) { + llm = new Qwen2_7b; + } } else if (model_type.find("qwen") != std::string::npos) { if (model_type.find("1.8") != std::string::npos) { llm = new Qwen_1_8b; + } else if (model_type.find("vl") != std::string::npos) { + llm = new Qwen_vl; } else { llm = new Qwen_7b; } @@ -50,11 +71,27 @@ Llm* Llm::createLLM(const std::string& path, std::string model_type) { } else if (model_type.find("baichuan") != std::string::npos) { llm = new Llama2_7b; llm->model_name_ = "Baichuan2_7b"; + } else if (model_type.find("phi2") != std::string::npos) { + llm = new Phi_2; + } else if (model_type.find("internlm") != std::string::npos) { + llm = new Llama2_7b; + llm->model_name_ = "Internlm_7b"; + } else if (model_type.find("deepseek") != std::string::npos) { + llm = new Llama2_7b; + llm->model_name_ = "deepseek_7b"; + llm->layer_nums_ = 30; + } else if (model_type.find("tinyllama") != std::string::npos) { + llm = new TinyLlama; + llm->model_name_ = "TinyLlama"; + } else if (model_type.find("yi") != std::string::npos) { + llm = new Yi_6b; + llm->model_name_ = "Yi_6b"; } if (!llm) { std::cerr << "model type can't judge!" << std::endl; return llm; } + llm->mForwardType = forwardType; llm->is_single_ = is_single; std::cout << "### model name : "<< llm->model_name_ << std::endl; return llm; @@ -80,10 +117,7 @@ void Llm::chat() { reset(); } -std::string Llm::response(const std::string& query, std::ostream* os, const char* end_with) { - if (!end_with) { - end_with = "\n"; - } +void Llm::response_init() { // init status gen_seq_len_ = 0; all_seq_len_ = 0; @@ -97,23 +131,20 @@ std::string Llm::response(const std::string& query, std::ostream* os, const char past_key_values_.push_back(_Input(key_value_shape_, NCHW)); } } - // response - auto input_ids = tokenizer(query); - if (!history_.empty()) { - std::copy(input_ids.begin(), input_ids.end(), std::back_inserter(history_)); - input_ids = history_; - } else { - history_ = input_ids; - } +} +std::string Llm::response_impl(const std::vector& input_ids, std::ostream* os, const char* end_with) { prompt_len_ = static_cast(input_ids.size()); auto st = std::chrono::system_clock::now(); + modules_ = prefill_modules_; int token = forward(input_ids); auto et = std::chrono::system_clock::now(); history_.push_back(token); std::string output_str = decode(token); prefill_us_ = std::chrono::duration_cast(et - st).count(); *os << output_str << std::flush; + modules_ = decode_modules_; + while (gen_seq_len_ < max_seq_len_) { st = std::chrono::system_clock::now(); token = forward({token}); @@ -131,12 +162,35 @@ std::string Llm::response(const std::string& query, std::ostream* os, const char #ifdef DUMP_PROFILE_INFO print_speed(); #endif - // update Cache - // runtime_manager_->updateCache(); - // reset forward info return output_str; } +std::string Llm::response(const std::string& query, std::ostream* os, const char* end_with) { + response_init(); + if (!end_with) { + end_with = "\n"; + } + // response + auto input_ids = tokenizer(query); + if (!history_.empty()) { + std::copy(input_ids.begin(), input_ids.end(), std::back_inserter(history_)); + input_ids = history_; + } else { + history_ = input_ids; + } + return response_impl(input_ids, os, end_with); +} + +std::string Llm::response_nohistory(const std::string& query, std::ostream* os, const char* end_with) { + response_init(); + if (!end_with) { + end_with = "\n"; + } + // response + auto input_ids = tokenizer(query); + return response_impl(input_ids, os, end_with); +} + void Llm::print_speed() { auto prefill_s = prefill_us_ * 1e-6; auto decode_s = decode_us_ * 1e-6; @@ -164,25 +218,41 @@ void Llm::load(const std::string& model_dir) { // init ScheduleConfig config; BackendConfig cpuBackendConfig; - config.type = MNN_FORWARD_CPU; - // config.type = MNN_FORWARD_OPENCL; - config.numThread = 4; + config.type = (MNNForwardType)mForwardType; + if (config.type == MNN_FORWARD_OPENCL) { + config.numThread = MNN_GPU_MEMORY_BUFFER | MNN_GPU_TUNING_NORMAL; + } + ExecutorScope::Current()->setGlobalExecutorConfig(MNN_FORWARD_CPU, cpuBackendConfig, config.numThread); + cpuBackendConfig.precision = BackendConfig::Precision_Low; cpuBackendConfig.memory = BackendConfig::Memory_Low; config.backendConfig = &cpuBackendConfig; runtime_manager_.reset(Executor::RuntimeManager::createRuntimeManager(config)); - if (config.type == MNN_FORWARD_OPENCL) { - const char* cacheFileName = ".tempcache"; - // runtime_manager_->setCache(cacheFileName); + runtime_manager_->setHint(MNN::Interpreter::MEM_ALLOCATOR_TYPE, 0); + { + runtime_manager_->setCache(".tempcache"); } load_progress_ = 0.f; printf("load tokenizer\n"); // 1. load vocab std::string tokenizer_path = model_dir + "/tokenizer.txt"; + if (is_single_) { + size_t pos = model_dir.find_last_of("/\\"); + std::string dir_path = (pos != std::string::npos) ? model_dir.substr(0, pos + 1) : ""; + model_dir_ = dir_path; + tokenizer_path = dir_path + "/tokenizer.txt"; + } load_progress_ += 5.f; tokenizer_->load(tokenizer_path); load_progress_ += 5.f; printf("load tokenizer Done\n"); + { + disk_embedding_file_ = model_dir_ + "/embeddings_bf16.bin"; + std::ifstream embedding_bin(disk_embedding_file_); + is_disk_embedding_ = embedding_bin.good(); + MNN_PRINT("### disk embedding is %d\n", is_disk_embedding_); + embedding_bin.close(); + } // 2. load model Module::Config module_config; module_config.shapeMutable = true; @@ -206,17 +276,25 @@ void Llm::load(const std::string& model_dir) { char buffer[50]; // load lm model std::string lm_model_path = model_dir + "/lm.mnn"; - std::string embedding_model_path = model_dir + "/embedding.mnn"; MNN_PRINT("[%3.0f%% ] load %s model ... ", load_progress_, lm_model_path.c_str()); modules_[layer_nums_].reset(Module::load({}, {}, lm_model_path.c_str(), runtime_manager_, &module_config)); MNN_PRINT("Done!\n"); load_progress_ += step; -#ifndef USING_DISK_EMBED - MNN_PRINT("[%3.0f%% ] load %s model ... ", load_progress_, embedding_model_path.c_str());fflush(stdout); - modules_[layer_nums_ + 1].reset(Module::load({}, {}, embedding_model_path.c_str(), runtime_manager_, &module_config)); - MNN_PRINT("Done!\n"); - load_progress_ += step; -#endif + if (!is_disk_embedding_) { + std::string embedding_model_path = model_dir + "/embedding.mnn"; + MNN_PRINT("[%3.0f%% ] load %s model ... ", load_progress_, embedding_model_path.c_str());fflush(stdout); + modules_[layer_nums_ + 1].reset(Module::load({}, {}, embedding_model_path.c_str(), runtime_manager_, &module_config)); + MNN_PRINT("Done!\n"); + load_progress_ += step; + } + if (is_visual_) { + std::string visual_model_path = model_dir + "/visual.mnn"; + MNN_PRINT("[%3.0f%% ] load %s model ... ", load_progress_, visual_model_path.c_str());fflush(stdout); + module_config.rearrange = false; + visual_module_.reset(Module::load({}, {}, visual_model_path.c_str(), runtime_manager_, &module_config)); + MNN_PRINT("Done!\n"); + module_config.rearrange = true; + } // load glm_block models for (int i = 0; i < layer_nums_; i++) { load_progress_ += step; @@ -231,6 +309,11 @@ void Llm::load(const std::string& model_dir) { if (config.type == MNN_FORWARD_OPENCL) { // warmup(); } + decode_modules_.resize(modules_.size()); + for (int v=0; v& input_ids) { int seq_len = input_ids.size(); - auto inputs_ids_ = _Const(input_ids.data(), {seq_len}, NCHW, halide_type_of()); auto attention_mask = gen_attention_mask(seq_len); auto position_ids = gen_position_ids(seq_len); int id = -1; if (is_single_) { // single model - auto outputs = modules_.back()->onForward({inputs_ids_, attention_mask, position_ids, past_key_values_[0]}); + auto hidden_states = _Const(input_ids.data(), {seq_len}, NCHW, halide_type_of()); + if (is_disk_embedding_) { + hidden_states = embedding(input_ids); + } + auto outputs = modules_.back()->onForward({hidden_states, attention_mask, position_ids, past_key_values_[0]}); + ExecutorScope::Current()->gc(Executor::FULL); id = outputs[0]->readMap()[0]; past_key_values_[0] = outputs[1]; } else { // split block models -#ifdef USING_DISK_EMBED - auto hidden_states = disk_embedding(input_ids); -#else - auto hidden_states = modules_[layer_nums_ + 1]->onForward({inputs_ids_})[0]; -#endif + auto hidden_states = embedding(input_ids); + ExecutorScope::Current()->gc(Executor::FULL); for (int i = 0; i < layer_nums_; i++) { AUTOTIME; auto outputs = modules_[i]->onForward({hidden_states, attention_mask, position_ids, past_key_values_[i]}); hidden_states = outputs[0]; past_key_values_[i] = outputs[1]; } + ExecutorScope::Current()->gc(Executor::FULL); { AUTOTIME; auto outputs = modules_[layer_nums_]->onForward({hidden_states}); id = outputs[0]->readMap()[0]; } - } all_seq_len_ += seq_len; gen_seq_len_++; return id; } -VARP Llm::disk_embedding(const std::vector& input_ids) { +VARP Llm::txt_embedding(const std::vector& input_ids) { + if (!is_disk_embedding_) { + // using model forward + auto inputs_ids_ = _Const(input_ids.data(), {static_cast(input_ids.size())}, NCHW, halide_type_of()); + auto hidden_states = modules_[layer_nums_ + 1]->onForward({inputs_ids_})[0]; + return hidden_states; + } AUTOTIME; - // disk embedding save memory + // disk embedding to save memory size_t seq_len = input_ids.size(); auto embedding = _Input({static_cast(seq_len), 1, hidden_size_}, NCHW); size_t size = hidden_size_ * sizeof(int16_t); - std::string file_path = model_dir_ + "/embeddings_bf16.bin"; - FILE* file = fopen(file_path.c_str(), "rb"); + FILE* file = fopen(disk_embedding_file_.c_str(), "rb"); std::unique_ptr buffer(new int16_t[hidden_size_]); for (size_t i = 0; i < seq_len; i++) { fseek(file, input_ids[i] * size, SEEK_SET); @@ -307,6 +396,25 @@ VARP Llm::disk_embedding(const std::vector& input_ids) { fclose(file); return embedding; } +void Llm::trace(bool start) { + auto status = MNN::Interpreter::Session_Resize_Check; + if (start) { + status = MNN::Interpreter::Session_Resize_Check; + } else { + status = MNN::Interpreter::Session_Resize_Fix; + } + for (auto& m : decode_modules_) { + m->traceOrOptimize(status); + } + runtime_manager_->updateCache(); +} + +VARP Llm::embedding(const std::vector& input_ids) { + if (is_visual_ && !gen_seq_len_) { + return visual_embedding(input_ids); + } + return txt_embedding(input_ids); +} std::vector Llm::tokenizer_encode(const std::string& input_str) { auto ids = tokenizer_->encode(input_str); @@ -409,6 +517,17 @@ bool Chatglm2_6b::is_stop(int token_id) { return token_id <= 2; } +// Phi_2 +std::vector Phi_2::tokenizer(const std::string& query) { + auto prompt = query; + auto ids = tokenizer_encode(prompt); + return ids; +} + +bool Phi_2::is_stop(int token_id) { + return token_id == 50256; +} + // Qwen_7b std::vector Qwen_7b::tokenizer(const std::string& query) { auto ids = tokenizer_encode(query); @@ -443,7 +562,134 @@ VARP Qwen_7b::gen_position_ids(int seq_len) { } bool Qwen_7b::is_stop(int token_id) { - return token_id >= 151645; + // <|endoftext|> <|im_end|> + return token_id == 151643 || token_id == 151645; +} + +// Qwen_vl +std::vector Qwen_vl::url_encode(const std::string& url) { + std::vector ascii_values(imgpad_len_, img_pad_); + ascii_values[0] = img_start_; + ascii_values[imgpad_len_ - 1] = img_end_; + for (int i = 0; i < url.size(); i++) { + ascii_values[i + 1] = static_cast(url[i]); + } + return ascii_values; +} + +VARP Qwen_vl::visual_embedding(const std::vector& input_ids) { +#ifdef USING_VISUAL_MODEL + int start_pos = 0, pad_pos = 0, end_pos = 0; + for (int i = 0; i < input_ids.size(); i++) { + int id = input_ids[i]; + if (id == img_start_ && !start_pos) { + start_pos = i; + } + if (id == img_pad_ && !pad_pos) { + pad_pos = i; + } + if (id == img_end_ && !end_pos) { + end_pos = i; + } + } + if (!start_pos) { + return txt_embedding(input_ids); + } + std::vector prefix(input_ids.begin(), input_ids.begin() + start_pos); + std::vector img_ascii(input_ids.begin() + start_pos + 1, input_ids.begin() + pad_pos); + std::vector suffix(input_ids.begin() + end_pos + 1, input_ids.end()); + std::string img_path; + for (auto ascii_val : img_ascii) { + img_path += static_cast(ascii_val); + } + VARP image = nullptr; + if (img_path.substr(0, 4) == "http") { + std::regex url_regex(R"(^https?://([^/]+)(/.*))"); + std::smatch url_match_result; + std::string host, path; + if (std::regex_search(img_path, url_match_result, url_regex) && url_match_result.size() == 3) { + host = url_match_result[1].str(); + path = url_match_result[2].str(); + } + std::cout << host << "#" << path << std::endl; + httplib::Client cli(host); + auto res = cli.Get(path); + std::string img_file = "downloaded_image.jpg"; + if (res && res->status == 200) { + std::ofstream file(img_file, std::ios::binary); + if (file.is_open()) { + file.write(res->body.c_str(), res->body.size()); + std::cout << "Image has been downloaded successfully." << std::endl; + file.close(); + } else { + std::cerr << "Unable to open file to write image." << std::endl; + exit(0); + } + } else { + std::cerr << "Failed to download image. Status code: " << (res ? res->status : 0) << std::endl; + exit(0); + } + image = MNN::CV::imread(img_file); + } else { + image = MNN::CV::imread(img_path); + } + image = MNN::CV::resize(image, {img_size_, img_size_}, 0, 0, MNN::CV::INTER_LINEAR, MNN::CV::COLOR_BGR2RGB, + {123.25239296, 117.20384, 104.50194688}, {0.0145414 , 0.01494914, 0.01416452}); + image = MNN::Express::_Unsqueeze(image, {0}); + image = MNN::Express::_Convert(image, NC4HW4); + auto image_embedding = visual_module_->forward(image); + image_embedding = MNN::Express::_Permute(image_embedding, {1, 0, 2}); + auto prefix_embedding = txt_embedding(prefix); + auto suffix_embedding = txt_embedding(suffix); + auto embeddings = MNN::Express::_Concat({prefix_embedding, image_embedding, suffix_embedding}, 0); +#else + auto embeddings = txt_embedding(input_ids); +#endif + return embeddings; +} + +std::vector Qwen_vl::tokenizer(const std::string& query) { + // split query + std::regex img_regex("(.*?)"); + std::string::const_iterator searchStart(query.cbegin()); + std::smatch match; + std::vector img_info, txt_info; + std::vector ids {}; + while (std::regex_search(searchStart, query.cend(), match, img_regex)) { + auto txt_ids = tokenizer_encode(match.prefix().str()); + ids.insert(ids.end(), txt_ids.begin(), txt_ids.end()); + auto img_ids = url_encode(match[1].str()); + ids.insert(ids.end(), img_ids.begin(), img_ids.end()); + searchStart = match.suffix().first; + } + if (searchStart != query.cend()) { + auto txt_ids = tokenizer_encode(std::string(searchStart, query.cend())); + ids.insert(ids.end(), txt_ids.begin(), txt_ids.end()); + } + // auto prompt = "\n<|im_start|>user\n" + query + "<|im_end|>\n<|im_start|>assistant\n"; + ids.insert(ids.begin(), {198, 151644, 872, 198}); + ids.insert(ids.end(), {151645, 198, 151644, 77091, 198}); + return ids; +} + +VARP Qwen_vl::gen_attention_mask(int seq_len) { + if (seq_len == 1) { + auto attention_mask = _Input({1, 1, 1, all_seq_len_ + 1}, NCHW, halide_type_of()); + auto ptr = attention_mask->writeMap(); + for (int i = 0; i < all_seq_len_ + 1; i++) { + ptr[i] = 0; + } + return attention_mask; + } else { + auto attention_mask = _Input({1, 1, seq_len, seq_len}, NCHW, halide_type_of()); + auto ptr = attention_mask->writeMap(); + for (int i = 0; i < seq_len; i++) { + for (int j = 0; j < seq_len; j++) { + ptr[seq_len * i + j] = (j > i) * std::numeric_limits::lowest(); + } + } + return attention_mask; + } } // Llama2_7b @@ -455,6 +701,19 @@ std::vector Llama2_7b::tokenizer(const std::string& query) { ids.push_back(196); return ids; } + if (model_name_ == "Internlm_7b") { + // internlm: "<|User|>:" + query + "\n<|Bot|>:"; + // 1, 333, 352, 1621, 352, 27232, query, 103027, 364, 333, 352, 23845, 352, 27232 + ids.insert(ids.begin(), {1, 333, 352, 1621, 352, 27232}); + ids.insert(ids.end(), {103027, 364, 333, 352, 23845, 352, 27232}); + return ids; + } + if (model_name_ == "deepseek_7b") { + // "<|begin▁of▁sentence|>User:" + query + "\n\nAssistant:" + ids.insert(ids.begin(), {100000, 5726, 25, 207}); + ids.insert(ids.end(), {185, 185, 77398, 25}); + return ids; + } // llama2: [INST]{query}[/INST]: 1, 5539, 25580, 29962, query, 12452, 25580, 29962 ids.insert(ids.begin(), {1, 5539, 25580, 29962}); ids.insert(ids.end(), {12452, 25580, 29962}); @@ -495,5 +754,170 @@ VARP Llama2_7b::gen_position_ids(int seq_len) { } bool Llama2_7b::is_stop(int token_id) { + if (model_name_ == "Internlm_7b") { + // 103028: + return token_id == 2 || token_id == 103028; + } + if (model_name_ == "deepseek_7b") { + return token_id == 100001; + } return token_id == 2; } + +std::vector Qwen2::tokenizer(const std::string& query) { + auto ids = tokenizer_encode(query); + // auto prompt = "<|im_start|>user\n" + query + "<|im_end|>\n<|im_start|>assistant\n"; + ids.insert(ids.begin(), {151644, 872, 198}); + ids.insert(ids.end(), {151645, 198, 151644, 77091, 198}); + return ids; +} + +bool Qwen2::is_stop(int token_id) { + return token_id == 151645 || token_id == 151643; +} + +std::vector TinyLlama::tokenizer(const std::string& query) { + auto ids = tokenizer_encode(query); + /* + <|system|> + You are a friendly chatbot who always responds in the style of a pirate + <|user|> + {query} + <|assistant|> + */ + ids.insert(ids.begin(), {1, 529, 29989, 5205, 29989, 29958, 13, 3492, 526, 263, 19780, 13563, + 7451, 1058, 2337, 10049, 29879, 297, 278, 3114, 310, 263, 21625, + 403, 2, 29871, 13, 29966, 29989, 1792, 29989, 29958, 13}); + ids.insert(ids.end(), {2, 29871, 13, 29966, 29989, 465, 22137, 29989, 29958, 13}); + return ids; +} + +std::vector Yi_6b::tokenizer(const std::string& query) { + auto prompt = "<|im_start|> user\n" + query + "<|im_end|>\n<|im_start|> assistant\n"; + auto ids = tokenizer_encode(prompt); + return ids; +} + +bool Yi_6b::is_stop(int token_id) { + return token_id == 7 || token_id == 64001; +} +// Llm end + +// Embedding start +float Embedding::dist(VARP var0, VARP var1) { + auto distVar = _Sqrt(_ReduceSum(_Square(var0 - var1))); + auto dist = distVar->readMap()[0]; + return dist; +} + +Embedding* Embedding::createEmbedding(const std::string& path, std::string model_type) { + auto size = path.size(); + + Embedding* embedding = nullptr; + if (model_type == "auto") { + model_type = path; + } + if (model_type.find("bge") != std::string::npos) { + embedding = new Bge; + } + if (!embedding) { + std::cerr << "model type can't judge!" << std::endl; + return embedding; + } + std::cout << "### model name : "<< embedding->model_name_ << std::endl; + embedding->load(path); + return embedding; +} + +void Embedding::load(const std::string& model_dir) { + if (model_dir_ == model_dir) { + return; + } + model_dir_ = model_dir; + // init + ScheduleConfig config; + BackendConfig cpuBackendConfig; + config.type = MNN_FORWARD_CPU; + // config.type = MNN_FORWARD_OPENCL; + config.numThread = 4; + cpuBackendConfig.precision = BackendConfig::Precision_Low; + cpuBackendConfig.memory = BackendConfig::Memory_Low; + config.backendConfig = &cpuBackendConfig; + runtime_manager_.reset(Executor::RuntimeManager::createRuntimeManager(config)); + printf("load tokenizer\n"); + // 1. load vocab + size_t pos = model_dir.find_last_of("/\\"); + std::string dir_path = (pos != std::string::npos) ? model_dir.substr(0, pos + 1) : ""; + std::string tokenizer_path = dir_path + "/tokenizer.txt"; + tokenizer_->load(tokenizer_path); + printf("load tokenizer Done\n"); + // 2. load model + Module::Config module_config; + module_config.shapeMutable = true; + module_config.rearrange = true; + std::string model_path = model_dir; + MNN_PRINT("load %s ... ", model_path.c_str()); + module_.reset(Module::load( + {"input_ids", "attention_mask", "position_ids"}, + {"sentence_embeddings"}, model_path.c_str(), runtime_manager_, &module_config)); + MNN_PRINT("Done!\n"); +} + +VARP Embedding::embedding(const std::string& txt) { + auto ids = tokenizer(txt); + prompt_len_ = ids.size(); + auto inputs_ids = _Const(ids.data(), {prompt_len_}, NCHW, halide_type_of()); + auto attention_mask = gen_attention_mask(prompt_len_); + auto position_ids = gen_position_ids(prompt_len_); + auto st = std::chrono::system_clock::now(); + auto outputs = module_->onForward({inputs_ids, attention_mask, position_ids}); + auto et = std::chrono::system_clock::now(); + embedding_us_ = std::chrono::duration_cast(et - st).count(); + auto sentence_embeddings = outputs[0]; + // print_speed(); + return sentence_embeddings; +} + +void Embedding::print_speed() { + auto total_s = embedding_us_ * 1e-6; + printf("\n#################################\n"); + printf(" total token = %d\n", prompt_len_); + printf(" total time = %.2f s\n", total_s); + printf(" total speed = %.2f tok/s\n", prompt_len_ / total_s); + printf("##################################\n"); +} + +std::vector Embedding::tokenizer_encode(const std::string& input_str) { + auto ids = tokenizer_->encode(input_str); + return ids; +} + +std::vector Bge::tokenizer(const std::string& query) { + auto prompt = query; + if (query.size() <= 256) { + prompt = "为这个句子生成表示以用于检索相关文章:" + query; + } + auto ids = tokenizer_encode(prompt); + ids.insert(ids.begin(), 101); + ids.push_back(102); + return ids; +} + +VARP Bge::gen_attention_mask(int seq_len) { + auto attention_mask = _Input({1, 1, 1, seq_len}, NCHW, halide_type_of()); + auto ptr = attention_mask->writeMap(); + for (int i = 0; i < seq_len; i++) { + ptr[i] = 1; + } + return attention_mask; +} + +VARP Bge::gen_position_ids(int seq_len) { + auto position_ids = _Input({1, seq_len}, NCHW, halide_type_of()); + auto ptr = position_ids->writeMap(); + for (int i = 0; i < seq_len; i++) { + ptr[i] = i; + } + return position_ids; +} +// Embedding end diff --git a/llm/src/tokenizer.cpp b/llm/src/tokenizer.cpp index 9534899ab..63be777ba 100644 --- a/llm/src/tokenizer.cpp +++ b/llm/src/tokenizer.cpp @@ -11,6 +11,10 @@ #include #include #include +#include +#include +#include +#include // base64 static const std::string base64_chars = @@ -66,6 +70,14 @@ static std::string base64_decode(const std::string& str) { return ret; } +static inline void to_lower_case(std::string& str) { + for (auto &c : str) { + if (c >= 'A' && c <= 'Z') { + c = std::tolower(static_cast(c)); + } + } +} + bool Sentencepiece::load(const std::string& filename) { std::ifstream tok_file(filename); std::string line, token; @@ -303,10 +315,12 @@ bool Sentencepiece::is_control(int id) const { return sentence_pieces_[id].type == PieceType::CONTROL; } -const int CHARACTER_VOCABULARY_SIZE = 256; - bool Tiktoken::load(const std::string& filename) { std::ifstream tok_file(filename); + if (!tok_file.good()) { + printf("Failed: can't load tokenzier from: %s.\n", filename.c_str()); + return false; + } std::string token; while (tok_file >> token) { token = base64_decode(token); @@ -360,3 +374,269 @@ std::string Tiktoken::decode(int id) { } return decoder_[id]; } + +std::vector BertTokenizer::word_piece(const std::string& token) { + auto it = encoder_.find(token); + if (it != encoder_.end()) { + return {it->second}; + } + std::vector ids; + std::string current = token; + while (!current.empty()) { + int match_id = -1; + size_t match_pos = 0; + for (int len = current.size(); len > 0; --len) { + std::string candidate = current.substr(0, len); + if (!ids.empty()) { + candidate = "##" + candidate; + } + auto it = encoder_.find(candidate); + if (it != encoder_.end()) { + match_id = it->second; + match_pos = len; + break; + } + } + // [UNK] + if (match_id == -1) { + ids.push_back(100); + break; + } + ids.push_back(match_id); + // not first word, adding ## prefix + current = current.substr(match_pos); + } + return ids; +} + +std::vector BertTokenizer::encode(const std::string& str) { + std::vector ids; + std::vector tokens; + std::string current_token; + size_t i = 0; + while (i < str.size()) { + current_token.clear(); + unsigned char c = static_cast(str[i]); + // handle multi-byte UTF-8 characters + if ((c & 0x80) != 0) { + unsigned char mask = 0xE0; // 1110 0000 for 3-byte char + if ((c & mask) == mask) { + current_token = str.substr(i, 3); + i += 3; + } else { + ++i; + continue; + } + } + // handle continuous sequence of letters and digits + else if (std::isalnum(c)) { + while (i < str.size() && std::isalnum(static_cast(str[i]))) { + current_token += std::tolower(str[i]); + ++i; + } + } + // handle punctuation and symbols + else if (std::ispunct(c)) { + current_token = str[i]; + ++i; + } + // handle space, tab, enter + else if (std::isspace(c)) { + ++i; + continue; + } + // handle any other single-byte characters + else { + current_token = str[i]; + ++i; + } + if (!current_token.empty()) { + tokens.push_back(current_token); + } + } + + for (auto token : tokens) { + for (auto id : word_piece(token)) { + ids.push_back(id); + } + } + return ids; +} + +std::wstring utf8_to_wstring(const std::string& str) { + std::wstring_convert> myconv; + return myconv.from_bytes(str); +} + +std::string wstring_to_utf8(const std::wstring& str) { + std::wstring_convert> myconv; + return myconv.to_bytes(str); +} + +// Given a token as a UTF8 string, encode each byte into an wchar_t +void byte_encode_token(const std::string& token, + const std::unordered_map& b2u, + std::wstring* result) { + result->resize(0); + for (char c : token) { + wchar_t wc = b2u.at(uint8_t(c)); + result->push_back(wc); + } +} + +bool HuggingfaceTokenizer::load(const std::string& filename) { + std::ifstream tok_file(filename); + std::string line, token; + // get nums + int vocab_len, merge_len; + std::getline(tok_file, line); + std::istringstream line_str(line); + line_str >> vocab_len >> merge_len; + // load vocab + decoder_.resize(vocab_len); + for (int i = 0; i < vocab_len; i++) { + std::getline(tok_file, line); + encoder_.insert({line, i}); + decoder_[i] = line; + } + // load merge_rule + for (int i = 0; i < merge_len; i++) { + std::getline(tok_file, line); + int d = line.find(" "); + bpe_ranks_.insert({{utf8_to_wstring(line.substr(0, d)), + utf8_to_wstring(line.substr(d + 1))}, i}); + } + tok_file.close(); + // bytes_to_unicode + auto _insert_range = [=](int start, int end) { + for (int c = start; c <= end; c++) { + b2u_.insert({uint8_t(c), wchar_t(c)}); + } + }; + + b2u_.clear(); + _insert_range(L'!', L'~'); + _insert_range(L'¡', L'¬'); + _insert_range(L'®', L'ÿ'); + + int n = 0; + for (int b = 0; b < 256; b++) { + if (b2u_.find(uint8_t(b)) == b2u_.end()) { + b2u_.insert({uint8_t(b), wchar_t(256 + n)}); + n++; + } + } + for (auto e : b2u_) { + u2b_.insert({e.second, e.first}); + } + return true; +} + +void get_pairs(const std::wstring& word, std::vector>* pairs) { + pairs->clear(); + + if (word.size() < 2) return; + + wchar_t previous = word[0]; + for (int i = 1; i < word.size(); i++) { + pairs->push_back({std::wstring(1, previous), std::wstring(1, word[i])}); + previous = word[i]; + } +} + +void HuggingfaceTokenizer::bpe(const std::wstring& token, const BPERanks& bpe_ranks, std::vector* result) { + std::set merged; // records indices in pairs that were merged. + auto _left = [](int i, std::set& merged) { + for (int j = i - 1; j >= -1; j--) { + if (merged.find(j) == merged.end()) return j; + } + return -1; + }; + auto _right = [](int i, int cap, std::set& merged) { + for (int j = i + 1; j < cap; j++) { + if (merged.find(j) == merged.end()) return j; + } + return cap; + }; + + std::vector> pairs; + get_pairs(token, &pairs); + + while (true) { + int min_score = INT_MAX; + int to_merge = -1; // indices into pairs. + + for (int i = 0; i < pairs.size(); ++i) { + if (merged.find(i) == merged.end()) { // pair i is not merged. + auto iter = bpe_ranks.find(pairs[i]); + int score = iter != bpe_ranks.end() ? iter->second : INT_MAX; + if (score < min_score) { + min_score = score; + to_merge = i; + } + } + } + + if (to_merge == -1) break; + + merged.insert(to_merge); + std::wstring merge_into = pairs[to_merge].first + pairs[to_merge].second; + + int l = _left(to_merge, merged); + if (l >= 0) pairs[l].second = merge_into; + int r = _right(to_merge, pairs.size(), merged); + if (r < pairs.size()) pairs[r].first = merge_into; + } // end while (true) + + if (merged.size() == pairs.size()) { + result->push_back(token); + + } else { + for (int i = 0; i < pairs.size(); ++i) { + if (merged.find(i) == merged.end()) { + if (_left(i, merged) < 0) result->push_back(pairs[i].first); + result->push_back(pairs[i].second); + } + } + } +} + +std::vector HuggingfaceTokenizer::encode(const std::string& str) { + std::regex re("('s|'t|'re|'ve|'m|'ll|'d| ?[[:alpha:]]+| ?[[:digit:]]+| ?[^\\s\\w]+|\\s+)"); + std::string input = str; + std::vector result; + std::string token; + std::smatch match; + while (std::regex_search(input, match, re)) { + token = match.str(0); + input = match.suffix().str(); + std::wstring wtoken; + for (char c : token) { + wtoken.push_back(b2u_.at(uint8_t(c))); + } + + std::vector bpe_tokens; + bpe(wtoken, bpe_ranks_, &bpe_tokens); + + for (auto ws : bpe_tokens) { + result.push_back(wstring_to_utf8(ws)); + } + } + std::vector ids; + for (auto s : result) { + ids.push_back(encoder_.at(s)); + } + return ids; +} + +std::string HuggingfaceTokenizer::decode(int id) { + if (id >= decoder_.size()) { + return ""; + } + std::wstring w = utf8_to_wstring(decoder_.at(id)); + std::string r; + for (wchar_t c : w) { + r.push_back(char(u2b_.at(c))); + } + return r; +} diff --git a/project/android/build_32.sh b/project/android/build_32.sh index 981a0811e..e83655009 100755 --- a/project/android/build_32.sh +++ b/project/android/build_32.sh @@ -11,6 +11,6 @@ cmake ../../../ \ -DMNN_USE_SSE=OFF \ -DMNN_BUILD_TEST=ON \ -DMNN_BUILD_FOR_ANDROID_COMMAND=true \ --DNATIVE_LIBRARY_OUTPUT=. -DNATIVE_INCLUDE_OUTPUT=. $1 $2 $3 +-DNATIVE_LIBRARY_OUTPUT=. -DNATIVE_INCLUDE_OUTPUT=. $1 $2 $3 $4 $5 $6 $7 make -j4 diff --git a/project/android/build_64.sh b/project/android/build_64.sh index e717ee68f..8e2039c73 100755 --- a/project/android/build_64.sh +++ b/project/android/build_64.sh @@ -11,6 +11,6 @@ cmake ../../../ \ -DMNN_BUILD_TEST=ON \ -DANDROID_NATIVE_API_LEVEL=android-21 \ -DMNN_BUILD_FOR_ANDROID_COMMAND=true \ --DNATIVE_LIBRARY_OUTPUT=. -DNATIVE_INCLUDE_OUTPUT=. $1 $2 $3 +-DNATIVE_LIBRARY_OUTPUT=. -DNATIVE_INCLUDE_OUTPUT=. $1 $2 $3 $4 $5 $6 $7 make -j4 diff --git a/project/android/updateTest.sh b/project/android/updateTest.sh index 664d062b3..7d682bd5a 100755 --- a/project/android/updateTest.sh +++ b/project/android/updateTest.sh @@ -2,6 +2,8 @@ DIR=MNN make -j16 +adb push ./libllm.so /data/local/tmp/MNN/libllm.so +adb push ./llm_demo /data/local/tmp/MNN/llm_demo adb push ./libMNN.so /data/local/tmp/$DIR/libMNN.so adb push ./libMNN_CL.so /data/local/tmp/$DIR/libMNN_CL.so adb push ./libMNN_Vulkan.so /data/local/tmp/$DIR/libMNN_Vulkan.so diff --git a/project/ios/MNN.xcodeproj/project.pbxproj b/project/ios/MNN.xcodeproj/project.pbxproj index 007bffc90..21fc774f7 100644 --- a/project/ios/MNN.xcodeproj/project.pbxproj +++ b/project/ios/MNN.xcodeproj/project.pbxproj @@ -740,6 +740,9 @@ 952298B42B4D39260043978B /* MetalArgMax.mm in Sources */ = {isa = PBXBuildFile; fileRef = 952298B32B4D39250043978B /* MetalArgMax.mm */; }; 952298B72B4D4CC80043978B /* CoreMLLayerNorm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 952298B52B4D4CC80043978B /* CoreMLLayerNorm.cpp */; }; 952298B82B4D4CC80043978B /* coreMLLayerNorm.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 952298B62B4D4CC80043978B /* coreMLLayerNorm.hpp */; }; + 95278CE72B9F0999009E9B29 /* CPUDynamicQuant.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 95278CE52B9F0999009E9B29 /* CPUDynamicQuant.hpp */; }; + 95278CE82B9F0999009E9B29 /* CPUDynamicQuant.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 95278CE62B9F0999009E9B29 /* CPUDynamicQuant.cpp */; }; + 95278CEA2B9F09C0009E9B29 /* ShapeDynamicQuant.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 95278CE92B9F09C0009E9B29 /* ShapeDynamicQuant.cpp */; }; 9558333D29B0947300488807 /* MNNGelu.S in Sources */ = {isa = PBXBuildFile; fileRef = 9558333C29B0947300488807 /* MNNGelu.S */; }; 9558334729B09A2300488807 /* MNNGelu.S in Sources */ = {isa = PBXBuildFile; fileRef = 9558334629B09A2300488807 /* MNNGelu.S */; }; 9558334B29B09A7B00488807 /* MNNGeluFP16.S in Sources */ = {isa = PBXBuildFile; fileRef = 9558334A29B09A7B00488807 /* MNNGeluFP16.S */; settings = {COMPILER_FLAGS = "-march=armv8.2-a+fp16"; }; }; @@ -798,6 +801,7 @@ CEDB211C2846D59C00AE9DC4 /* mobilenet_v2.caffe.mnn in Resources */ = {isa = PBXBuildFile; fileRef = CEDB211B2846D59C00AE9DC4 /* mobilenet_v2.caffe.mnn */; }; CEDB211D284706F900AE9DC4 /* MNN.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F1465B71FA18D1000F9860A /* MNN.framework */; }; CEDB211E2847070600AE9DC4 /* MNN.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F1465B71FA18D1000F9860A /* MNN.framework */; }; + CEE4566B2BC0E23D00F062C1 /* CPUExternalConst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CEE4566A2BC0E23D00F062C1 /* CPUExternalConst.cpp */; }; CEE9B9532A3AA4C4006438F2 /* MNNCubicLineC16.S in Sources */ = {isa = PBXBuildFile; fileRef = CEE9B94F2A3AA4C4006438F2 /* MNNCubicLineC16.S */; }; CEE9B9552A3AA4C4006438F2 /* MNNCubicSampleC16.S in Sources */ = {isa = PBXBuildFile; fileRef = CEE9B9512A3AA4C4006438F2 /* MNNCubicSampleC16.S */; }; CEE9B95A2A3AA4D4006438F2 /* MNNCubicLineC16.S in Sources */ = {isa = PBXBuildFile; fileRef = CEE9B9562A3AA4D4006438F2 /* MNNCubicLineC16.S */; }; @@ -1577,6 +1581,9 @@ 952298B32B4D39250043978B /* MetalArgMax.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MetalArgMax.mm; sourceTree = ""; }; 952298B52B4D4CC80043978B /* CoreMLLayerNorm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CoreMLLayerNorm.cpp; sourceTree = ""; }; 952298B62B4D4CC80043978B /* coreMLLayerNorm.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = coreMLLayerNorm.hpp; sourceTree = ""; }; + 95278CE52B9F0999009E9B29 /* CPUDynamicQuant.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CPUDynamicQuant.hpp; sourceTree = ""; }; + 95278CE62B9F0999009E9B29 /* CPUDynamicQuant.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CPUDynamicQuant.cpp; sourceTree = ""; }; + 95278CE92B9F09C0009E9B29 /* ShapeDynamicQuant.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShapeDynamicQuant.cpp; sourceTree = ""; }; 9558333C29B0947300488807 /* MNNGelu.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = MNNGelu.S; sourceTree = ""; }; 9558334629B09A2300488807 /* MNNGelu.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = MNNGelu.S; sourceTree = ""; }; 9558334A29B09A7B00488807 /* MNNGeluFP16.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = MNNGeluFP16.S; path = ../../../arm82/asm/arm64/MNNGeluFP16.S; sourceTree = ""; }; @@ -1638,6 +1645,7 @@ CEDB21172846D58200AE9DC4 /* testcat.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = testcat.jpg; path = ../../../demo/model/MobileNet/testcat.jpg; sourceTree = ""; }; CEDB21182846D58200AE9DC4 /* synset_words.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = synset_words.txt; path = ../../../demo/model/MobileNet/synset_words.txt; sourceTree = ""; }; CEDB211B2846D59C00AE9DC4 /* mobilenet_v2.caffe.mnn */ = {isa = PBXFileReference; lastKnownFileType = file; name = mobilenet_v2.caffe.mnn; path = ../../../resource/model/MobileNet/v2/mobilenet_v2.caffe.mnn; sourceTree = ""; }; + CEE4566A2BC0E23D00F062C1 /* CPUExternalConst.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CPUExternalConst.cpp; sourceTree = ""; }; CEE9B94F2A3AA4C4006438F2 /* MNNCubicLineC16.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = MNNCubicLineC16.S; sourceTree = ""; }; CEE9B9512A3AA4C4006438F2 /* MNNCubicSampleC16.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = MNNCubicSampleC16.S; sourceTree = ""; }; CEE9B9562A3AA4D4006438F2 /* MNNCubicLineC16.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = MNNCubicLineC16.S; sourceTree = ""; }; @@ -1924,6 +1932,9 @@ 48887410215B639D0079B12E /* cpu */ = { isa = PBXGroup; children = ( + CEE4566A2BC0E23D00F062C1 /* CPUExternalConst.cpp */, + 95278CE62B9F0999009E9B29 /* CPUDynamicQuant.cpp */, + 95278CE52B9F0999009E9B29 /* CPUDynamicQuant.hpp */, 952298AD2B4D38CB0043978B /* ConvolutionHybrid.cpp */, 952298AE2B4D38CB0043978B /* ConvolutionHybrid.hpp */, CE8049A92B31C65B009B422C /* CPULayerNorm.hpp */, @@ -2802,6 +2813,7 @@ EBB38EC621E748B9005F76D7 /* shape */ = { isa = PBXGroup; children = ( + 95278CE92B9F09C0009E9B29 /* ShapeDynamicQuant.cpp */, CE7DBFFF28E2DE6B00797689 /* ShapeConvTranspose3D.cpp */, 4DCF538F2892B17000B5B393 /* ShapeHistogram.cpp */, 4DF87C4D2887D39B0003E2D4 /* ShapeSvd.cpp */, @@ -2993,6 +3005,7 @@ 4AF4FB26269ED235005BA97B /* SparseConvInt8TiledExecutor.hpp in Headers */, CEA49AA92AFD010900971CB7 /* MetalExecution.hpp in Headers */, 92FF03BC23AA0B5A00AC97F6 /* OptimizedComputer.hpp in Headers */, + 95278CE72B9F0999009E9B29 /* CPUDynamicQuant.hpp in Headers */, 48C84BA0250F725600EE7666 /* InitNet.hpp in Headers */, 92FF03C623AA0B5A00AC97F6 /* CPUNonMaxSuppressionV2.hpp in Headers */, 92FF028C23AA0B5A00AC97F6 /* CPUReduction.hpp in Headers */, @@ -3457,6 +3470,7 @@ 92FF03A423AA0B5A00AC97F6 /* OptimizedComputer.cpp in Sources */, 92FF032E23AA0B5A00AC97F6 /* MNNReluWithSlopeChannel.S in Sources */, 92FF032323AA0B5A00AC97F6 /* MNNExpC8.S in Sources */, + 95278CEA2B9F09C0009E9B29 /* ShapeDynamicQuant.cpp in Sources */, 92FF044C23AA0B7100AC97F6 /* ShapePool3D.cpp in Sources */, 92FF029823AA0B5A00AC97F6 /* CPUTFQuantizedConv2D.cpp in Sources */, 92FF031323AA0B5A00AC97F6 /* MNNNV21ToRGBAUnit.S in Sources */, @@ -3528,6 +3542,7 @@ 92FF036F23AA0B5A00AC97F6 /* CPURuntime.cpp in Sources */, 92FF039D23AA0B5A00AC97F6 /* StrassenMatmulComputor.cpp in Sources */, 92FF030B23AA0B5A00AC97F6 /* MNNUnPackC4.S in Sources */, + 95278CE82B9F0999009E9B29 /* CPUDynamicQuant.cpp in Sources */, 956F52E12AB2D692004B13D9 /* ImageProcessUtils.cpp in Sources */, CEE9B9552A3AA4C4006438F2 /* MNNCubicSampleC16.S in Sources */, 48FD034A246AA40300456AF5 /* GeometryConvert.cpp in Sources */, @@ -3751,6 +3766,7 @@ 48CA2F562681844C003A1796 /* MNNPackC8FP16.S in Sources */, 48C84B82250F711700EE7666 /* PipelineModule.cpp in Sources */, 48FD12BE2466A88D009E9102 /* GeometryImageOp.cpp in Sources */, + CEE4566B2BC0E23D00F062C1 /* CPUExternalConst.cpp in Sources */, 92FF035423AA0B5A00AC97F6 /* CPUSelect.cpp in Sources */, 92FF02C923AA0B5A00AC97F6 /* MNNLineDepthWiseInt8AddBiasScaleUnit.S in Sources */, 9558334729B09A2300488807 /* MNNGelu.S in Sources */, @@ -4051,7 +4067,7 @@ CODE_SIGN_STYLE = Automatic; DEAD_CODE_STRIPPING = YES; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = Q48UX93J22; + DEVELOPMENT_TEAM = 6G7464HHUS; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -4094,7 +4110,7 @@ METAL_LIBRARY_FILE_BASE = mnn; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ""; - PRODUCT_BUNDLE_IDENTIFIER = com.taobao.mnn.playground.v3; + PRODUCT_BUNDLE_IDENTIFIER = com.taobao.mnn.abcde3; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; @@ -4115,7 +4131,7 @@ CODE_SIGN_STYLE = Automatic; DEAD_CODE_STRIPPING = YES; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = Q48UX93J22; + DEVELOPMENT_TEAM = 6G7464HHUS; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -4156,7 +4172,7 @@ MACH_O_TYPE = staticlib; METAL_LIBRARY_FILE_BASE = mnn; OTHER_CFLAGS = ""; - PRODUCT_BUNDLE_IDENTIFIER = com.taobao.mnn.playground.v3; + PRODUCT_BUNDLE_IDENTIFIER = com.taobao.mnn.abcde3; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; PROVISIONING_PROFILE_SPECIFIER = ""; "PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = ""; @@ -4175,20 +4191,22 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = Q48UX93J22; + DEVELOPMENT_TEAM = 6G7464HHUS; GCC_ENABLE_CPP_EXCEPTIONS = NO; GCC_ENABLE_CPP_RTTI = NO; HEADER_SEARCH_PATHS = ( "${inherited}", "${SRCROOT}/../../3rd_party/flatbuffers/include", + "${SRCROOT}/../../test", "${SRCROOT}/../../source", "${SRCROOT}/../../schema/current", + "${SRCROOT}/../../tools", ); INFOPLIST_FILE = Playground/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)"; - PRODUCT_BUNDLE_IDENTIFIER = com.taobao.mnn.888888; + PRODUCT_BUNDLE_IDENTIFIER = com.taobao.mnn.abcde3; PRODUCT_NAME = "$(TARGET_NAME)"; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -4200,20 +4218,22 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = Q48UX93J22; + DEVELOPMENT_TEAM = 6G7464HHUS; GCC_ENABLE_CPP_EXCEPTIONS = NO; GCC_ENABLE_CPP_RTTI = NO; HEADER_SEARCH_PATHS = ( "${inherited}", "${SRCROOT}/../../3rd_party/flatbuffers/include", + "${SRCROOT}/../../test", "${SRCROOT}/../../source", "${SRCROOT}/../../schema/current", + "${SRCROOT}/../../tools", ); INFOPLIST_FILE = Playground/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)"; - PRODUCT_BUNDLE_IDENTIFIER = com.taobao.mnn.888888; + PRODUCT_BUNDLE_IDENTIFIER = com.taobao.mnn.abcde3; PRODUCT_NAME = "$(TARGET_NAME)"; TARGETED_DEVICE_FAMILY = "1,2"; }; diff --git a/pymnn/pip_package/setup.py b/pymnn/pip_package/setup.py index d95092df1..6651a76ee 100644 --- a/pymnn/pip_package/setup.py +++ b/pymnn/pip_package/setup.py @@ -134,7 +134,7 @@ def configure_extension_build(): # structured exception handling (SEH) # /DNOMINMAX removes builtin min/max functions # /wdXXXX disables warning no. XXXX - # Some macro (related with __VA_ARGS__) defined in pymnn/src/util.h can not be process correctly + # Some macro (related with __VA_ARGS__) defined in pymnn/src/util.h can not be process correctly # becase of MSVC bug, enable /experimental:preprocessor fix it (And Windows SDK >= 10.0.18362.1) extra_compile_args = ['/MT', '/Zi', '/EHa', '/DNOMINMAX', @@ -355,9 +355,9 @@ def configure_extension_build(): def make_relative_rpath(path): """ make rpath """ if IS_DARWIN: - # dylibs instal at .../lib/ for - # .../lib/python*/site-packages/_mnncengine.cpython-*-darwin.so - return ['-Wl,-rpath,@loader_path/../../../' + path] + # conda: dylibs install at site-packages/MNN_*/lib/ + # not conda: dylibs instal at .../lib/ for .../lib/python*/site-packages/_mnncengine.cpython-*-darwin.so + return [f'-Wl,-rpath,@loader_path/../../../{path},-rpath,@loader_path/{path}'] elif IS_WINDOWS: return [] else: diff --git a/schema/current/MNN_generated.h b/schema/current/MNN_generated.h index 353fa8a19..45b397ee8 100644 --- a/schema/current/MNN_generated.h +++ b/schema/current/MNN_generated.h @@ -246,6 +246,7 @@ enum OpType { OpType_GatherElements = 152, OpType_Svd = 153, OpType_Histogram = 154, + OpType_DynamicQuant = 155, OpType_Plugin = 256, OpType_Select = 257, OpType_ZerosLike = 258, @@ -280,7 +281,7 @@ enum OpType { OpType_MAX = OpType_GridSample }; -inline const OpType (&EnumValuesOpType())[180] { +inline const OpType (&EnumValuesOpType())[181] { static const OpType values[] = { OpType_AbsVal, OpType_QuantizedAdd, @@ -432,6 +433,7 @@ inline const OpType (&EnumValuesOpType())[180] { OpType_GatherElements, OpType_Svd, OpType_Histogram, + OpType_DynamicQuant, OpType_Plugin, OpType_Select, OpType_ZerosLike, @@ -623,7 +625,7 @@ inline const char * const *EnumNamesOpType() { "GatherElements", "Svd", "Histogram", - "", + "DynamicQuant", "", "", "", @@ -3469,6 +3471,7 @@ struct OpT : public flatbuffers::NativeTable { std::vector outputIndexes; OpType type; MNN_DATA_FORMAT defaultDimentionFormat; + std::string externalPath; OpT() : type(OpType_AbsVal), defaultDimentionFormat(MNN_DATA_FORMAT_NHWC) { @@ -3793,6 +3796,9 @@ struct Op FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { MNN_DATA_FORMAT defaultDimentionFormat() const { return static_cast(GetField(16, 1)); } + const flatbuffers::String *externalPath() const { + return GetPointer(18); + } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, 4) && @@ -3806,6 +3812,8 @@ struct Op FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { verifier.VerifyVector(outputIndexes()) && VerifyField(verifier, 14) && VerifyField(verifier, 16) && + VerifyOffset(verifier, 18) && + verifier.VerifyString(externalPath()) && verifier.EndTable(); } OpT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; @@ -4225,6 +4233,9 @@ struct OpBuilder { void add_defaultDimentionFormat(MNN_DATA_FORMAT defaultDimentionFormat) { fbb_.AddElement(16, static_cast(defaultDimentionFormat), 1); } + void add_externalPath(flatbuffers::Offset externalPath) { + fbb_.AddOffset(18, externalPath); + } explicit OpBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); @@ -4245,8 +4256,10 @@ inline flatbuffers::Offset CreateOp( flatbuffers::Offset name = 0, flatbuffers::Offset> outputIndexes = 0, OpType type = OpType_AbsVal, - MNN_DATA_FORMAT defaultDimentionFormat = MNN_DATA_FORMAT_NHWC) { + MNN_DATA_FORMAT defaultDimentionFormat = MNN_DATA_FORMAT_NHWC, + flatbuffers::Offset externalPath = 0) { OpBuilder builder_(_fbb); + builder_.add_externalPath(externalPath); builder_.add_type(type); builder_.add_outputIndexes(outputIndexes); builder_.add_name(name); @@ -5225,6 +5238,7 @@ inline void Op::UnPackTo(OpT *_o, const flatbuffers::resolver_function_t *_resol { auto _e = outputIndexes(); if (_e) { _o->outputIndexes.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->outputIndexes[_i] = _e->Get(_i); } } }; { auto _e = type(); _o->type = _e; }; { auto _e = defaultDimentionFormat(); _o->defaultDimentionFormat = _e; }; + { auto _e = externalPath(); if (_e) _o->externalPath = _e->str(); }; } inline flatbuffers::Offset Op::Pack(flatbuffers::FlatBufferBuilder &_fbb, const OpT* _o, const flatbuffers::rehasher_function_t *_rehasher) { @@ -5242,6 +5256,7 @@ inline flatbuffers::Offset CreateOp(flatbuffers::FlatBufferBuilder &_fbb, co auto _outputIndexes = _o->outputIndexes.size() ? _fbb.CreateVector(_o->outputIndexes) : 0; auto _type = _o->type; auto _defaultDimentionFormat = _o->defaultDimentionFormat; + auto _externalPath = _o->externalPath.empty() ? 0 : _fbb.CreateString(_o->externalPath); return MNN::CreateOp( _fbb, _inputIndexes, @@ -5250,7 +5265,8 @@ inline flatbuffers::Offset CreateOp(flatbuffers::FlatBufferBuilder &_fbb, co _name, _outputIndexes, _type, - _defaultDimentionFormat); + _defaultDimentionFormat, + _externalPath); } inline ViewT *View::UnPack(const flatbuffers::resolver_function_t *_resolver) const { @@ -7759,12 +7775,13 @@ inline const flatbuffers::TypeTable *OpTypeTypeTable() { { flatbuffers::ET_INT, 0, 0 }, { flatbuffers::ET_INT, 0, 0 }, { flatbuffers::ET_INT, 0, 0 }, + { flatbuffers::ET_INT, 0, 0 }, { flatbuffers::ET_INT, 0, 0 } }; static const flatbuffers::TypeFunction type_refs[] = { OpTypeTypeTable }; - static const int64_t values[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 300, 301, 302, 303, 304, 512, 513, 514, 515, 516, 517, 518, 600, 601, 603, 604 }; + static const int64_t values[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 300, 301, 302, 303, 304, 512, 513, 514, 515, 516, 517, 518, 600, 601, 603, 604 }; static const char * const names[] = { "AbsVal", "QuantizedAdd", @@ -7916,6 +7933,7 @@ inline const flatbuffers::TypeTable *OpTypeTypeTable() { "GatherElements", "Svd", "Histogram", + "DynamicQuant", "Plugin", "Select", "ZerosLike", @@ -7948,7 +7966,7 @@ inline const flatbuffers::TypeTable *OpTypeTypeTable() { "GridSample" }; static const flatbuffers::TypeTable tt = { - flatbuffers::ST_ENUM, 180, type_codes, type_refs, values, names + flatbuffers::ST_ENUM, 181, type_codes, type_refs, values, names }; return &tt; } @@ -8498,7 +8516,8 @@ inline const flatbuffers::TypeTable *OpTypeTable() { { flatbuffers::ET_STRING, 0, -1 }, { flatbuffers::ET_INT, 1, -1 }, { flatbuffers::ET_INT, 0, 1 }, - { flatbuffers::ET_CHAR, 0, 2 } + { flatbuffers::ET_CHAR, 0, 2 }, + { flatbuffers::ET_STRING, 0, -1 } }; static const flatbuffers::TypeFunction type_refs[] = { OpParameterTypeTable, @@ -8512,10 +8531,11 @@ inline const flatbuffers::TypeTable *OpTypeTable() { "name", "outputIndexes", "type", - "defaultDimentionFormat" + "defaultDimentionFormat", + "externalPath" }; static const flatbuffers::TypeTable tt = { - flatbuffers::ST_TABLE, 7, type_codes, type_refs, nullptr, names + flatbuffers::ST_TABLE, 8, type_codes, type_refs, nullptr, names }; return &tt; } diff --git a/schema/current/TensorflowOp_generated.h b/schema/current/TensorflowOp_generated.h index 5a514bdec..aeb3071d8 100644 --- a/schema/current/TensorflowOp_generated.h +++ b/schema/current/TensorflowOp_generated.h @@ -3124,9 +3124,11 @@ struct LayerNormT : public flatbuffers::NativeTable { std::vector beta; int32_t group; std::vector external; + bool useRMSNorm; LayerNormT() : epsilon(0.0f), - group(1) { + group(1), + useRMSNorm(false) { } }; @@ -3153,6 +3155,9 @@ struct LayerNorm FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { const flatbuffers::Vector *external() const { return GetPointer *>(14); } + bool useRMSNorm() const { + return GetField(16, 0) != 0; + } bool Verify(flatbuffers::Verifier &verifier) const { return VerifyTableStart(verifier) && VerifyOffset(verifier, 4) && @@ -3165,6 +3170,7 @@ struct LayerNorm FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table { VerifyField(verifier, 12) && VerifyOffset(verifier, 14) && verifier.VerifyVector(external()) && + VerifyField(verifier, 16) && verifier.EndTable(); } LayerNormT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const; @@ -3193,6 +3199,9 @@ struct LayerNormBuilder { void add_external(flatbuffers::Offset> external) { fbb_.AddOffset(14, external); } + void add_useRMSNorm(bool useRMSNorm) { + fbb_.AddElement(16, static_cast(useRMSNorm), 0); + } explicit LayerNormBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); @@ -3212,7 +3221,8 @@ inline flatbuffers::Offset CreateLayerNorm( flatbuffers::Offset> gamma = 0, flatbuffers::Offset> beta = 0, int32_t group = 1, - flatbuffers::Offset> external = 0) { + flatbuffers::Offset> external = 0, + bool useRMSNorm = false) { LayerNormBuilder builder_(_fbb); builder_.add_external(external); builder_.add_group(group); @@ -3220,6 +3230,7 @@ inline flatbuffers::Offset CreateLayerNorm( builder_.add_gamma(gamma); builder_.add_epsilon(epsilon); builder_.add_axis(axis); + builder_.add_useRMSNorm(useRMSNorm); return builder_.Finish(); } @@ -4727,6 +4738,7 @@ inline void LayerNorm::UnPackTo(LayerNormT *_o, const flatbuffers::resolver_func { auto _e = beta(); if (_e) { _o->beta.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->beta[_i] = _e->Get(_i); } } }; { auto _e = group(); _o->group = _e; }; { auto _e = external(); if (_e) { _o->external.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->external[_i] = _e->Get(_i); } } }; + { auto _e = useRMSNorm(); _o->useRMSNorm = _e; }; } inline flatbuffers::Offset LayerNorm::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LayerNormT* _o, const flatbuffers::rehasher_function_t *_rehasher) { @@ -4743,6 +4755,7 @@ inline flatbuffers::Offset CreateLayerNorm(flatbuffers::FlatBufferBui auto _beta = _o->beta.size() ? _fbb.CreateVector(_o->beta) : 0; auto _group = _o->group; auto _external = _o->external.size() ? _fbb.CreateVector(_o->external) : 0; + auto _useRMSNorm = _o->useRMSNorm; return MNN::CreateLayerNorm( _fbb, _axis, @@ -4750,7 +4763,8 @@ inline flatbuffers::Offset CreateLayerNorm(flatbuffers::FlatBufferBui _gamma, _beta, _group, - _external); + _external, + _useRMSNorm); } inline GroupNormT *GroupNorm::UnPack(const flatbuffers::resolver_function_t *_resolver) const { @@ -5791,7 +5805,8 @@ inline const flatbuffers::TypeTable *LayerNormTypeTable() { { flatbuffers::ET_FLOAT, 1, -1 }, { flatbuffers::ET_FLOAT, 1, -1 }, { flatbuffers::ET_INT, 0, -1 }, - { flatbuffers::ET_LONG, 1, -1 } + { flatbuffers::ET_LONG, 1, -1 }, + { flatbuffers::ET_BOOL, 0, -1 } }; static const char * const names[] = { "axis", @@ -5799,10 +5814,11 @@ inline const flatbuffers::TypeTable *LayerNormTypeTable() { "gamma", "beta", "group", - "external" + "external", + "useRMSNorm" }; static const flatbuffers::TypeTable tt = { - flatbuffers::ST_TABLE, 6, type_codes, nullptr, nullptr, names + flatbuffers::ST_TABLE, 7, type_codes, nullptr, nullptr, names }; return &tt; } diff --git a/schema/default/MNN.fbs b/schema/default/MNN.fbs index c4b3e7234..54626df04 100644 --- a/schema/default/MNN.fbs +++ b/schema/default/MNN.fbs @@ -167,6 +167,7 @@ enum OpType : int { GatherElements = 152, Svd = 153, Histogram = 154, + DynamicQuant = 155, Plugin = 256, //The Type load from plugin //Training Op Start from 257 @@ -417,6 +418,7 @@ table Op { outputIndexes: [int]; type: OpType; defaultDimentionFormat : MNN_DATA_FORMAT = NHWC; + externalPath:string; } table View { diff --git a/schema/default/TensorflowOp.fbs b/schema/default/TensorflowOp.fbs index e799cd7a9..5a33eca11 100644 --- a/schema/default/TensorflowOp.fbs +++ b/schema/default/TensorflowOp.fbs @@ -313,6 +313,7 @@ table LayerNorm { beta: [float]; group: int = 1; external:[int64]; // [offset, gamma_bytes_size, beta_bytes_size] + useRMSNorm: bool = false; } table GroupNorm { axis: int; diff --git a/source/backend/arm82/Arm82Backend.cpp b/source/backend/arm82/Arm82Backend.cpp index ea2c81863..7b13b852b 100644 --- a/source/backend/arm82/Arm82Backend.cpp +++ b/source/backend/arm82/Arm82Backend.cpp @@ -60,7 +60,7 @@ Execution* Arm82Backend::onCreate(const std::vector& inputs, const std: return nullptr; } } - bool originCreate = OpCommonUtils::opCompabilityForLowp(op); + bool originCreate = OpCommonUtils::opCompabilityForLowp(op, 2); if (originCreate) { return CPUBackend::onCreate(inputs, outputs, op); } diff --git a/source/backend/arm82/Arm82Functions.cpp b/source/backend/arm82/Arm82Functions.cpp index 7ed86d8b0..435d369d4 100644 --- a/source/backend/arm82/Arm82Functions.cpp +++ b/source/backend/arm82/Arm82Functions.cpp @@ -170,6 +170,44 @@ static void MNNGridSampleComputeCordFP16(FLOAT16* dst, const FLOAT16* src, size_ ::memcpy(dst, tempDst, areaRemain * 2 * sizeof(int16_t)); } +static void MNNGridSampleComputeCord3DFp16(FLOAT* dst, const FLOAT* src, size_t inD, size_t inH, size_t inW, size_t outD, size_t outH, size_t outW, size_t strideD, size_t strideH, bool alignCorners) { + float16x8_t zero = vdupq_n_f16(0); + float16x8_t one = vdupq_n_f16(1); + float16x8_t half = vdupq_n_f16(0.5f); + float16x8_t a = alignCorners ? one : zero; + float16x8_t b = alignCorners ? zero : one; + float16x8_t inW_sub_a = vsubq_f16(vdupq_n_f16(inW), a); + float16x8_t inH_sub_a = vsubq_f16(vdupq_n_f16(inH), a); + float16x8_t inD_sub_a = vsubq_f16(vdupq_n_f16(inD), a); + size_t area = outH * outW * outD; + size_t areaC8 = area / 8; + size_t areaRemain = area - areaC8 * 8; + + for (int i = 0; i < areaC8; ++i) { + auto cordH = vld3q_f16(src); + // float16x8_t x = cordH.val[0]; + // float16x8_t y = cordH.val[1]; + cordH.val[0] = vmulq_f16(half, vsubq_f16(vmulq_f16(vaddq_f16(one, cordH.val[0]), inW_sub_a), b)); + cordH.val[1] = vmulq_f16(half, vsubq_f16(vmulq_f16(vaddq_f16(one, cordH.val[1]), inH_sub_a), b)); + cordH.val[2] = vmulq_f16(half, vsubq_f16(vmulq_f16(vaddq_f16(one, cordH.val[2]), inD_sub_a), b)); + vst3q_f16(dst, cordH); + src += 24; + dst += 24; + } + if (areaRemain == 0) { + return; + } + + // areaRemain + FLOAT16 tempDst[24]; + ::memcpy(tempDst, src, areaRemain * 3 * sizeof(int16_t)); + auto cordH = vld3q_f16(tempDst); + cordH.val[0] = vmulq_f16(half, vsubq_f16(vmulq_f16(vaddq_f16(one, cordH.val[0]), inW_sub_a), b)); + cordH.val[1] = vmulq_f16(half, vsubq_f16(vmulq_f16(vaddq_f16(one, cordH.val[1]), inH_sub_a), b)); + cordH.val[2] = vmulq_f16(half, vsubq_f16(vmulq_f16(vaddq_f16(one, cordH.val[2]), inD_sub_a), b)); + vst3q_f16(tempDst, cordH); + ::memcpy(dst, tempDst, areaRemain * 3 * sizeof(int16_t)); +} static void MNNRoiPoolingMaxFP16(FLOAT16* dst, const FLOAT16* src, int hLen, int wLen, int iw) { Vec max = Vec(-65504.0f); for (int h = 0; h < hLen; h++, src += iw * 8) { @@ -625,6 +663,7 @@ static CoreFunctions* gInstance = nullptr; bool Arm82Functions::init() { using Vec = MNN::Math::Vec; + auto origin = MNNGetCoreFunctions(); #define FUNC_PTR_ASSIGN(dst, src) dst = (decltype(dst))(src) gInstance = new CoreFunctions; @@ -652,6 +691,8 @@ bool Arm82Functions::init() { FUNC_PTR_ASSIGN(gInstance->MNNGridSampleComputeCord, MNNGridSampleComputeCordFP16); FUNC_PTR_ASSIGN(gInstance->MNNGridSampleInterp, MNNGridSampleInterp); FUNC_PTR_ASSIGN(gInstance->MNNGridSampleInterpGrad, MNNGridSampleInterpGrad); + FUNC_PTR_ASSIGN(gInstance->MNNGridSampleComputeCord3D, MNNGridSampleComputeCord3DFp16); + FUNC_PTR_ASSIGN(gInstance->MNNGridSampleInterp3D, MNNGridSampleInterp3D); FUNC_PTR_ASSIGN(gInstance->MNNRoiPoolingMax, MNNRoiPoolingMaxFP16); FUNC_PTR_ASSIGN(gInstance->MNNRoiAlignMax, MNNRoiAlignMaxFP16); FUNC_PTR_ASSIGN(gInstance->MNNRoiAlignAvg, MNNRoiAlignAvgFP16); @@ -670,11 +711,9 @@ bool Arm82Functions::init() { FUNC_PTR_ASSIGN(gInstance->MNNQuantScale, MNNQuantScaleFP16); FUNC_PTR_ASSIGN(gInstance->MNNDynamicQuant, MNNDynamicQuantFP16); FUNC_PTR_ASSIGN(gInstance->MNNQuantSum, MNNQuantSumFP16); - cpuinfo_arm_isa gCPUInfo; - cpuinfo_arm_init(&gCPUInfo); - gInstance->supportFp16arith = gCPUInfo.fp16arith; - gInstance->supportSDot = gCPUInfo.dot; - gInstance->supportI8mm = gCPUInfo.i8mm; + gInstance->supportFp16arith = origin->supportFp16arith; + gInstance->supportSDot = origin->supportSDot; + gInstance->supportI8mm = origin->supportI8mm; #if defined(__aarch64__) if (gInstance->supportSDot) { gInstance->MNNGemmHybridInt8 = MNNGemmHybridInt8FP16_sdot; diff --git a/source/backend/arm82/Arm82Unary.cpp b/source/backend/arm82/Arm82Unary.cpp index 05c6fb14d..b5aa6726d 100644 --- a/source/backend/arm82/Arm82Unary.cpp +++ b/source/backend/arm82/Arm82Unary.cpp @@ -295,9 +295,10 @@ MNNUnaryExecute Arm82Unary::select(int type, int precision) { case UnaryOpOperation_HARDSWISH: return FP16HardSwish; case UnaryOpOperation_GELU: + case UnaryOpOperation_GELU_STANDARD: return FP16GELU; default: - MNN_ASSERT(false); + MNN_ERROR("Don't support %d for arm82 unary\n", type); break; } return nullptr; diff --git a/source/backend/arm82/asm/arm64/low_memory/MNNPackedMatMulFP16_int4.S b/source/backend/arm82/asm/arm64/low_memory/MNNPackedMatMulFP16_int4.S index 0b7043e61..72f7e12bd 100644 --- a/source/backend/arm82/asm/arm64/low_memory/MNNPackedMatMulFP16_int4.S +++ b/source/backend/arm82/asm/arm64/low_memory/MNNPackedMatMulFP16_int4.S @@ -2,7 +2,7 @@ // MNNPackedMatMulFP16_int4.S // MNN // -// Created by MNN on 2023/05/29. +// Created by MNN on 2023/06/06. // Copyright © 2018, Alibaba Group Holding Limited // #ifdef __aarch64__ @@ -13,7 +13,7 @@ .align 5 // 8 * 24 MatMul asm_function MNNPackedMatMulFP16_int4 -//void MNNPackedMatMulFP16(FLOAT16* C, const FLOAT16* A, const FLOAT16* B, const size_t* parameter, const FLOAT16* postParameters, const FLOAT16* bias, const FLOAT16* k, const FLOAT16* b); +//void MNNPackedMatMulFP16_int4(FLOAT16* C, const FLOAT16* A, const FLOAT16* B, const size_t* parameter, const FLOAT16* postParameters, const FLOAT16* bias, const FLOAT16* k, const FLOAT16* b); // x0: C, x1:A, x2:B, x3:parameter, x4: postParameters, x5:bias, x6: quant_alpha, x7: quant_bias stp d14, d15, [sp, #-80]! stp d12, d13, [sp, #16] @@ -40,32 +40,26 @@ blt LH4 LH8: sub x14, x13, #128 -mov x19, x6 -mov x20, x7 LoopH: mov x15, x1 - ld1 {v4.8h, v5.8h}, [x19], #32 // alpha - ld1 {v6.8h, v7.8h}, [x20], #32 // bias - subs x12, x9, #2 - // ld1 {v3.8h, v4.8h}, [x2], #32 - ld1 {v0.8h}, [x2], #16 - ushr v1.16b, v0.16b, #4 - mov w17, #0x0f - dup v3.16b, w17 - and v2.16b, v0.16b, v3.16b - mov w17, #8 - dup v0.16b, w17 - sub v1.16b, v1.16b, v0.16b - sub v2.16b, v2.16b, v0.16b - zip1 v0.16b, v1.16b, v2.16b - zip2 v3.16b, v1.16b, v2.16b - sxtl v1.8h, v0.8b - sxtl2 v2.8h, v0.16b - scvtf v0.8h, v1.8h - scvtf v1.8h, v2.8h - mov v2.16b, v7.16b + ld1 {v4.8h, v5.8h}, [x6], #32 // alpha + ld1 {v6.8h, v7.8h}, [x7], #32 // bias + subs x12, x9, #1 + + ld1 {v0.8b}, [x2], #8 + ushr v1.8b, v0.8b, #4 + movi v3.8b, #0x0f + and v2.8b, v0.8b, v3.8b + zip1 v3.8b, v1.8b, v2.8b + zip2 v2.8b, v1.8b, v2.8b + + sxtl v0.8h, v3.8b + sxtl v1.8h, v2.8b + scvtf v0.8h, v0.8h + scvtf v1.8h, v1.8h + mov v2.8h, v7.8h fmla v2.8h, v1.8h, v5.8h - mov v1.16b, v6.16b + mov v1.8h, v6.8h fmla v1.8h, v0.8h, v4.8h ld1 {v0.8h}, [x15], #16 @@ -87,115 +81,34 @@ LoopH: fmul v26.8h, v2.8h, v0.h[6] fmul v27.8h, v2.8h, v0.h[7] - ld1 {v1.4h}, [x15], #8 - fmul v16.8h, v1.8h, v1.h[0] - fmul v17.8h, v1.8h, v1.h[1] - fmul v18.8h, v1.8h, v1.h[2] - fmul v19.8h, v1.8h, v1.h[3] - fmul v28.8h, v2.8h, v1.h[0] - fmul v29.8h, v2.8h, v1.h[1] - fmul v30.8h, v2.8h, v1.h[2] - fmul v31.8h, v2.8h, v1.h[3] - - sxtl v0.8h, v3.8b - sxtl2 v1.8h, v3.16b - scvtf v0.8h, v0.8h - scvtf v1.8h, v1.8h - mov v2.16b, v7.16b - fmla v2.8h, v1.8h, v5.8h - mov v1.16b, v6.16b - fmla v1.8h, v0.8h, v4.8h - - ld1 {v0.8h}, [x15], #16 - fmla v8.8h, v1.8h, v0.h[0] - fmla v9.8h, v1.8h, v0.h[1] - fmla v10.8h, v1.8h, v0.h[2] - fmla v11.8h, v1.8h, v0.h[3] - fmla v12.8h, v1.8h, v0.h[4] - fmla v13.8h, v1.8h, v0.h[5] - fmla v14.8h, v1.8h, v0.h[6] - fmla v15.8h, v1.8h, v0.h[7] - - fmla v20.8h, v2.8h, v0.h[0] - fmla v21.8h, v2.8h, v0.h[1] - fmla v22.8h, v2.8h, v0.h[2] - fmla v23.8h, v2.8h, v0.h[3] - fmla v24.8h, v2.8h, v0.h[4] - fmla v25.8h, v2.8h, v0.h[5] - fmla v26.8h, v2.8h, v0.h[6] - fmla v27.8h, v2.8h, v0.h[7] - ld1 {v0.4h}, [x15], #8 - fmla v16.8h, v1.8h, v0.h[0] - fmla v17.8h, v1.8h, v0.h[1] - fmla v18.8h, v1.8h, v0.h[2] - fmla v19.8h, v1.8h, v0.h[3] - fmla v28.8h, v2.8h, v0.h[0] - fmla v29.8h, v2.8h, v0.h[1] - fmla v30.8h, v2.8h, v0.h[2] - fmla v31.8h, v2.8h, v0.h[3] + fmul v16.8h, v1.8h, v0.h[0] + fmul v17.8h, v1.8h, v0.h[1] + fmul v18.8h, v1.8h, v0.h[2] + fmul v19.8h, v1.8h, v0.h[3] + fmul v28.8h, v2.8h, v0.h[0] + fmul v29.8h, v2.8h, v0.h[1] + fmul v30.8h, v2.8h, v0.h[2] + fmul v31.8h, v2.8h, v0.h[3] beq LoopLEnd - LoopL2: - // ld1 {v3.8h, v4.8h}, [x2], #32 - subs x12, x12, #2 - ld1 {v0.8h}, [x2], #16 - ushr v1.16b, v0.16b, #4 - mov w17, #0x0f - dup v3.16b, w17 - and v2.16b, v0.16b, v3.16b - mov w17, #8 - dup v0.16b, w17 - sub v1.16b, v1.16b, v0.16b - sub v2.16b, v2.16b, v0.16b - zip1 v0.16b, v1.16b, v2.16b - zip2 v3.16b, v1.16b, v2.16b - sxtl v1.8h, v0.8b - sxtl2 v2.8h, v0.16b - scvtf v0.8h, v1.8h - scvtf v1.8h, v2.8h - mov v2.16b, v7.16b - fmla v2.8h, v1.8h, v5.8h - mov v1.16b, v6.16b - fmla v1.8h, v0.8h, v4.8h - - ld1 {v0.8h}, [x15], #16 - fmla v8.8h, v1.8h, v0.h[0] - fmla v9.8h, v1.8h, v0.h[1] - fmla v10.8h, v1.8h, v0.h[2] - fmla v11.8h, v1.8h, v0.h[3] - fmla v12.8h, v1.8h, v0.h[4] - fmla v13.8h, v1.8h, v0.h[5] - fmla v14.8h, v1.8h, v0.h[6] - fmla v15.8h, v1.8h, v0.h[7] - - fmla v20.8h, v2.8h, v0.h[0] - fmla v21.8h, v2.8h, v0.h[1] - fmla v22.8h, v2.8h, v0.h[2] - fmla v23.8h, v2.8h, v0.h[3] - fmla v24.8h, v2.8h, v0.h[4] - fmla v25.8h, v2.8h, v0.h[5] - fmla v26.8h, v2.8h, v0.h[6] - fmla v27.8h, v2.8h, v0.h[7] - - ld1 {v0.4h}, [x15], #8 - fmla v16.8h, v1.8h, v0.h[0] - fmla v17.8h, v1.8h, v0.h[1] - fmla v18.8h, v1.8h, v0.h[2] - fmla v19.8h, v1.8h, v0.h[3] - fmla v28.8h, v2.8h, v0.h[0] - fmla v29.8h, v2.8h, v0.h[1] - fmla v30.8h, v2.8h, v0.h[2] - fmla v31.8h, v2.8h, v0.h[3] + LoopL1: + subs x12, x12, #1 + ld1 {v0.8b}, [x2], #8 + ushr v1.8b, v0.8b, #4 + movi v3.8b, #0x0f + and v2.8b, v0.8b, v3.8b + zip1 v3.8b, v1.8b, v2.8b + zip2 v2.8b, v1.8b, v2.8b sxtl v0.8h, v3.8b - sxtl2 v1.8h, v3.16b + sxtl v1.8h, v2.8b scvtf v0.8h, v0.8h scvtf v1.8h, v1.8h - mov v2.16b, v7.16b + mov v2.8h, v7.8h fmla v2.8h, v1.8h, v5.8h - mov v1.16b, v6.16b + mov v1.8h, v6.8h fmla v1.8h, v0.8h, v4.8h ld1 {v0.8h}, [x15], #16 @@ -226,7 +139,8 @@ LoopH: fmla v29.8h, v2.8h, v0.h[1] fmla v30.8h, v2.8h, v0.h[2] fmla v31.8h, v2.8h, v0.h[3] - bne LoopL2 + + bne LoopL1 LoopLEnd: @@ -338,35 +252,22 @@ LoopH: LH4: cbz x10, End -mov x19, x6 -mov x20, x7 LoopHRemain: mov x15, x1 - subs x12, x9, #2 - ld1 {v20.8h}, [x19], #16 // alpha - ld1 {v21.8h}, [x20], #16 // bias - mov w17, #0x0f - dup v22.16b, w17 - mov w17, #8 - dup v23.16b, w17 - // ld1 {v3.8h}, [x2] - ld1 {v3.8h}, [x2], #16 - // 01234567xxxxxxx89... => 0123456789... - uzp1 v0.4s, v3.4s, v3.4s + subs x12, x9, #1 + ld1 {v20.8h}, [x6], #16 // alpha + ld1 {v21.8h}, [x7], #16 // bias + + ld1 {v0.8b}, [x2], #8 ushr v1.8b, v0.8b, #4 - and v2.8b, v0.8b, v22.8b - sub v1.8b, v1.8b, v23.8b - sub v2.8b, v2.8b, v23.8b - zip1 v6.8b, v1.8b, v2.8b - zip2 v7.8b, v1.8b, v2.8b - sxtl v0.8h, v6.8b - sxtl v1.8h, v7.8b - scvtf v6.8h, v0.8h - scvtf v7.8h, v1.8h - mov v3.16b, v21.16b - mov v4.16b, v21.16b + movi v3.8b, #0x0f + and v2.8b, v0.8b, v3.8b + zip1 v3.8b, v1.8b, v2.8b + + sxtl v3.8h, v3.8b + scvtf v6.8h, v3.8h + mov v3.8h, v21.8h fmla v3.8h, v6.8h, v20.8h - fmla v4.8h, v7.8h, v20.8h ld1 {v0.4h, v1.4h, v2.4h}, [x15], #24 fmul v8.8h, v3.8h, v0.h[0] @@ -382,42 +283,22 @@ LoopHRemain: fmul v18.8h, v3.8h, v2.h[2] fmul v19.8h, v3.8h, v2.h[3] - ld1 {v0.4h, v1.4h, v2.4h}, [x15], #24 - fmla v8.8h, v4.8h, v0.h[0] - fmla v9.8h, v4.8h, v0.h[1] - fmla v10.8h, v4.8h, v0.h[2] - fmla v11.8h, v4.8h, v0.h[3] - fmla v12.8h, v4.8h, v1.h[0] - fmla v13.8h, v4.8h, v1.h[1] - fmla v14.8h, v4.8h, v1.h[2] - fmla v15.8h, v4.8h, v1.h[3] - fmla v16.8h, v4.8h, v2.h[0] - fmla v17.8h, v4.8h, v2.h[1] - fmla v18.8h, v4.8h, v2.h[2] - fmla v19.8h, v4.8h, v2.h[3] - beq LoopLREnd LoopLR: - subs x12, x12, #2 - // ld1 {v3.8h}, [x2] - ld1 {v3.8h}, [x2], #16 - // 01234567xxxxxxx89... => 0123456789... - uzp1 v0.4s, v3.4s, v3.4s + subs x12, x12, #1 + ld1 {v0.8b}, [x2], #8 ushr v1.8b, v0.8b, #4 - and v2.8b, v0.8b, v22.8b - sub v1.8b, v1.8b, v23.8b - sub v2.8b, v2.8b, v23.8b - zip1 v6.8b, v1.8b, v2.8b - zip2 v7.8b, v1.8b, v2.8b - sxtl v0.8h, v6.8b - sxtl v1.8h, v7.8b - scvtf v6.8h, v0.8h - scvtf v7.8h, v1.8h - mov v3.16b, v21.16b - mov v4.16b, v21.16b + movi v3.8b, #0x0f + and v2.8b, v0.8b, v3.8b + zip1 v3.8b, v1.8b, v2.8b + + sxtl v3.8h, v3.8b + + scvtf v6.8h, v3.8h + mov v3.8h, v21.8h fmla v3.8h, v6.8h, v20.8h - fmla v4.8h, v7.8h, v20.8h + ld1 {v0.4h, v1.4h, v2.4h}, [x15], #24 fmla v8.8h, v3.8h, v0.h[0] fmla v9.8h, v3.8h, v0.h[1] @@ -432,20 +313,6 @@ LoopHRemain: fmla v18.8h, v3.8h, v2.h[2] fmla v19.8h, v3.8h, v2.h[3] - ld1 {v0.4h, v1.4h, v2.4h}, [x15], #24 - fmla v8.8h, v4.8h, v0.h[0] - fmla v9.8h, v4.8h, v0.h[1] - fmla v10.8h, v4.8h, v0.h[2] - fmla v11.8h, v4.8h, v0.h[3] - fmla v12.8h, v4.8h, v1.h[0] - fmla v13.8h, v4.8h, v1.h[1] - fmla v14.8h, v4.8h, v1.h[2] - fmla v15.8h, v4.8h, v1.h[3] - fmla v16.8h, v4.8h, v2.h[0] - fmla v17.8h, v4.8h, v2.h[1] - fmla v18.8h, v4.8h, v2.h[2] - fmla v19.8h, v4.8h, v2.h[3] - bne LoopLR LoopLREnd: diff --git a/source/backend/arm82/asm/arm64/low_memory/MNNPackedMatMulFP16_int8.S b/source/backend/arm82/asm/arm64/low_memory/MNNPackedMatMulFP16_int8.S index 790b02b78..0ca03121b 100644 --- a/source/backend/arm82/asm/arm64/low_memory/MNNPackedMatMulFP16_int8.S +++ b/source/backend/arm82/asm/arm64/low_memory/MNNPackedMatMulFP16_int8.S @@ -15,11 +15,10 @@ asm_function MNNPackedMatMulFP16_int8 //void MNNPackedMatMulFP16_int8(FLOAT16* C, const FLOAT16* A, const FLOAT16* B, const size_t* parameter, const FLOAT16* postParameters, const FLOAT16* bias, const FLOAT16* k, const FLOAT16* b); // x0: C, x1:A, x2:B, x3:parameter, x4: postParameters, x5:bias, x6: quant_alpha, x7: quant_bias -stp d14, d15, [sp, #-80]! +stp d14, d15, [sp, #-64]! stp d12, d13, [sp, #16] stp d10, d11, [sp, #32] stp d8, d9, [sp, #48] -stp x19, x20, [sp, #64] ldr x9, [x3, #8] // l ldr x10, [x3, #16] // h @@ -40,14 +39,12 @@ blt LH4 LH8: sub x14, x13, #128 -mov x19, x6 -mov x20, x7 LoopH: mov x15, x1 - ld1 {v4.8h, v5.8h}, [x19], #32 // alpha - ld1 {v6.8h, v7.8h}, [x20], #32 // bias - subs x12, x9, #2 - ld1 {v2.16b, v3.16b}, [x2], #32 + ld1 {v4.8h, v5.8h}, [x6], #32 // alpha + ld1 {v6.8h, v7.8h}, [x7], #32 // bias + subs x12, x9, #1 + ld1 {v2.16b}, [x2], #16 sxtl v0.8h, v2.8b sxtl2 v1.8h, v2.16b scvtf v0.8h, v0.8h @@ -76,60 +73,21 @@ LoopH: fmul v26.8h, v2.8h, v0.h[6] fmul v27.8h, v2.8h, v0.h[7] - ld1 {v1.4h}, [x15], #8 - fmul v16.8h, v1.8h, v1.h[0] - fmul v17.8h, v1.8h, v1.h[1] - fmul v18.8h, v1.8h, v1.h[2] - fmul v19.8h, v1.8h, v1.h[3] - fmul v28.8h, v2.8h, v1.h[0] - fmul v29.8h, v2.8h, v1.h[1] - fmul v30.8h, v2.8h, v1.h[2] - fmul v31.8h, v2.8h, v1.h[3] - - sxtl v0.8h, v3.8b - sxtl2 v1.8h, v3.16b - scvtf v0.8h, v0.8h - scvtf v1.8h, v1.8h - mov v2.8h, v7.8h - fmla v2.8h, v1.8h, v5.8h - mov v1.8h, v6.8h - fmla v1.8h, v0.8h, v4.8h - - ld1 {v0.8h}, [x15], #16 - fmla v8.8h, v1.8h, v0.h[0] - fmla v9.8h, v1.8h, v0.h[1] - fmla v10.8h, v1.8h, v0.h[2] - fmla v11.8h, v1.8h, v0.h[3] - fmla v12.8h, v1.8h, v0.h[4] - fmla v13.8h, v1.8h, v0.h[5] - fmla v14.8h, v1.8h, v0.h[6] - fmla v15.8h, v1.8h, v0.h[7] - - fmla v20.8h, v2.8h, v0.h[0] - fmla v21.8h, v2.8h, v0.h[1] - fmla v22.8h, v2.8h, v0.h[2] - fmla v23.8h, v2.8h, v0.h[3] - fmla v24.8h, v2.8h, v0.h[4] - fmla v25.8h, v2.8h, v0.h[5] - fmla v26.8h, v2.8h, v0.h[6] - fmla v27.8h, v2.8h, v0.h[7] - ld1 {v0.4h}, [x15], #8 - fmla v16.8h, v1.8h, v0.h[0] - fmla v17.8h, v1.8h, v0.h[1] - fmla v18.8h, v1.8h, v0.h[2] - fmla v19.8h, v1.8h, v0.h[3] - fmla v28.8h, v2.8h, v0.h[0] - fmla v29.8h, v2.8h, v0.h[1] - fmla v30.8h, v2.8h, v0.h[2] - fmla v31.8h, v2.8h, v0.h[3] + fmul v16.8h, v1.8h, v0.h[0] + fmul v17.8h, v1.8h, v0.h[1] + fmul v18.8h, v1.8h, v0.h[2] + fmul v19.8h, v1.8h, v0.h[3] + fmul v28.8h, v2.8h, v0.h[0] + fmul v29.8h, v2.8h, v0.h[1] + fmul v30.8h, v2.8h, v0.h[2] + fmul v31.8h, v2.8h, v0.h[3] beq LoopLEnd - LoopL2: - // ld1 {v3.8h, v4.8h}, [x2], #32 - subs x12, x12, #2 - ld1 {v2.16b, v3.16b}, [x2], #32 + LoopL1: + subs x12, x12, #1 + ld1 {v2.16b}, [x2], #16 sxtl v0.8h, v2.8b sxtl2 v1.8h, v2.16b scvtf v0.8h, v0.8h @@ -168,50 +126,11 @@ LoopH: fmla v30.8h, v2.8h, v0.h[2] fmla v31.8h, v2.8h, v0.h[3] - sxtl v0.8h, v3.8b - sxtl2 v1.8h, v3.16b - scvtf v0.8h, v0.8h - scvtf v1.8h, v1.8h - mov v2.8h, v7.8h - fmla v2.8h, v1.8h, v5.8h - mov v1.8h, v6.8h - fmla v1.8h, v0.8h, v4.8h - - ld1 {v0.8h}, [x15], #16 - fmla v8.8h, v1.8h, v0.h[0] - fmla v9.8h, v1.8h, v0.h[1] - fmla v10.8h, v1.8h, v0.h[2] - fmla v11.8h, v1.8h, v0.h[3] - fmla v12.8h, v1.8h, v0.h[4] - fmla v13.8h, v1.8h, v0.h[5] - fmla v14.8h, v1.8h, v0.h[6] - fmla v15.8h, v1.8h, v0.h[7] - - fmla v20.8h, v2.8h, v0.h[0] - fmla v21.8h, v2.8h, v0.h[1] - fmla v22.8h, v2.8h, v0.h[2] - fmla v23.8h, v2.8h, v0.h[3] - fmla v24.8h, v2.8h, v0.h[4] - fmla v25.8h, v2.8h, v0.h[5] - fmla v26.8h, v2.8h, v0.h[6] - fmla v27.8h, v2.8h, v0.h[7] - - ld1 {v0.4h}, [x15], #8 - fmla v16.8h, v1.8h, v0.h[0] - fmla v17.8h, v1.8h, v0.h[1] - fmla v18.8h, v1.8h, v0.h[2] - fmla v19.8h, v1.8h, v0.h[3] - fmla v28.8h, v2.8h, v0.h[0] - fmla v29.8h, v2.8h, v0.h[1] - fmla v30.8h, v2.8h, v0.h[2] - fmla v31.8h, v2.8h, v0.h[3] - bne LoopL2 + bne LoopL1 LoopLEnd: add x2, x2, x11 - sub x10, x10, #2 - cmp x10, #2 cbz x4, StoreLH8 @@ -309,32 +228,28 @@ LoopH: st1 {v12.8h, v13.8h, v14.8h, v15.8h}, [x0], #64 st1 {v16.8h, v17.8h, v18.8h, v19.8h}, [x0], x14 + sub x10, x10, #2 + st1 {v20.8h, v21.8h, v22.8h, v23.8h}, [x0], #64 st1 {v24.8h, v25.8h, v26.8h, v27.8h}, [x0], #64 st1 {v28.8h, v29.8h, v30.8h, v31.8h}, [x0], x14 + cmp x10, #2 bge LoopH LH4: cbz x10, End -mov x19, x6 -mov x20, x7 LoopHRemain: mov x15, x1 - subs x12, x9, #2 - ld1 {v20.8h}, [x19], #16 // alpha - ld1 {v21.8h}, [x20], #16 // bias - // ld1 {v3.8h}, [x2] - ld1 {v3.16b, v4.16b}, [x2], #32 - uzp1 v0.4s, v3.4s, v4.4s - sxtl v0.8h, v0.8b - sxtl2 v1.8h, v0.16b - scvtf v6.8h, v0.8h - scvtf v7.8h, v1.8h + subs x12, x9, #1 + ld1 {v20.8h}, [x6], #16 // alpha + ld1 {v21.8h}, [x7], #16 // bias + + ld1 {v3.16b}, [x2], #16 + sxtl v3.8h, v3.8b + scvtf v6.8h, v3.8h mov v3.8h, v21.8h - mov v4.8h, v21.8h fmla v3.8h, v6.8h, v20.8h - fmla v4.8h, v7.8h, v20.8h ld1 {v0.4h, v1.4h, v2.4h}, [x15], #24 fmul v8.8h, v3.8h, v0.h[0] @@ -350,35 +265,16 @@ LoopHRemain: fmul v18.8h, v3.8h, v2.h[2] fmul v19.8h, v3.8h, v2.h[3] - ld1 {v0.4h, v1.4h, v2.4h}, [x15], #24 - fmla v8.8h, v4.8h, v0.h[0] - fmla v9.8h, v4.8h, v0.h[1] - fmla v10.8h, v4.8h, v0.h[2] - fmla v11.8h, v4.8h, v0.h[3] - fmla v12.8h, v4.8h, v1.h[0] - fmla v13.8h, v4.8h, v1.h[1] - fmla v14.8h, v4.8h, v1.h[2] - fmla v15.8h, v4.8h, v1.h[3] - fmla v16.8h, v4.8h, v2.h[0] - fmla v17.8h, v4.8h, v2.h[1] - fmla v18.8h, v4.8h, v2.h[2] - fmla v19.8h, v4.8h, v2.h[3] - beq LoopLREnd LoopLR: - subs x12, x12, #2 - // ld1 {v3.8h}, [x2] - ld1 {v3.16b, v4.16b}, [x2], #32 - uzp1 v0.4s, v3.4s, v4.4s - sxtl v0.8h, v0.8b - sxtl2 v1.8h, v0.16b + subs x12, x12, #1 + ld1 {v3.16b}, [x2], #16 + sxtl v0.8h, v3.8b scvtf v6.8h, v0.8h - scvtf v7.8h, v1.8h mov v3.8h, v21.8h - mov v4.8h, v21.8h fmla v3.8h, v6.8h, v20.8h - fmla v4.8h, v7.8h, v20.8h + ld1 {v0.4h, v1.4h, v2.4h}, [x15], #24 fmla v8.8h, v3.8h, v0.h[0] fmla v9.8h, v3.8h, v0.h[1] @@ -393,20 +289,6 @@ LoopHRemain: fmla v18.8h, v3.8h, v2.h[2] fmla v19.8h, v3.8h, v2.h[3] - ld1 {v0.4h, v1.4h, v2.4h}, [x15], #24 - fmla v8.8h, v4.8h, v0.h[0] - fmla v9.8h, v4.8h, v0.h[1] - fmla v10.8h, v4.8h, v0.h[2] - fmla v11.8h, v4.8h, v0.h[3] - fmla v12.8h, v4.8h, v1.h[0] - fmla v13.8h, v4.8h, v1.h[1] - fmla v14.8h, v4.8h, v1.h[2] - fmla v15.8h, v4.8h, v1.h[3] - fmla v16.8h, v4.8h, v2.h[0] - fmla v17.8h, v4.8h, v2.h[1] - fmla v18.8h, v4.8h, v2.h[2] - fmla v19.8h, v4.8h, v2.h[3] - bne LoopLR LoopLREnd: @@ -465,15 +347,13 @@ LoopHRemain: st1 {v8.8h, v9.8h, v10.8h, v11.8h}, [x0], #64 st1 {v12.8h, v13.8h, v14.8h, v15.8h}, [x0], #64 st1 {v16.8h, v17.8h, v18.8h, v19.8h}, [x0] - sub x10, x10, #1 End: -ldp x19, x20, [sp, #64] ldp d8, d9, [sp, #48] ldp d10, d11, [sp, #32] ldp d12, d13, [sp, #16] -ldp d14, d15, [sp], #80 +ldp d14, d15, [sp], #64 ret diff --git a/source/backend/arm82/asm/arm64/low_memory/MNNPackedMatMulRemainFP16_int4.S b/source/backend/arm82/asm/arm64/low_memory/MNNPackedMatMulRemainFP16_int4.S index 8431ef578..0c93af680 100644 --- a/source/backend/arm82/asm/arm64/low_memory/MNNPackedMatMulRemainFP16_int4.S +++ b/source/backend/arm82/asm/arm64/low_memory/MNNPackedMatMulRemainFP16_int4.S @@ -2,7 +2,7 @@ // MNNPackedMatMulRemainFP16_int4.S // MNN // -// Created by MNN on 2023/05/22. +// Created by MNN on 2023/06/06. // Copyright © 2018, Alibaba Group Holding Limited // @@ -19,14 +19,17 @@ asm_function MNNPackedMatMulRemainFP16_int4 //Auto x0: C, x1:A, x2:B, x3:eSize, x4:parameter, x5:postParameters, x6:bias, x7: k, x8: b // parameter: {aStride, l, h, cStride, bExtraStride} ldr x8, [sp] // bias -stp d14, d15, [sp, #(-16 * 8)]! +stp d14, d15, [sp, #-128]! stp d12, d13, [sp, #16] stp d10, d11, [sp, #32] stp d8, d9, [sp, #48] stp x19, x20, [sp, #64] stp x21, x22, [sp, #80] stp x23, x24, [sp, #96] -stp x25, x26, [sp, #(16 * 7)] +stp x25, x26, [sp, #112] + +mov w22, #0x0f +dup v11.8b, w22 mov x22, x7 // alpha mov x23, x8 // bias @@ -67,148 +70,86 @@ LoopE8: sub x24, x7, #64 LoopH8x8: mov x15, x1 + subs x12, x9, #1 ld1 {v12.8h, v13.8h}, [x14], #32 // alpha - mov w17, #0x0f - dup v3.16b, w17 - mov w17, #8 - dup v4.16b, w17 ld1 {v14.8h, v15.8h}, [x25], #32 // bias - subs x12, x9, #2 - ld1 {v0.8h}, [x13], #16 - ushr v1.16b, v0.16b, #4 - and v2.16b, v0.16b, v3.16b - sub v1.16b, v1.16b, v4.16b - sub v2.16b, v2.16b, v4.16b - zip1 v10.16b, v1.16b, v2.16b - zip2 v11.16b, v1.16b, v2.16b - sxtl v1.8h, v10.8b - sxtl2 v2.8h, v10.16b - scvtf v1.8h, v1.8h - scvtf v2.8h, v2.8h - mov v8.8h, v14.8h - mov v9.8h, v15.8h - fmla v8.8h, v1.8h, v12.8h - fmla v9.8h, v2.8h, v13.8h - ld1 {v0.8h}, [x15], x11 - fmul v16.8h, v8.8h, v0.h[0] - fmul v17.8h, v8.8h, v0.h[1] - fmul v18.8h, v8.8h, v0.h[2] - fmul v19.8h, v8.8h, v0.h[3] - - fmul v20.8h, v9.8h, v0.h[0] - fmul v21.8h, v9.8h, v0.h[1] - fmul v22.8h, v9.8h, v0.h[2] - fmul v23.8h, v9.8h, v0.h[3] - - fmul v24.8h, v8.8h, v0.h[4] - fmul v25.8h, v8.8h, v0.h[5] - fmul v26.8h, v8.8h, v0.h[6] - fmul v27.8h, v8.8h, v0.h[7] - - fmul v28.8h, v9.8h, v0.h[4] - fmul v29.8h, v9.8h, v0.h[5] - fmul v30.8h, v9.8h, v0.h[6] - fmul v31.8h, v9.8h, v0.h[7] - - sxtl v1.8h, v11.8b - sxtl2 v2.8h, v11.16b + ld1 {v0.8b}, [x13], #8 + ushr v1.8b, v0.8b, #4 + and v2.8b, v0.8b, v11.8b + zip1 v3.8b, v1.8b, v2.8b + zip2 v4.8b, v1.8b, v2.8b + + sxtl v1.8h, v3.8b + sxtl v2.8h, v4.8b scvtf v1.8h, v1.8h scvtf v2.8h, v2.8h - mov v8.8h, v14.8h - mov v9.8h, v15.8h - fmla v8.8h, v1.8h, v12.8h - fmla v9.8h, v2.8h, v13.8h + mov v3.8h, v14.8h + mov v4.8h, v15.8h + fmla v3.8h, v1.8h, v12.8h + fmla v4.8h, v2.8h, v13.8h ld1 {v0.8h}, [x15], x11 - fmla v16.8h, v8.8h, v0.h[0] - fmla v17.8h, v8.8h, v0.h[1] - fmla v18.8h, v8.8h, v0.h[2] - fmla v19.8h, v8.8h, v0.h[3] - - fmla v20.8h, v9.8h, v0.h[0] - fmla v21.8h, v9.8h, v0.h[1] - fmla v22.8h, v9.8h, v0.h[2] - fmla v23.8h, v9.8h, v0.h[3] - - fmla v24.8h, v8.8h, v0.h[4] - fmla v25.8h, v8.8h, v0.h[5] - fmla v26.8h, v8.8h, v0.h[6] - fmla v27.8h, v8.8h, v0.h[7] - - fmla v28.8h, v9.8h, v0.h[4] - fmla v29.8h, v9.8h, v0.h[5] - fmla v30.8h, v9.8h, v0.h[6] - fmla v31.8h, v9.8h, v0.h[7] + fmul v16.8h, v3.8h, v0.h[0] + fmul v17.8h, v3.8h, v0.h[1] + fmul v18.8h, v3.8h, v0.h[2] + fmul v19.8h, v3.8h, v0.h[3] + + fmul v20.8h, v4.8h, v0.h[0] + fmul v21.8h, v4.8h, v0.h[1] + fmul v22.8h, v4.8h, v0.h[2] + fmul v23.8h, v4.8h, v0.h[3] + + fmul v24.8h, v3.8h, v0.h[4] + fmul v25.8h, v3.8h, v0.h[5] + fmul v26.8h, v3.8h, v0.h[6] + fmul v27.8h, v3.8h, v0.h[7] + + fmul v28.8h, v4.8h, v0.h[4] + fmul v29.8h, v4.8h, v0.h[5] + fmul v30.8h, v4.8h, v0.h[6] + fmul v31.8h, v4.8h, v0.h[7] beq LoopLEnd LoopL: - subs x12, x12, #2 - ld1 {v0.8h}, [x13], #16 - ushr v1.16b, v0.16b, #4 - and v2.16b, v0.16b, v3.16b - sub v1.16b, v1.16b, v4.16b - sub v2.16b, v2.16b, v4.16b - zip1 v10.16b, v1.16b, v2.16b - zip2 v11.16b, v1.16b, v2.16b - sxtl v1.8h, v10.8b - sxtl2 v2.8h, v10.16b - scvtf v1.8h, v1.8h - scvtf v2.8h, v2.8h - mov v8.8h, v14.8h - mov v9.8h, v15.8h - fmla v8.8h, v1.8h, v12.8h - fmla v9.8h, v2.8h, v13.8h + ld1 {v0.8b}, [x13], #8 + ushr v1.8b, v0.8b, #4 + and v2.8b, v0.8b, v11.8b + zip1 v3.8b, v1.8b, v2.8b + zip2 v4.8b, v1.8b, v2.8b + + sxtl v1.8h, v3.8b + sxtl v2.8h, v4.8b - ld1 {v0.8h}, [x15], x11 - fmla v16.8h, v8.8h, v0.h[0] - fmla v17.8h, v8.8h, v0.h[1] - fmla v18.8h, v8.8h, v0.h[2] - fmla v19.8h, v8.8h, v0.h[3] - - fmla v20.8h, v9.8h, v0.h[0] - fmla v21.8h, v9.8h, v0.h[1] - fmla v22.8h, v9.8h, v0.h[2] - fmla v23.8h, v9.8h, v0.h[3] - - fmla v24.8h, v8.8h, v0.h[4] - fmla v25.8h, v8.8h, v0.h[5] - fmla v26.8h, v8.8h, v0.h[6] - fmla v27.8h, v8.8h, v0.h[7] - - fmla v28.8h, v9.8h, v0.h[4] - fmla v29.8h, v9.8h, v0.h[5] - fmla v30.8h, v9.8h, v0.h[6] - fmla v31.8h, v9.8h, v0.h[7] - - sxtl v1.8h, v11.8b - sxtl2 v2.8h, v11.16b scvtf v1.8h, v1.8h scvtf v2.8h, v2.8h - mov v8.8h, v14.8h - mov v9.8h, v15.8h - fmla v8.8h, v1.8h, v12.8h - fmla v9.8h, v2.8h, v13.8h + mov v3.8h, v14.8h + mov v4.8h, v15.8h + fmla v3.8h, v1.8h, v12.8h + fmla v4.8h, v2.8h, v13.8h + ld1 {v0.8h}, [x15], x11 - fmla v16.8h, v8.8h, v0.h[0] - fmla v17.8h, v8.8h, v0.h[1] - fmla v18.8h, v8.8h, v0.h[2] - fmla v19.8h, v8.8h, v0.h[3] - - fmla v20.8h, v9.8h, v0.h[0] - fmla v21.8h, v9.8h, v0.h[1] - fmla v22.8h, v9.8h, v0.h[2] - fmla v23.8h, v9.8h, v0.h[3] - - fmla v24.8h, v8.8h, v0.h[4] - fmla v25.8h, v8.8h, v0.h[5] - fmla v26.8h, v8.8h, v0.h[6] - fmla v27.8h, v8.8h, v0.h[7] - - fmla v28.8h, v9.8h, v0.h[4] - fmla v29.8h, v9.8h, v0.h[5] - fmla v30.8h, v9.8h, v0.h[6] - fmla v31.8h, v9.8h, v0.h[7] + fmla v16.8h, v3.8h, v0.h[0] + fmla v17.8h, v3.8h, v0.h[1] + fmla v18.8h, v3.8h, v0.h[2] + fmla v19.8h, v3.8h, v0.h[3] + + fmla v20.8h, v4.8h, v0.h[0] + fmla v21.8h, v4.8h, v0.h[1] + fmla v22.8h, v4.8h, v0.h[2] + fmla v23.8h, v4.8h, v0.h[3] + + fmla v24.8h, v3.8h, v0.h[4] + fmla v25.8h, v3.8h, v0.h[5] + fmla v26.8h, v3.8h, v0.h[6] + fmla v27.8h, v3.8h, v0.h[7] + + fmla v28.8h, v4.8h, v0.h[4] + fmla v29.8h, v4.8h, v0.h[5] + fmla v30.8h, v4.8h, v0.h[6] + fmla v31.8h, v4.8h, v0.h[7] + + subs x12, x12, #1 bne LoopL LoopLEnd: @@ -289,11 +230,23 @@ LoopE8: LoopHRemain: mov x15, x1 subs x12, x9, #1 - ld1 {v3.8h}, [x13] + + ld1 {v12.8h}, [x14] // alpha + ld1 {v14.8h}, [x25] // bias + + ld1 {v0.8b}, [x13], #8 + ushr v1.8b, v0.8b, #4 + and v2.8b, v0.8b, v11.8b + zip1 v3.8b, v1.8b, v2.8b + + sxtl v1.8h, v3.8b + scvtf v1.8h, v1.8h + mov v3.8h, v14.8h + fmla v3.8h, v1.8h, v12.8h + ld1 {v0.8h}, [x15], x11 fmul v16.8h, v3.8h, v0.h[0] fmul v17.8h, v3.8h, v0.h[1] - add x13, x13, #32 fmul v18.8h, v3.8h, v0.h[2] fmul v19.8h, v3.8h, v0.h[3] fmul v20.8h, v3.8h, v0.h[4] @@ -303,13 +256,21 @@ LoopE8: beq LoopLREnd LoopLR: - ld1 {v3.8h}, [x13] + ld1 {v0.8b}, [x13], #8 + ushr v1.8b, v0.8b, #4 + and v2.8b, v0.8b, v11.8b + zip1 v3.8b, v1.8b, v2.8b + + sxtl v1.8h, v3.8b + scvtf v1.8h, v1.8h + mov v3.8h, v14.8h + fmla v3.8h, v1.8h, v12.8h + ld1 {v0.8h}, [x15], x11 fmla v16.8h, v3.8h, v0.h[0] fmla v17.8h, v3.8h, v0.h[1] fmla v18.8h, v3.8h, v0.h[2] fmla v19.8h, v3.8h, v0.h[3] - add x13, x13, #32 fmla v20.8h, v3.8h, v0.h[4] fmla v21.8h, v3.8h, v0.h[5] @@ -380,137 +341,70 @@ blt E1 E4LH8: E4LoopH8: mov x15, x1 - ld1 {v24.8h, v25.8h}, [x14], #32 // alpha - mov w17, #0x0f - dup v30.16b, w17 - mov w17, #8 - dup v31.16b, w17 - ld1 {v26.8h, v27.8h}, [x25], #32 // bias - subs x12, x9, #2 - ld1 {v0.8h}, [x13], #16 - ushr v1.16b, v0.16b, #4 - and v2.16b, v0.16b, v30.16b - sub v1.16b, v1.16b, v31.16b - sub v2.16b, v2.16b, v31.16b - zip1 v3.16b, v1.16b, v2.16b - zip2 v4.16b, v1.16b, v2.16b - sxtl v0.8h, v3.8b - sxtl2 v1.8h, v3.16b + subs x12, x9, #1 + + ld1 {v12.8h, v13.8h}, [x14], #32 // alpha + ld1 {v14.8h, v15.8h}, [x25], #32 // bias + + ld1 {v0.8b}, [x13], #8 + ushr v1.8b, v0.8b, #4 + and v2.8b, v0.8b, v11.8b + zip1 v3.8b, v1.8b, v2.8b + zip2 v4.8b, v1.8b, v2.8b + + sxtl v1.8h, v3.8b sxtl v2.8h, v4.8b - sxtl2 v3.8h, v4.16b - scvtf v12.8h, v0.8h - scvtf v13.8h, v1.8h - scvtf v14.8h, v2.8h - scvtf v15.8h, v3.8h - mov v8.8h, v26.8h - mov v9.8h, v27.8h - fmla v8.8h, v12.8h, v24.8h - fmla v9.8h, v13.8h, v25.8h - mov v10.8h, v26.8h - mov v11.8h, v27.8h - fmla v10.8h, v14.8h, v24.8h - fmla v11.8h, v15.8h, v25.8h + scvtf v1.8h, v1.8h + scvtf v2.8h, v2.8h + mov v3.8h, v14.8h + mov v4.8h, v15.8h + fmla v3.8h, v1.8h, v12.8h + fmla v4.8h, v2.8h, v13.8h ld1 {v0.4h}, [x15], x11 - ld1 {v1.4h}, [x15], x11 - fmul v16.8h, v8.8h, v0.h[0] - fmul v17.8h, v8.8h, v0.h[1] - fmul v18.8h, v8.8h, v0.h[2] - fmul v19.8h, v8.8h, v0.h[3] - - fmul v20.8h, v9.8h, v0.h[0] - fmul v21.8h, v9.8h, v0.h[1] - fmul v22.8h, v9.8h, v0.h[2] - fmul v23.8h, v9.8h, v0.h[3] - - fmla v16.8h, v10.8h, v1.h[0] - fmla v17.8h, v10.8h, v1.h[1] - fmla v18.8h, v10.8h, v1.h[2] - fmla v19.8h, v10.8h, v1.h[3] - - fmla v20.8h, v11.8h, v1.h[0] - fmla v21.8h, v11.8h, v1.h[1] - fmla v22.8h, v11.8h, v1.h[2] - fmla v23.8h, v11.8h, v1.h[3] + fmul v16.8h, v3.8h, v0.h[0] + fmul v17.8h, v3.8h, v0.h[1] + fmul v18.8h, v3.8h, v0.h[2] + fmul v19.8h, v3.8h, v0.h[3] + + fmul v20.8h, v4.8h, v0.h[0] + fmul v21.8h, v4.8h, v0.h[1] + fmul v22.8h, v4.8h, v0.h[2] + fmul v23.8h, v4.8h, v0.h[3] beq E4LoopLEnd E4LoopL: -#if 0 - subs x12, x12, #1 - ld1 {v0.4h}, [x13], #8 + + ld1 {v0.8b}, [x13], #8 ushr v1.8b, v0.8b, #4 - and v2.8b, v0.8b, v30.8b - sub v1.8b, v1.8b, v31.8b - sub v2.8b, v2.8b, v31.8b - zip1 v8.8b, v1.8b, v2.8b - zip2 v9.8b, v1.8b, v2.8b - sxtl v10.8h, v8.8b - sxtl v11.8h, v9.8b - scvtf v12.8h, v10.8h - scvtf v13.8h, v11.8h - mov v8.8h, v26.8h - mov v9.8h, v27.8h - fmla v8.8h, v12.8h, v24.8h - fmla v9.8h, v13.8h, v25.8h - ld1 {v0.4h}, [x15], x11 - fmla v16.8h, v8.8h, v0.h[0] - fmla v17.8h, v8.8h, v0.h[1] - fmla v18.8h, v8.8h, v0.h[2] - fmla v19.8h, v8.8h, v0.h[3] - - fmla v20.8h, v9.8h, v0.h[0] - fmla v21.8h, v9.8h, v0.h[1] - fmla v22.8h, v9.8h, v0.h[2] - fmla v23.8h, v9.8h, v0.h[3] -#else - subs x12, x12, #2 - ld1 {v0.8h}, [x13], #16 - ushr v1.16b, v0.16b, #4 - and v2.16b, v0.16b, v30.16b - sub v1.16b, v1.16b, v31.16b - sub v2.16b, v2.16b, v31.16b - zip1 v3.16b, v1.16b, v2.16b - zip2 v4.16b, v1.16b, v2.16b - sxtl v0.8h, v3.8b - sxtl2 v1.8h, v3.16b + and v2.8b, v0.8b, v11.8b + zip1 v3.8b, v1.8b, v2.8b + zip2 v4.8b, v1.8b, v2.8b + + sxtl v1.8h, v3.8b sxtl v2.8h, v4.8b - sxtl2 v3.8h, v4.16b - scvtf v12.8h, v0.8h - scvtf v13.8h, v1.8h - scvtf v14.8h, v2.8h - scvtf v15.8h, v3.8h - mov v8.8h, v26.8h - mov v9.8h, v27.8h - fmla v8.8h, v12.8h, v24.8h - fmla v9.8h, v13.8h, v25.8h - mov v10.8h, v26.8h - mov v11.8h, v27.8h - fmla v10.8h, v14.8h, v24.8h - fmla v11.8h, v15.8h, v25.8h + + scvtf v1.8h, v1.8h + scvtf v2.8h, v2.8h + mov v3.8h, v14.8h + mov v4.8h, v15.8h + fmla v3.8h, v1.8h, v12.8h + fmla v4.8h, v2.8h, v13.8h ld1 {v0.4h}, [x15], x11 - ld1 {v1.4h}, [x15], x11 - fmla v16.8h, v8.8h, v0.h[0] - fmla v17.8h, v8.8h, v0.h[1] - fmla v18.8h, v8.8h, v0.h[2] - fmla v19.8h, v8.8h, v0.h[3] - - fmla v20.8h, v9.8h, v0.h[0] - fmla v21.8h, v9.8h, v0.h[1] - fmla v22.8h, v9.8h, v0.h[2] - fmla v23.8h, v9.8h, v0.h[3] - - fmla v16.8h, v10.8h, v1.h[0] - fmla v17.8h, v10.8h, v1.h[1] - fmla v18.8h, v10.8h, v1.h[2] - fmla v19.8h, v10.8h, v1.h[3] - - fmla v20.8h, v11.8h, v1.h[0] - fmla v21.8h, v11.8h, v1.h[1] - fmla v22.8h, v11.8h, v1.h[2] - fmla v23.8h, v11.8h, v1.h[3] -#endif + + fmla v16.8h, v3.8h, v0.h[0] + fmla v17.8h, v3.8h, v0.h[1] + fmla v18.8h, v3.8h, v0.h[2] + fmla v19.8h, v3.8h, v0.h[3] + + fmla v20.8h, v4.8h, v0.h[0] + fmla v21.8h, v4.8h, v0.h[1] + fmla v22.8h, v4.8h, v0.h[2] + fmla v23.8h, v4.8h, v0.h[3] + + subs x12, x12, #1 bne E4LoopL E4LoopLEnd: @@ -562,81 +456,47 @@ blt E1 E4LH4: cbz x8, E4End mov x15, x1 - ld1 {v4.8h}, [x14], #16 // alpha - // mov v4.d[1], v4.d[0] - mov w17, #0x0f - dup v30.8b, w17 - mov w17, #8 - dup v31.8b, w17 - ld1 {v14.8h}, [x25], #16 // bias - // mov v14.d[1], v14.d[0] - subs x12, x9, #2 - // load 16xint4 to 16xfloat - ld1 {v3.8h}, [x13] - // 01234567xxxxxxx89... => 0123456789... - uzp1 v0.4s, v3.4s, v3.4s + subs x12, x9, #1 + + ld1 {v12.8h}, [x14] // alpha + ld1 {v14.8h}, [x25] // bias + + ld1 {v0.8b}, [x13], #8 ushr v1.8b, v0.8b, #4 - and v2.8b, v0.8b, v30.8b - sub v1.8b, v1.8b, v31.8b - sub v2.8b, v2.8b, v31.8b - zip1 v8.8b, v1.8b, v2.8b - zip2 v9.8b, v1.8b, v2.8b - sxtl v10.8h, v8.8b - sxtl v11.8h, v9.8b - scvtf v12.8h, v10.8h - scvtf v13.8h, v11.8h - mov v8.8h, v14.8h - mov v9.8h, v14.8h - fmla v8.8h, v12.8h, v4.8h - fmla v9.8h, v13.8h, v4.8h - // st1 {v8.8h, v9.8h}, [x0] - // b End + and v2.8b, v0.8b, v11.8b + zip1 v3.8b, v1.8b, v2.8b + + sxtl v1.8h, v3.8b + scvtf v1.8h, v1.8h + mov v3.8h, v14.8h + fmla v3.8h, v1.8h, v12.8h ld1 {v0.4h}, [x15], x11 - fmul v16.8h, v8.8h, v0.h[0] - fmul v17.8h, v8.8h, v0.h[1] - fmul v18.8h, v8.8h, v0.h[2] - fmul v19.8h, v8.8h, v0.h[3] - ld1 {v1.4h}, [x15], x11 - fmla v16.8h, v9.8h, v1.h[0] - fmla v17.8h, v9.8h, v1.h[1] - fmla v18.8h, v9.8h, v1.h[2] - fmla v19.8h, v9.8h, v1.h[3] - add x13, x13, #16 + fmul v16.8h, v3.8h, v0.h[0] + fmul v17.8h, v3.8h, v0.h[1] + fmul v18.8h, v3.8h, v0.h[2] + fmul v19.8h, v3.8h, v0.h[3] beq E4LoopLREnd E4LoopLR: - ld1 {v3.8h}, [x13] - uzp1 v0.4s, v3.4s, v3.4s + ld1 {v0.8b}, [x13], #8 ushr v1.8b, v0.8b, #4 - and v2.8b, v0.8b, v30.8b - sub v1.8b, v1.8b, v31.8b - sub v2.8b, v2.8b, v31.8b - zip1 v8.8b, v1.8b, v2.8b - zip2 v9.8b, v1.8b, v2.8b - sxtl v10.8h, v8.8b - sxtl v11.8h, v9.8b - scvtf v12.8h, v10.8h - scvtf v13.8h, v11.8h - mov v8.8h, v14.8h - mov v9.8h, v14.8h - fmla v8.8h, v12.8h, v4.8h - fmla v9.8h, v13.8h, v4.8h + and v2.8b, v0.8b, v11.8b + zip1 v3.8b, v1.8b, v2.8b + + sxtl v1.8h, v3.8b + scvtf v1.8h, v1.8h + mov v3.8h, v14.8h + fmla v3.8h, v1.8h, v12.8h ld1 {v0.4h}, [x15], x11 - fmla v16.8h, v8.8h, v0.h[0] - fmla v17.8h, v8.8h, v0.h[1] - fmla v18.8h, v8.8h, v0.h[2] - fmla v19.8h, v8.8h, v0.h[3] - ld1 {v1.4h}, [x15], x11 - fmla v16.8h, v9.8h, v1.h[0] - fmla v17.8h, v9.8h, v1.h[1] - fmla v18.8h, v9.8h, v1.h[2] - fmla v19.8h, v9.8h, v1.h[3] - add x13, x13, #16 - - subs x12, x12, #2 + fmla v16.8h, v3.8h, v0.h[0] + fmla v17.8h, v3.8h, v0.h[1] + fmla v18.8h, v3.8h, v0.h[2] + fmla v19.8h, v3.8h, v0.h[3] + + subs x12, x12, #1 bne E4LoopLR E4LoopLREnd: @@ -688,79 +548,54 @@ LoopE1: E1LH8: E1LoopH8: mov x15, x1 - ld1 {v24.8h, v25.8h}, [x14], #32 // alpha - mov w17, #0x0f - dup v30.16b, w17 - mov w17, #8 - dup v31.16b, w17 - ld1 {v26.8h, v27.8h}, [x25], #32 // bias - subs x12, x9, #2 - ld1 {v0.8h}, [x13], #16 - ushr v1.16b, v0.16b, #4 - and v2.16b, v0.16b, v30.16b - sub v1.16b, v1.16b, v31.16b - sub v2.16b, v2.16b, v31.16b - zip1 v3.16b, v1.16b, v2.16b - zip2 v4.16b, v1.16b, v2.16b - sxtl v0.8h, v3.8b - sxtl2 v1.8h, v3.16b + subs x12, x9, #1 + + ld1 {v12.8h, v13.8h}, [x14], #32 // alpha + ld1 {v14.8h, v15.8h}, [x25], #32 // bias + + ld1 {v0.8b}, [x13], #8 + ushr v1.8b, v0.8b, #4 + and v2.8b, v0.8b, v11.8b + zip1 v3.8b, v1.8b, v2.8b + zip2 v4.8b, v1.8b, v2.8b + + sxtl v1.8h, v3.8b sxtl v2.8h, v4.8b - sxtl2 v3.8h, v4.16b - scvtf v12.8h, v0.8h - scvtf v13.8h, v1.8h - scvtf v14.8h, v2.8h - scvtf v15.8h, v3.8h - mov v8.8h, v26.8h - mov v9.8h, v27.8h - fmla v8.8h, v12.8h, v24.8h - fmla v9.8h, v13.8h, v25.8h - mov v10.8h, v26.8h - mov v11.8h, v27.8h - fmla v10.8h, v14.8h, v24.8h - fmla v11.8h, v15.8h, v25.8h + scvtf v1.8h, v1.8h + scvtf v2.8h, v2.8h + mov v3.8h, v14.8h + mov v4.8h, v15.8h + fmla v3.8h, v1.8h, v12.8h + fmla v4.8h, v2.8h, v13.8h ld1 {v0.h}[0], [x15], x11 - ld1 {v0.h}[1], [x15], x11 - fmul v16.8h, v8.8h, v0.h[0] - fmul v20.8h, v9.8h, v0.h[0] - - fmla v16.8h, v10.8h, v0.h[1] - fmla v20.8h, v11.8h, v0.h[1] + fmul v16.8h, v3.8h, v0.h[0] + fmul v20.8h, v4.8h, v0.h[0] beq E1LoopLEnd E1LoopL: - subs x12, x12, #2 - ld1 {v0.16b}, [x13], #16 - ushr v1.16b, v0.16b, #4 - and v2.16b, v0.16b, v30.16b - sub v1.16b, v1.16b, v31.16b - sub v2.16b, v2.16b, v31.16b - zip1 v3.16b, v1.16b, v2.16b - zip2 v4.16b, v1.16b, v2.16b - sxtl v0.8h, v3.8b - sxtl2 v1.8h, v3.16b + + ld1 {v0.8b}, [x13], #8 + ushr v1.8b, v0.8b, #4 + and v2.8b, v0.8b, v11.8b + zip1 v3.8b, v1.8b, v2.8b + zip2 v4.8b, v1.8b, v2.8b + + sxtl v1.8h, v3.8b sxtl v2.8h, v4.8b - sxtl2 v3.8h, v4.16b - mov v8.8h, v26.8h - mov v9.8h, v27.8h - scvtf v12.8h, v0.8h - scvtf v13.8h, v1.8h - mov v10.8h, v26.8h - mov v11.8h, v27.8h - scvtf v14.8h, v2.8h + scvtf v1.8h, v1.8h + scvtf v2.8h, v2.8h + mov v3.8h, v14.8h + mov v4.8h, v15.8h + fmla v3.8h, v1.8h, v12.8h + fmla v4.8h, v2.8h, v13.8h + ld1 {v0.h}[0], [x15], x11 - scvtf v15.8h, v3.8h - fmla v8.8h, v12.8h, v24.8h - fmla v9.8h, v13.8h, v25.8h - ld1 {v0.h}[1], [x15], x11 - fmla v10.8h, v14.8h, v24.8h - fmla v11.8h, v15.8h, v25.8h - - fmla v16.8h, v8.8h, v0.h[0] - fmla v20.8h, v9.8h, v0.h[0] - fmla v16.8h, v10.8h, v0.h[1] - fmla v20.8h, v11.8h, v0.h[1] + fmla v16.8h, v3.8h, v0.h[0] + fmla v20.8h, v4.8h, v0.h[0] + + subs x12, x12, #1 bne E1LoopL E1LoopLEnd: @@ -793,18 +628,38 @@ LoopE1: cbz x8, E1End mov x15, x1 subs x12, x9, #1 - ld1 {v3.8h}, [x13] + + ld1 {v12.8h}, [x14] // alpha + ld1 {v14.8h}, [x25] // bias + + ld1 {v0.8b}, [x13], #8 + ushr v1.8b, v0.8b, #4 + and v2.8b, v0.8b, v11.8b + zip1 v3.8b, v1.8b, v2.8b + + sxtl v1.8h, v3.8b + scvtf v1.8h, v1.8h + mov v3.8h, v14.8h + fmla v3.8h, v1.8h, v12.8h + ld1 {v0.h}[0], [x15], x11 fmul v16.8h, v3.8h, v0.h[0] - add x13, x13, #32 beq E1LoopLREnd E1LoopLR: - ld1 {v3.8h}, [x13] + + ld1 {v0.8b}, [x13], #8 + ushr v1.8b, v0.8b, #4 + and v2.8b, v0.8b, v11.8b + zip1 v3.8b, v1.8b, v2.8b + + sxtl v1.8h, v3.8b + scvtf v1.8h, v1.8h + mov v3.8h, v14.8h + fmla v3.8h, v1.8h, v12.8h ld1 {v0.h}[0], [x15], x11 fmla v16.8h, v3.8h, v0.h[0] - add x13, x13, #32 subs x12, x12, #1 bne E1LoopLR @@ -831,7 +686,7 @@ LoopE1: End: -ldp x25, x26, [sp, #(16 * 7)] +ldp x25, x26, [sp, #112] ldp x23, x24, [sp, #96] ldp x21, x22, [sp, #80] ldp x19, x20, [sp, #64] diff --git a/source/backend/arm82/asm/arm64/low_memory/MNNPackedMatMulRemainFP16_int8.S b/source/backend/arm82/asm/arm64/low_memory/MNNPackedMatMulRemainFP16_int8.S index d1868f96c..0760af42b 100644 --- a/source/backend/arm82/asm/arm64/low_memory/MNNPackedMatMulRemainFP16_int8.S +++ b/source/backend/arm82/asm/arm64/low_memory/MNNPackedMatMulRemainFP16_int8.S @@ -19,13 +19,14 @@ asm_function MNNPackedMatMulRemainFP16_int8 //Auto x0: C, x1:A, x2:B, x3:eSize, x4:parameter, x5:postParameters, x6:bias, x7: k, x8: b // parameter: {aStride, l, h, cStride, bExtraStride} ldr x8, [sp] // bias -stp d14, d15, [sp, #-112]! +stp d14, d15, [sp, #-128]! stp d12, d13, [sp, #16] stp d10, d11, [sp, #32] stp d8, d9, [sp, #48] stp x19, x20, [sp, #64] stp x21, x22, [sp, #80] stp x23, x24, [sp, #96] +stp x25, x26, [sp, #112] mov x22, x7 // alpha mov x23, x8 // bias @@ -58,7 +59,7 @@ LoopE8: mov x21, x0 mov x13, x2 mov x14, x22 - mov x16, x23 + mov x25, x23 LH8: cmp x8, #2 @@ -66,132 +67,74 @@ LoopE8: sub x24, x7, #64 LoopH8x8: mov x15, x1 + subs x12, x9, #1 ld1 {v12.8h, v13.8h}, [x14], #32 // alpha - ld1 {v14.8h, v15.8h}, [x16], #32 // bias - subs x12, x9, #2 - ld1 {v10.16b, v11.16b}, [x13], #32 + ld1 {v14.8h, v15.8h}, [x25], #32 // bias + ld1 {v10.16b}, [x13], #16 sxtl v1.8h, v10.8b sxtl2 v2.8h, v10.16b scvtf v1.8h, v1.8h scvtf v2.8h, v2.8h - mov v8.8h, v14.8h - mov v9.8h, v15.8h - fmla v8.8h, v1.8h, v12.8h - fmla v9.8h, v2.8h, v13.8h + mov v3.8h, v14.8h + mov v4.8h, v15.8h + fmla v3.8h, v1.8h, v12.8h + fmla v4.8h, v2.8h, v13.8h ld1 {v0.8h}, [x15], x11 - fmul v16.8h, v8.8h, v0.h[0] - fmul v17.8h, v8.8h, v0.h[1] - fmul v18.8h, v8.8h, v0.h[2] - fmul v19.8h, v8.8h, v0.h[3] - - fmul v20.8h, v9.8h, v0.h[0] - fmul v21.8h, v9.8h, v0.h[1] - fmul v22.8h, v9.8h, v0.h[2] - fmul v23.8h, v9.8h, v0.h[3] - - fmul v24.8h, v8.8h, v0.h[4] - fmul v25.8h, v8.8h, v0.h[5] - fmul v26.8h, v8.8h, v0.h[6] - fmul v27.8h, v8.8h, v0.h[7] - - fmul v28.8h, v9.8h, v0.h[4] - fmul v29.8h, v9.8h, v0.h[5] - fmul v30.8h, v9.8h, v0.h[6] - fmul v31.8h, v9.8h, v0.h[7] - - sxtl v1.8h, v11.8b - sxtl2 v2.8h, v11.16b - scvtf v1.8h, v1.8h - scvtf v2.8h, v2.8h - mov v8.8h, v14.8h - mov v9.8h, v15.8h - fmla v8.8h, v1.8h, v12.8h - fmla v9.8h, v2.8h, v13.8h + fmul v16.8h, v3.8h, v0.h[0] + fmul v17.8h, v3.8h, v0.h[1] + fmul v18.8h, v3.8h, v0.h[2] + fmul v19.8h, v3.8h, v0.h[3] - ld1 {v0.8h}, [x15], x11 - fmla v16.8h, v8.8h, v0.h[0] - fmla v17.8h, v8.8h, v0.h[1] - fmla v18.8h, v8.8h, v0.h[2] - fmla v19.8h, v8.8h, v0.h[3] - - fmla v20.8h, v9.8h, v0.h[0] - fmla v21.8h, v9.8h, v0.h[1] - fmla v22.8h, v9.8h, v0.h[2] - fmla v23.8h, v9.8h, v0.h[3] - - fmla v24.8h, v8.8h, v0.h[4] - fmla v25.8h, v8.8h, v0.h[5] - fmla v26.8h, v8.8h, v0.h[6] - fmla v27.8h, v8.8h, v0.h[7] - - fmla v28.8h, v9.8h, v0.h[4] - fmla v29.8h, v9.8h, v0.h[5] - fmla v30.8h, v9.8h, v0.h[6] - fmla v31.8h, v9.8h, v0.h[7] + fmul v20.8h, v4.8h, v0.h[0] + fmul v21.8h, v4.8h, v0.h[1] + fmul v22.8h, v4.8h, v0.h[2] + fmul v23.8h, v4.8h, v0.h[3] + + fmul v24.8h, v3.8h, v0.h[4] + fmul v25.8h, v3.8h, v0.h[5] + fmul v26.8h, v3.8h, v0.h[6] + fmul v27.8h, v3.8h, v0.h[7] + + fmul v28.8h, v4.8h, v0.h[4] + fmul v29.8h, v4.8h, v0.h[5] + fmul v30.8h, v4.8h, v0.h[6] + fmul v31.8h, v4.8h, v0.h[7] beq LoopLEnd LoopL: - subs x12, x12, #2 - ld1 {v10.16b, v11.16b}, [x13], #32 + ld1 {v10.16b}, [x13], #16 sxtl v1.8h, v10.8b sxtl2 v2.8h, v10.16b scvtf v1.8h, v1.8h scvtf v2.8h, v2.8h - mov v8.8h, v14.8h - mov v9.8h, v15.8h - fmla v8.8h, v1.8h, v12.8h - fmla v9.8h, v2.8h, v13.8h + mov v3.8h, v14.8h + mov v4.8h, v15.8h + fmla v3.8h, v1.8h, v12.8h + fmla v4.8h, v2.8h, v13.8h ld1 {v0.8h}, [x15], x11 - fmla v16.8h, v8.8h, v0.h[0] - fmla v17.8h, v8.8h, v0.h[1] - fmla v18.8h, v8.8h, v0.h[2] - fmla v19.8h, v8.8h, v0.h[3] - - fmla v20.8h, v9.8h, v0.h[0] - fmla v21.8h, v9.8h, v0.h[1] - fmla v22.8h, v9.8h, v0.h[2] - fmla v23.8h, v9.8h, v0.h[3] - - fmla v24.8h, v8.8h, v0.h[4] - fmla v25.8h, v8.8h, v0.h[5] - fmla v26.8h, v8.8h, v0.h[6] - fmla v27.8h, v8.8h, v0.h[7] - - fmla v28.8h, v9.8h, v0.h[4] - fmla v29.8h, v9.8h, v0.h[5] - fmla v30.8h, v9.8h, v0.h[6] - fmla v31.8h, v9.8h, v0.h[7] - - sxtl v1.8h, v11.8b - sxtl2 v2.8h, v11.16b - scvtf v1.8h, v1.8h - scvtf v2.8h, v2.8h - mov v8.8h, v14.8h - mov v9.8h, v15.8h - fmla v8.8h, v1.8h, v12.8h - fmla v9.8h, v2.8h, v13.8h - ld1 {v0.8h}, [x15], x11 - fmla v16.8h, v8.8h, v0.h[0] - fmla v17.8h, v8.8h, v0.h[1] - fmla v18.8h, v8.8h, v0.h[2] - fmla v19.8h, v8.8h, v0.h[3] - - fmla v20.8h, v9.8h, v0.h[0] - fmla v21.8h, v9.8h, v0.h[1] - fmla v22.8h, v9.8h, v0.h[2] - fmla v23.8h, v9.8h, v0.h[3] - - fmla v24.8h, v8.8h, v0.h[4] - fmla v25.8h, v8.8h, v0.h[5] - fmla v26.8h, v8.8h, v0.h[6] - fmla v27.8h, v8.8h, v0.h[7] - - fmla v28.8h, v9.8h, v0.h[4] - fmla v29.8h, v9.8h, v0.h[5] - fmla v30.8h, v9.8h, v0.h[6] - fmla v31.8h, v9.8h, v0.h[7] + fmla v16.8h, v3.8h, v0.h[0] + fmla v17.8h, v3.8h, v0.h[1] + fmla v18.8h, v3.8h, v0.h[2] + fmla v19.8h, v3.8h, v0.h[3] + + fmla v20.8h, v4.8h, v0.h[0] + fmla v21.8h, v4.8h, v0.h[1] + fmla v22.8h, v4.8h, v0.h[2] + fmla v23.8h, v4.8h, v0.h[3] + + fmla v24.8h, v3.8h, v0.h[4] + fmla v25.8h, v3.8h, v0.h[5] + fmla v26.8h, v3.8h, v0.h[6] + fmla v27.8h, v3.8h, v0.h[7] + + fmla v28.8h, v4.8h, v0.h[4] + fmla v29.8h, v4.8h, v0.h[5] + fmla v30.8h, v4.8h, v0.h[6] + fmla v31.8h, v4.8h, v0.h[7] + + subs x12, x12, #1 bne LoopL LoopLEnd: @@ -272,11 +215,19 @@ LoopE8: LoopHRemain: mov x15, x1 subs x12, x9, #1 - ld1 {v3.8h}, [x13] + + ld1 {v12.8h}, [x14] // alpha + ld1 {v14.8h}, [x25] // bias + + ld1 {v10.16b}, [x13], #16 + sxtl v1.8h, v10.8b + scvtf v1.8h, v1.8h + mov v3.8h, v14.8h + fmla v3.8h, v1.8h, v12.8h + ld1 {v0.8h}, [x15], x11 fmul v16.8h, v3.8h, v0.h[0] fmul v17.8h, v3.8h, v0.h[1] - add x13, x13, #32 fmul v18.8h, v3.8h, v0.h[2] fmul v19.8h, v3.8h, v0.h[3] fmul v20.8h, v3.8h, v0.h[4] @@ -286,13 +237,17 @@ LoopE8: beq LoopLREnd LoopLR: - ld1 {v3.8h}, [x13] + ld1 {v10.16b}, [x13], #16 + sxtl v1.8h, v10.8b + scvtf v1.8h, v1.8h + mov v3.8h, v14.8h + fmla v3.8h, v1.8h, v12.8h + ld1 {v0.8h}, [x15], x11 fmla v16.8h, v3.8h, v0.h[0] fmla v17.8h, v3.8h, v0.h[1] fmla v18.8h, v3.8h, v0.h[2] fmla v19.8h, v3.8h, v0.h[3] - add x13, x13, #32 fmla v20.8h, v3.8h, v0.h[4] fmla v21.8h, v3.8h, v0.h[5] @@ -355,7 +310,7 @@ blt E1 mov x21, x0 mov x13, x2 mov x14, x22 - mov x16, x23 + mov x25, x23 cmp x8, #2 blt E4LH4 @@ -363,92 +318,57 @@ blt E1 E4LH8: E4LoopH8: mov x15, x1 - ld1 {v24.8h, v25.8h}, [x14], #32 // alpha - ld1 {v26.8h, v27.8h}, [x16], #32 // bias - subs x12, x9, #2 - ld1 {v3.16b, v4.16b}, [x13], #32 - sxtl v0.8h, v3.8b - sxtl2 v1.8h, v3.16b - sxtl v2.8h, v4.8b - sxtl2 v3.8h, v4.16b - scvtf v12.8h, v0.8h - scvtf v13.8h, v1.8h - scvtf v14.8h, v2.8h - scvtf v15.8h, v3.8h - mov v8.8h, v26.8h - mov v9.8h, v27.8h - fmla v8.8h, v12.8h, v24.8h - fmla v9.8h, v13.8h, v25.8h - mov v10.8h, v26.8h - mov v11.8h, v27.8h - fmla v10.8h, v14.8h, v24.8h - fmla v11.8h, v15.8h, v25.8h + subs x12, x9, #1 + + ld1 {v12.8h, v13.8h}, [x14], #32 // alpha + ld1 {v14.8h, v15.8h}, [x25], #32 // bias + ld1 {v10.16b}, [x13], #16 + sxtl v1.8h, v10.8b + sxtl2 v2.8h, v10.16b + scvtf v1.8h, v1.8h + scvtf v2.8h, v2.8h + mov v3.8h, v14.8h + mov v4.8h, v15.8h + fmla v3.8h, v1.8h, v12.8h + fmla v4.8h, v2.8h, v13.8h ld1 {v0.4h}, [x15], x11 - ld1 {v1.4h}, [x15], x11 - fmul v16.8h, v8.8h, v0.h[0] - fmul v17.8h, v8.8h, v0.h[1] - fmul v18.8h, v8.8h, v0.h[2] - fmul v19.8h, v8.8h, v0.h[3] - - fmul v20.8h, v9.8h, v0.h[0] - fmul v21.8h, v9.8h, v0.h[1] - fmul v22.8h, v9.8h, v0.h[2] - fmul v23.8h, v9.8h, v0.h[3] - - fmla v16.8h, v10.8h, v1.h[0] - fmla v17.8h, v10.8h, v1.h[1] - fmla v18.8h, v10.8h, v1.h[2] - fmla v19.8h, v10.8h, v1.h[3] - - fmla v20.8h, v11.8h, v1.h[0] - fmla v21.8h, v11.8h, v1.h[1] - fmla v22.8h, v11.8h, v1.h[2] - fmla v23.8h, v11.8h, v1.h[3] + fmul v16.8h, v3.8h, v0.h[0] + fmul v17.8h, v3.8h, v0.h[1] + fmul v18.8h, v3.8h, v0.h[2] + fmul v19.8h, v3.8h, v0.h[3] + + fmul v20.8h, v4.8h, v0.h[0] + fmul v21.8h, v4.8h, v0.h[1] + fmul v22.8h, v4.8h, v0.h[2] + fmul v23.8h, v4.8h, v0.h[3] beq E4LoopLEnd E4LoopL: - subs x12, x12, #2 - ld1 {v3.16b, v4.16b}, [x13], #32 - sxtl v0.8h, v3.8b - sxtl2 v1.8h, v3.16b - sxtl v2.8h, v4.8b - sxtl2 v3.8h, v4.16b - scvtf v12.8h, v0.8h - scvtf v13.8h, v1.8h - scvtf v14.8h, v2.8h - scvtf v15.8h, v3.8h - mov v8.8h, v26.8h - mov v9.8h, v27.8h - fmla v8.8h, v12.8h, v24.8h - fmla v9.8h, v13.8h, v25.8h - mov v10.8h, v26.8h - mov v11.8h, v27.8h - fmla v10.8h, v14.8h, v24.8h - fmla v11.8h, v15.8h, v25.8h + ld1 {v10.16b}, [x13], #16 + sxtl v1.8h, v10.8b + sxtl2 v2.8h, v10.16b + scvtf v1.8h, v1.8h + scvtf v2.8h, v2.8h + mov v3.8h, v14.8h + mov v4.8h, v15.8h + fmla v3.8h, v1.8h, v12.8h + fmla v4.8h, v2.8h, v13.8h ld1 {v0.4h}, [x15], x11 - ld1 {v1.4h}, [x15], x11 - fmla v16.8h, v8.8h, v0.h[0] - fmla v17.8h, v8.8h, v0.h[1] - fmla v18.8h, v8.8h, v0.h[2] - fmla v19.8h, v8.8h, v0.h[3] - - fmla v20.8h, v9.8h, v0.h[0] - fmla v21.8h, v9.8h, v0.h[1] - fmla v22.8h, v9.8h, v0.h[2] - fmla v23.8h, v9.8h, v0.h[3] - - fmla v16.8h, v10.8h, v1.h[0] - fmla v17.8h, v10.8h, v1.h[1] - fmla v18.8h, v10.8h, v1.h[2] - fmla v19.8h, v10.8h, v1.h[3] - - fmla v20.8h, v11.8h, v1.h[0] - fmla v21.8h, v11.8h, v1.h[1] - fmla v22.8h, v11.8h, v1.h[2] - fmla v23.8h, v11.8h, v1.h[3] + + fmla v16.8h, v3.8h, v0.h[0] + fmla v17.8h, v3.8h, v0.h[1] + fmla v18.8h, v3.8h, v0.h[2] + fmla v19.8h, v3.8h, v0.h[3] + + fmla v20.8h, v4.8h, v0.h[0] + fmla v21.8h, v4.8h, v0.h[1] + fmla v22.8h, v4.8h, v0.h[2] + fmla v23.8h, v4.8h, v0.h[3] + + subs x12, x12, #1 bne E4LoopL E4LoopLEnd: @@ -500,64 +420,39 @@ blt E1 E4LH4: cbz x8, E4End mov x15, x1 - ld1 {v4.8h}, [x14], #16 // alpha - // mov v4.d[1], v4.d[0] - ld1 {v14.8h}, [x16], #16 // bias - // mov v14.d[1], v14.d[0] - subs x12, x9, #2 - // load 16xint4 to 16xfloat - ld1 {v3.4s, v4.4s}, [x13] - uzp1 v0.4s, v3.4s, v4.4s - sxtl v10.8h, v0.8b - sxtl2 v11.8h, v0.16b - scvtf v12.8h, v10.8h - scvtf v13.8h, v11.8h - mov v8.8h, v14.8h - mov v9.8h, v14.8h - fmla v8.8h, v12.8h, v4.8h - fmla v9.8h, v13.8h, v4.8h - // st1 {v8.8h, v9.8h}, [x0] - // b End + subs x12, x9, #1 + + ld1 {v12.8h}, [x14] // alpha + ld1 {v14.8h}, [x25] // bias + + ld1 {v10.16b}, [x13], #16 + sxtl v1.8h, v10.8b + scvtf v1.8h, v1.8h + mov v3.8h, v14.8h + fmla v3.8h, v1.8h, v12.8h ld1 {v0.4h}, [x15], x11 - fmul v16.8h, v8.8h, v0.h[0] - fmul v17.8h, v8.8h, v0.h[1] - fmul v18.8h, v8.8h, v0.h[2] - fmul v19.8h, v8.8h, v0.h[3] - ld1 {v1.4h}, [x15], x11 - fmla v16.8h, v9.8h, v1.h[0] - fmla v17.8h, v9.8h, v1.h[1] - fmla v18.8h, v9.8h, v1.h[2] - fmla v19.8h, v9.8h, v1.h[3] - add x13, x13, #32 + fmul v16.8h, v3.8h, v0.h[0] + fmul v17.8h, v3.8h, v0.h[1] + fmul v18.8h, v3.8h, v0.h[2] + fmul v19.8h, v3.8h, v0.h[3] beq E4LoopLREnd E4LoopLR: - ld1 {v3.4s, v4.4s}, [x13] - uzp1 v0.4s, v3.4s, v4.4s - sxtl v10.8h, v0.8b - sxtl2 v11.8h, v0.16b - scvtf v12.8h, v10.8h - scvtf v13.8h, v11.8h - mov v8.8h, v14.8h - mov v9.8h, v14.8h - fmla v8.8h, v12.8h, v4.8h - fmla v9.8h, v13.8h, v4.8h + ld1 {v10.16b}, [x13], #16 + sxtl v1.8h, v10.8b + scvtf v1.8h, v1.8h + mov v3.8h, v14.8h + fmla v3.8h, v1.8h, v12.8h ld1 {v0.4h}, [x15], x11 - fmla v16.8h, v8.8h, v0.h[0] - fmla v17.8h, v8.8h, v0.h[1] - fmla v18.8h, v8.8h, v0.h[2] - fmla v19.8h, v8.8h, v0.h[3] - ld1 {v1.4h}, [x15], x11 - fmla v16.8h, v9.8h, v1.h[0] - fmla v17.8h, v9.8h, v1.h[1] - fmla v18.8h, v9.8h, v1.h[2] - fmla v19.8h, v9.8h, v1.h[3] - add x13, x13, #16 - - subs x12, x12, #2 + fmla v16.8h, v3.8h, v0.h[0] + fmla v17.8h, v3.8h, v0.h[1] + fmla v18.8h, v3.8h, v0.h[2] + fmla v19.8h, v3.8h, v0.h[3] + + subs x12, x12, #1 bne E4LoopLR E4LoopLREnd: @@ -601,7 +496,7 @@ LoopE1: mov x21, x0 mov x13, x2 mov x14, x22 - mov x16, x23 + mov x25, x23 cmp x8, #2 blt E1LH4 @@ -609,64 +504,42 @@ LoopE1: E1LH8: E1LoopH8: mov x15, x1 - ld1 {v24.8h, v25.8h}, [x14], #32 // alpha - ld1 {v26.8h, v27.8h}, [x16], #32 // bias - subs x12, x9, #2 - ld1 {v3.16b, v4.16b}, [x13], #32 - sxtl v0.8h, v3.8b - sxtl2 v1.8h, v3.16b - sxtl v2.8h, v4.8b - sxtl2 v3.8h, v4.16b - scvtf v12.8h, v0.8h - scvtf v13.8h, v1.8h - scvtf v14.8h, v2.8h - scvtf v15.8h, v3.8h - mov v8.8h, v26.8h - mov v9.8h, v27.8h - fmla v8.8h, v12.8h, v24.8h - fmla v9.8h, v13.8h, v25.8h - mov v10.8h, v26.8h - mov v11.8h, v27.8h - fmla v10.8h, v14.8h, v24.8h - fmla v11.8h, v15.8h, v25.8h + subs x12, x9, #1 - ld1 {v0.h}[0], [x15], x11 - ld1 {v0.h}[1], [x15], x11 - fmul v16.8h, v8.8h, v0.h[0] - fmul v20.8h, v9.8h, v0.h[0] + ld1 {v12.8h, v13.8h}, [x14], #32 // alpha + ld1 {v14.8h, v15.8h}, [x25], #32 // bias + ld1 {v10.16b}, [x13], #16 + sxtl v1.8h, v10.8b + sxtl2 v2.8h, v10.16b + scvtf v1.8h, v1.8h + scvtf v2.8h, v2.8h + mov v3.8h, v14.8h + mov v4.8h, v15.8h + fmla v3.8h, v1.8h, v12.8h + fmla v4.8h, v2.8h, v13.8h - fmla v16.8h, v10.8h, v0.h[1] - fmla v20.8h, v11.8h, v0.h[1] + ld1 {v0.h}[0], [x15], x11 + fmul v16.8h, v3.8h, v0.h[0] + fmul v20.8h, v4.8h, v0.h[0] beq E1LoopLEnd E1LoopL: - subs x12, x12, #2 - ld1 {v3.16b, v4.16b}, [x13], #32 - sxtl v0.8h, v3.8b - sxtl2 v1.8h, v3.16b - sxtl v2.8h, v4.8b - sxtl2 v3.8h, v4.16b - scvtf v12.8h, v0.8h - scvtf v13.8h, v1.8h - scvtf v14.8h, v2.8h - scvtf v15.8h, v3.8h - mov v8.8h, v26.8h - mov v9.8h, v27.8h - fmla v8.8h, v12.8h, v24.8h - fmla v9.8h, v13.8h, v25.8h - mov v10.8h, v26.8h - mov v11.8h, v27.8h - fmla v10.8h, v14.8h, v24.8h - fmla v11.8h, v15.8h, v25.8h + ld1 {v10.16b}, [x13], #16 + sxtl v1.8h, v10.8b + sxtl2 v2.8h, v10.16b + scvtf v1.8h, v1.8h + scvtf v2.8h, v2.8h + mov v3.8h, v14.8h + mov v4.8h, v15.8h + fmla v3.8h, v1.8h, v12.8h + fmla v4.8h, v2.8h, v13.8h ld1 {v0.h}[0], [x15], x11 - ld1 {v0.h}[1], [x15], x11 - fmla v16.8h, v8.8h, v0.h[0] - fmla v20.8h, v9.8h, v0.h[0] + fmla v16.8h, v3.8h, v0.h[0] + fmla v20.8h, v4.8h, v0.h[0] - fmla v16.8h, v10.8h, v0.h[1] - fmla v20.8h, v11.8h, v0.h[1] + subs x12, x12, #1 bne E1LoopL E1LoopLEnd: @@ -699,18 +572,28 @@ LoopE1: cbz x8, E1End mov x15, x1 subs x12, x9, #1 - ld1 {v3.8h}, [x13] + + ld1 {v12.8h}, [x14] // alpha + ld1 {v14.8h}, [x25] // bias + ld1 {v10.16b}, [x13], #16 + sxtl v1.8h, v10.8b + scvtf v1.8h, v1.8h + mov v3.8h, v14.8h + fmla v3.8h, v1.8h, v12.8h + ld1 {v0.h}[0], [x15], x11 fmul v16.8h, v3.8h, v0.h[0] - add x13, x13, #32 beq E1LoopLREnd E1LoopLR: - ld1 {v3.8h}, [x13] + ld1 {v10.16b}, [x13], #16 + sxtl v1.8h, v10.8b + scvtf v1.8h, v1.8h + mov v3.8h, v14.8h + fmla v3.8h, v1.8h, v12.8h ld1 {v0.h}[0], [x15], x11 fmla v16.8h, v3.8h, v0.h[0] - add x13, x13, #32 subs x12, x12, #1 bne E1LoopLR @@ -737,13 +620,14 @@ LoopE1: End: +ldp x25, x26, [sp, #112] ldp x23, x24, [sp, #96] ldp x21, x22, [sp, #80] ldp x19, x20, [sp, #64] ldp d8, d9, [sp, #48] ldp d10, d11, [sp, #32] ldp d12, d13, [sp, #16] -ldp d14, d15, [sp], #112 +ldp d14, d15, [sp], #128 ret diff --git a/source/backend/cpu/CPUBackend.cpp b/source/backend/cpu/CPUBackend.cpp index 8b07acfce..0a9637377 100644 --- a/source/backend/cpu/CPUBackend.cpp +++ b/source/backend/cpu/CPUBackend.cpp @@ -224,15 +224,20 @@ CPUBackend::CPUBackend(const CPURuntime* runtime, BackendConfig::PrecisionMode p } else { mDynamicAllocator.reset(new EagerBufferAllocator(defaultAlloc)); } + mCurrentDynamicAllocator = mDynamicAllocator.get(); mStaticAllocator = runtime->mStaticAllocator; mPrecisionMode = precision; mCoreFunctions = MNNGetCoreFunctions(); mInt8CoreFunctions = MNNGetInt8CoreFunctions(); - mCache = new CPUResizeCache; + mCacheGroup.resize(2); + for (int i=0; ireset(); + mCurrentDynamicAllocator->reset(); +} +bool CPUBackend::onSelectDynamicAllocator(int index, int maxIndex) { + if (maxIndex > 2) { + return false; + } + if (maxIndex == 2 && mDynamicAllocatorBackup.get() == nullptr) { + if (mRuntime->getAllocatorType() == Runtime::Allocator_Defer) { + mDynamicAllocatorBackup.reset(new DeferBufferAllocator(BufferAllocator::Allocator::createRecurse(mStaticAllocator.get()))); + } else { + mDynamicAllocatorBackup.reset(new EagerBufferAllocator(BufferAllocator::Allocator::createRecurse(mStaticAllocator.get()))); + } + } + if (1 == index) { + mCurrentDynamicAllocator = mDynamicAllocatorBackup.get(); + } else { + mCurrentDynamicAllocator = mDynamicAllocator.get(); + } + mCache = mCacheGroup[index].get(); + return true; } ErrorCode CPUBackend::onResizeEnd() { getCache()->release(); - return mDynamicAllocator->compute(); + return mCurrentDynamicAllocator->compute(); } Backend::MemObj* CPUBackend::allocBuffer(size_t size, Tensor* dest, StorageType storageType) { - auto originMem = TensorUtils::getDescribe(dest)->mem.get(); + auto originMem = TensorUtils::getDescribeOrigin(dest)->mem.get(); if (nullptr != originMem) { if (static_cast(originMem)->getSize() >= size) { return originMem; } else { - TensorUtils::getDescribe(dest)->mem.reset(nullptr); + TensorUtils::getDescribeOrigin(dest)->mem = nullptr; } } // MNN_PRINT("Acquire size = %d\n", size); @@ -279,11 +303,11 @@ Backend::MemObj* CPUBackend::allocBuffer(size_t size, Tensor* dest, StorageType break; } case DYNAMIC: { - chunk = mDynamicAllocator->alloc(size, false); + chunk = mCurrentDynamicAllocator->alloc(size, false); break; } case DYNAMIC_SEPERATE: { - chunk = mDynamicAllocator->alloc(size, true); + chunk = mCurrentDynamicAllocator->alloc(size, true); break; } default: @@ -301,7 +325,7 @@ Backend::MemObj* CPUBackend::allocBuffer(size_t size, Tensor* dest, StorageType if (storageType == STATIC) { res = new CPUMemObj(mStaticAllocator.get(), chunk, size); } else { - res = new CPUMemObj(mDynamicAllocator.get(), chunk, size); + res = new CPUMemObj(mCurrentDynamicAllocator, chunk, size); chunk.attach(dest); } if (chunk.ptr()) { @@ -440,7 +464,7 @@ const Runtime* CPUBackend::getRuntime() { bool CPUBackend::onClearBuffer() { mCache->reset(); - mDynamicAllocator->release(true); + mCurrentDynamicAllocator->release(true); return true; } @@ -520,6 +544,7 @@ extern void registerBF16Backend(); extern void registerArm82RuntimeCreator(); #endif void registerCPURuntimeCreator() { + MNNCoreFunctionInit(); CPUBackend::initCreatorMap(); registerCPUOps(); #ifdef MNN_SUPPORT_BF16 @@ -529,7 +554,6 @@ void registerCPURuntimeCreator() { registerArm82RuntimeCreator(); #endif // TODO: Merge _initCoreFunction MNNFunctionInit and cpuinfo_arm_init - MNNCoreFunctionInit(); MNNInsertExtraRuntimeCreator(MNN_FORWARD_CPU, new CPURuntimeCreator); }; } // namespace MNN diff --git a/source/backend/cpu/CPUBackend.hpp b/source/backend/cpu/CPUBackend.hpp index b1894219e..ef481b354 100644 --- a/source/backend/cpu/CPUBackend.hpp +++ b/source/backend/cpu/CPUBackend.hpp @@ -78,6 +78,8 @@ class CPUBackend : public Backend { // Return sizeDivide, scheduleNumber aligned memory std::pair multiThreadDivide(int size) const; + virtual bool onSelectDynamicAllocator(int index, int maxIndex) override; + public: virtual MemObj* onAcquire(const Tensor* nativeTensor, StorageType storageType) override; virtual bool onClearBuffer() override; @@ -117,7 +119,7 @@ class CPUBackend : public Backend { } BufferAllocator* getBufferAllocator(bool defer_allocator = true) const { - return mDynamicAllocator.get(); + return mCurrentDynamicAllocator; } BackendConfig::MemoryMode memoryMode() const { @@ -147,11 +149,14 @@ class CPUBackend : public Backend { private: std::shared_ptr mStaticAllocator; std::shared_ptr mDynamicAllocator; + std::shared_ptr mDynamicAllocatorBackup; CPURuntime* mRuntime; BackendConfig::PrecisionMode mPrecisionMode; BackendConfig::MemoryMode mMemory; static std::map* gCreator; CPUResizeCache* mCache; + std::vector> mCacheGroup; + BufferAllocator* mCurrentDynamicAllocator = nullptr; }; /** execution cast wrapper. insert tensor cast dynamic. */ class CastWrapExecution : public Execution { diff --git a/source/backend/cpu/CPUBinary.cpp b/source/backend/cpu/CPUBinary.cpp index 73e018561..953bbb7d0 100644 --- a/source/backend/cpu/CPUBinary.cpp +++ b/source/backend/cpu/CPUBinary.cpp @@ -105,24 +105,14 @@ MNNBinaryExecute CPUBinary::selectForFloat(int type) { return execute>; case BinaryOpOperation_FLOORMOD: return execute>; + case BinaryOpOperation_NOTEQUAL: + return execute>; case BinaryOpOperation_POW: return execute>; case BinaryOpOperation_ATAN2: return execute>; case BinaryOpOperation_MOD: return execute>; - case BinaryOpOperation_GREATER: - return execute>; - case BinaryOpOperation_LESS: - return execute>; - case BinaryOpOperation_LESS_EQUAL: - return execute>; - case BinaryOpOperation_GREATER_EQUAL: - return execute>; - case BinaryOpOperation_EQUAL: - return execute>; - case BinaryOpOperation_NOTEQUAL: - return execute>; default: MNN_ASSERT(false); break; @@ -138,42 +128,14 @@ MNNBinaryExecute CPUBinary::selectForInt(int type) { switch (type) { case BinaryOpOperation_MUL: return execute>; - case BinaryOpOperation_ADD: - return execute>; - case BinaryOpOperation_SUB: - return execute>; case BinaryOpOperation_REALDIV: return execute>; - case BinaryOpOperation_MINIMUM: - return execute>; - break; - case BinaryOpOperation_MAXIMUM: - return execute>; - break; - case BinaryOpOperation_GREATER: - return execute>; - break; - case BinaryOpOperation_LESS: - return execute>; - break; - case BinaryOpOperation_LESS_EQUAL: - return execute>; - break; - case BinaryOpOperation_GREATER_EQUAL: - return execute>; - break; - case BinaryOpOperation_EQUAL: - return execute>; - break; case BinaryOpOperation_FLOORDIV: return execute>; break; case BinaryOpOperation_FLOORMOD: return execute>; break; - case BinaryOpOperation_SquaredDifference: - return execute>; - break; case BinaryOpOperation_LOGICALOR: return execute>; break; diff --git a/source/backend/cpu/CPUConvolution.cpp b/source/backend/cpu/CPUConvolution.cpp index 07c59450f..511623299 100644 --- a/source/backend/cpu/CPUConvolution.cpp +++ b/source/backend/cpu/CPUConvolution.cpp @@ -235,9 +235,9 @@ class CPUConvInt8Creator : public CPUBackend::Creator { #ifdef MNN_USE_ONEDNN return OneDNNConvInt8::create(backend, convOp, inputs, outputs); #endif - auto res = CPUConvolution::makeResourceInt8(backend, convOp); + auto core = static_cast(backend)->functions(); + auto res = CPUConvolution::makeResourceInt8(backend, convOp, core->pack); #ifdef MNN_USE_SPARSE_COMPUTE - auto core = static_cast(backend)->int8Functions(); if (static_cast(backend)->functions()->pack == 4 && convOp->sparseParameter() && SparseConvInt8TiledExecutor::shouldUseSparse(convOp)) { return new SparseConvInt8TiledExecutor(backend, convOp, res); } diff --git a/source/backend/cpu/CPUConvolution.hpp b/source/backend/cpu/CPUConvolution.hpp index b43bd01e1..d79c3ee73 100644 --- a/source/backend/cpu/CPUConvolution.hpp +++ b/source/backend/cpu/CPUConvolution.hpp @@ -43,7 +43,6 @@ class CPUConvolution : public Execution { struct ResourceDequantizeInfo { int bits = 32; std::shared_ptr mScaleBias; - std::vector mLowBitWeightMap; }; struct Resource { std::shared_ptr mWeight; diff --git a/source/backend/cpu/CPUConvolutionDepthwise.cpp b/source/backend/cpu/CPUConvolutionDepthwise.cpp index c4f97fd46..a3b129fa2 100644 --- a/source/backend/cpu/CPUConvolutionDepthwise.cpp +++ b/source/backend/cpu/CPUConvolutionDepthwise.cpp @@ -15,7 +15,6 @@ #include "backend/cpu/compute/CommonOptFunction.h" #include "backend/cpu/compute/ConvOpt.h" #include "backend/cpu/compute/ConvolutionDepthwise3x3.hpp" -#include "core/OpCommonUtils.hpp" namespace MNN { CPUConvolutionDepthwise::FloatExecution::FloatExecution(const Convolution2DCommon* common, Backend* b, @@ -261,22 +260,12 @@ class CPUConvolutionDepthwiseCreator : public CPUBackend::Creator { int originWeightSize = 0; int originBiasSize = 0; std::shared_ptr quanCommon; - std::unique_ptr externalWeightTensor, externalBiasTensor; if (nullptr != conv2d->quanParameter()) { quanCommon = ConvolutionCommon::load(conv2d, backend, true); // Back to float originWeight = quanCommon->weightFloat.get(); originWeightSize = quanCommon->weightFloat.size(); } - if (USE_EXTERNAL_DATA(conv2d)) { - bool res = OpCommonUtils::loadConvData(backend, op, externalWeightTensor, externalBiasTensor, originWeightSize, originBiasSize); - if (!res) { - MNN_ERROR("%s load external weight or bias failed.", op->name()->c_str()); - return nullptr; - } - originWeight = externalWeightTensor->host(); - originBias = externalBiasTensor->host(); - } if (nullptr == originWeight) { originWeight = conv2d->weight()->data(); originWeightSize = conv2d->weight()->size(); diff --git a/source/backend/cpu/CPUDeconvolution.cpp b/source/backend/cpu/CPUDeconvolution.cpp index efae94e4b..9968e6198 100644 --- a/source/backend/cpu/CPUDeconvolution.cpp +++ b/source/backend/cpu/CPUDeconvolution.cpp @@ -55,29 +55,10 @@ CPUDeconvolutionCommon::CPUDeconvolutionCommon(const Tensor* input, const Op* co return; } ::memset(mBias->host(), 0, mBias->length(0) * core->bytes); - if (USE_EXTERNAL_DATA(conv2D)) { - auto external = conv2D->external(); - auto offset = external->Get(0) + external->Get(1); - auto bytes = external->Get(2); - if (core->bytes == 4) { - OpCommonUtils::loadExternalData(backend(), mBias->host(), offset, bytes); - } else { - int biasSize = static_cast(bytes / sizeof(float)); - std::unique_ptr externalBiasTensor(Tensor::createDevice({biasSize})); - auto status = backend()->onAcquireBuffer(externalBiasTensor.get(), Backend::STATIC); - if (!status) { - MNN_ERROR("Out of memory when externalBiasTensor is acquired in CPUDeconvolutionCommon.\n"); - return; - } - OpCommonUtils::loadExternalData(backend(), externalBiasTensor->host(), offset, bytes); - core->MNNFp32ToLowp(externalBiasTensor->host(), mBias->host(), biasSize); - } + if (core->bytes == 4) { + ::memcpy(mBias->host(), conv2D->bias()->data(), conv2D->bias()->size() * sizeof(float)); } else { - if (core->bytes == 4) { - ::memcpy(mBias->host(), conv2D->bias()->data(), conv2D->bias()->size() * sizeof(float)); - } else { - core->MNNFp32ToLowp(conv2D->bias()->data(), mBias->host(), conv2D->bias()->size()); - } + core->MNNFp32ToLowp(conv2D->bias()->data(), mBias->host(), conv2D->bias()->size()); } } @@ -189,23 +170,10 @@ CPUDeconvolution::CPUDeconvolution(const Tensor* input, const Op* convOp, Backen auto biasPtr = _bias.data(); auto scalePtr = _scale.data(); - if (USE_EXTERNAL_DATA(conv2d) && conv2d->quanParameter() == nullptr) { - auto bytes = conv2d->external()->Get(1); - tempWeightSize = static_cast(bytes / sizeof(float)); - externalWeightTensor.reset(Tensor::createDevice({tempWeightSize})); - auto status = backend->onAcquireBuffer(externalWeightTensor.get(), Backend::STATIC); - if (!status) { - MNN_ERROR("Out of memory when externalWeightTensor is acquired in CPUDeconvolution.\n"); - return; - } - OpCommonUtils::loadExternalData(backend, externalWeightTensor->host(), conv2d->external()->Get(0), bytes); - tempWeight = externalWeightTensor->host(); + if (ModeInt8) { + ConvolutionCommon::getConvInt8Parameters(conv2d, quanCommon, backend, quanWeightInt8, tempWeightSize, scalePtr, biasPtr); } else { - if (ModeInt8) { - ConvolutionCommon::getConvInt8Parameters(conv2d, quanCommon, backend, quanWeightInt8, tempWeightSize, scalePtr, biasPtr); - } else { - ConvolutionCommon::getConvParameters(&quanCommon, backend, conv2d, &tempWeight, &tempWeightSize); - } + ConvolutionCommon::getConvParameters(&quanCommon, backend, conv2d, &tempWeight, &tempWeightSize); } bool success = backend->onAcquireBuffer(mWeight.get(), Backend::STATIC) && @@ -363,7 +331,7 @@ ErrorCode CPUDeconvolutionOrigin::onResize(const std::vector& inputs, c // tempInput->buffer().host = (uint8_t*)inputPtr; needReleaseTempInput = false; - TensorUtils::getDescribe(tempInput.get())->mem.reset(new CPUMemObj(nullptr, TensorUtils::getDescribe(input)->mem->chunk(), 0)); + TensorUtils::getDescribeOrigin(tempInput.get())->mem = new CPUMemObj(nullptr, TensorUtils::getDescribeOrigin(input)->mem->chunk(), 0); mMatMul->onEncode({tempInput.get(), inputs[1]}, {mTempOutput.get()}); } auto threadNumber = ((CPUBackend*)backend())->threadNumber(); diff --git a/source/backend/cpu/CPUDeconvolution.hpp b/source/backend/cpu/CPUDeconvolution.hpp index 468748b91..750fc4816 100644 --- a/source/backend/cpu/CPUDeconvolution.hpp +++ b/source/backend/cpu/CPUDeconvolution.hpp @@ -10,10 +10,10 @@ #define CPUDeconvolution_hpp #include "CPUConvolution.hpp" +#include "compute/CommonOptFunction.h" #include "compute/StrassenMatmulComputor.hpp" #include "compute/GemmInt8Executor.hpp" #include "core/TensorUtils.hpp" - namespace MNN { class CPUDeconvolutionBasic : public CPUConvolution { public: @@ -44,7 +44,8 @@ class CPUDeconvolutionOrigin : public CPUDeconvolutionBasic { const auto weightDataPtr = weight->host(); auto conv2d = convOp->main_as_Convolution2D(); auto common = conv2d->common(); - mResource = CPUConvolution::makeResourceInt8(backend(), conv2d); + auto pack = static_cast(b)->functions()->pack; + mResource = CPUConvolution::makeResourceInt8(backend(), conv2d, pack); CPUConvolution::MutableResourceInt8 mutableResource(mResource, b); auto core = static_cast(b)->int8Functions(); auto gemmKernel = core->Int8GemmKernel; diff --git a/source/backend/cpu/CPUDynamicQuant.cpp b/source/backend/cpu/CPUDynamicQuant.cpp new file mode 100644 index 000000000..508d58627 --- /dev/null +++ b/source/backend/cpu/CPUDynamicQuant.cpp @@ -0,0 +1,73 @@ +// +// CPULayerNorm.cpp +// MNN +// +// Created by MNN on 2020/07/15. +// Copyright © 2018, Alibaba Group Holding Limited +// + +#include +#include "backend/cpu/CPUDynamicQuant.hpp" +#include "backend/cpu/CPUBackend.hpp" +#include "backend/cpu/compute/CommonOptFunction.h" +#include "backend/cpu/compute/Int8FunctionsOpt.h" +#include "core/Execution.hpp" +#include "core/Concurrency.h" +#include "core/OpCommonUtils.hpp" +#include "MNN_generated.h" +namespace MNN { + + +CPUDynamicQuant::CPUDynamicQuant(const MNN::Op* op, Backend* backend) : Execution(backend) { + +} + +ErrorCode CPUDynamicQuant::onResize(const std::vector &inputs, + const std::vector &outputs) { + return NO_ERROR; +} + +ErrorCode CPUDynamicQuant::onExecute(const std::vector &inputs, + const std::vector &outputs) { + auto core = static_cast(backend())->functions(); + auto int8core = static_cast(backend())->int8Functions(); + float *inputPtr = inputs[0]->host(); + int8_t *outputPtr = outputs[0]->host(); + int size = static_cast(backend())->getTensorSize(inputs[0]); + float quantScale = 0.f, dequantScale = 0.f, zeroPoint = 0.f; + float maxVal = 0.f, minVal = 0.f; + core->MNNCountMaxMinValue(inputPtr, &minVal, &maxVal, size); + // Compute scale and zero + float range = maxVal - minVal; + MNN_ASSERT(range != 0); + quantScale = 255.0f / range; + dequantScale = range / 255.0f; + zeroPoint = std::min(255.f, std::max(roundf(-(minVal * 255.f) / range), 0.f)) - 128.0f; + int pack = core->pack; + std::vector qsVec(pack, quantScale); + int sizeDiv = UP_DIV(size, pack); + int8core->MNNFloat2Int8(inputPtr, outputPtr, sizeDiv, qsVec.data(), -128, 127, (ssize_t)zeroPoint); + float* scale = outputs[1]->host(); + float* zeros = outputs[2]->host(); + *scale = dequantScale; + *zeros = zeroPoint; + + return NO_ERROR; +} + + + +CPUDynamicQuant::~CPUDynamicQuant() { + +} + +class CPUDynamicQuantCreator : public CPUBackend::Creator { +public: + Execution* onCreate(const std::vector& inputs, const std::vector& outputs, const MNN::Op* op, Backend* backend) const override { + return new CPUDynamicQuant(op, backend); + } +}; + +REGISTER_CPU_OP_CREATOR(CPUDynamicQuantCreator, OpType_DynamicQuant); + +} // namespace MNN diff --git a/source/backend/cpu/CPUDynamicQuant.hpp b/source/backend/cpu/CPUDynamicQuant.hpp new file mode 100644 index 000000000..dba4a33e0 --- /dev/null +++ b/source/backend/cpu/CPUDynamicQuant.hpp @@ -0,0 +1,25 @@ +// +// CPUDynamicQuant.hpp +// MNN +// +// Created by MNN on 2023/07/11 +// Copyright © 2018, Alibaba Group Holding Limited +// + +#ifndef CPUDynamicQuant_hpp +#define CPUDynamicQuant_hpp + +#include "core/Execution.hpp" +#include "core/Macro.h" +#include "backend/cpu/CPUBackend.hpp" +namespace MNN { +class CPUDynamicQuant : public Execution { +public: + CPUDynamicQuant(const MNN::Op* op, Backend* backend); + virtual ~CPUDynamicQuant(); + + virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; +}; +} // namespace MNN +#endif /* CPUDynamicQuant_hpp */ diff --git a/source/backend/cpu/CPUExternalConst.cpp b/source/backend/cpu/CPUExternalConst.cpp new file mode 100644 index 000000000..5d4ba2ece --- /dev/null +++ b/source/backend/cpu/CPUExternalConst.cpp @@ -0,0 +1,49 @@ +// +// CPURange.cpp +// MNN +// +// Created by MNN on 2018/08/22. +// Copyright © 2018, Alibaba Group Holding Limited +// + +#include "backend/cpu/CPURange.hpp" +#include "backend/cpu/CPUBackend.hpp" +#include "core/Macro.h" +#include "core/FileLoader.hpp" +namespace MNN { +class CPUExternalConst : public Execution { +public: + CPUExternalConst(const Op* op, Backend* bn) : Execution(bn) { + auto blob = op->main_as_Blob(); + mExternalFile = op->externalPath()->str(); + if (nullptr != blob->external()) { + mOffset = blob->external()->data()[0]; + mSize = blob->external()->data()[1]; + } + } + virtual ErrorCode onExecute(const std::vector& inputs, const std::vector& outputs) override { + FileLoader l(mExternalFile.c_str()); + l.offset(mOffset); + l.read(outputs[0]->host(), mSize); + return NO_ERROR; + } +private: + std::string mExternalFile; + int64_t mOffset = 0; + int64_t mSize = 0; +}; + +class CPUExternalConstCreator : public CPUBackend::Creator { +public: + virtual Execution* onCreate(const std::vector& inputs, const std::vector& outputs, + const MNN::Op* op, Backend* backend) const { + if (op->externalPath() == nullptr) { + return nullptr; + } + return new CPUExternalConst(op, backend); + } +}; + +REGISTER_CPU_OP_CREATOR(CPUExternalConstCreator, OpType_Const); +REGISTER_CPU_OP_CREATOR(CPUExternalConstCreator, OpType_TrainableParam); +} // namespace MNN diff --git a/source/backend/cpu/CPUGridSample.cpp b/source/backend/cpu/CPUGridSample.cpp index fa42eb383..3cc633d3d 100644 --- a/source/backend/cpu/CPUGridSample.cpp +++ b/source/backend/cpu/CPUGridSample.cpp @@ -218,6 +218,10 @@ class CPUGridSampleCreator : public CPUBackend::Creator { if (gridSampleParam->backward()) { return new CPUGridSampleGrad(backend, mode, paddingMode, alignCorners);; } + if (outputs[0]->dimensions() > 4 && core->MNNGridSampleInterp3D == nullptr) { + MNN_ERROR("Don't support gridsampler grad for pack = %d, float bytes = %d\n", core->pack, core->bytes); + return nullptr; + } return new CPUGridSample(backend, mode, paddingMode, alignCorners); } }; diff --git a/source/backend/cpu/CPULayerNorm.cpp b/source/backend/cpu/CPULayerNorm.cpp index 2e3b0f476..7446bea24 100644 --- a/source/backend/cpu/CPULayerNorm.cpp +++ b/source/backend/cpu/CPULayerNorm.cpp @@ -12,58 +12,56 @@ #include "backend/cpu/compute/CommonOptFunction.h" #include "core/Execution.hpp" #include "core/Concurrency.h" -#include "core/OpCommonUtils.hpp" +#include "core/TensorUtils.hpp" #include "MNN_generated.h" namespace MNN { -bool CPULayerNorm::allocGammaBeta(int size) { - mIniGammaBeta = true; - mGamma.reset(Tensor::createDevice({size})); - auto status = backend()->onAcquireBuffer(mGamma.get(), Backend::STATIC); - if (!status) { - MNN_ERROR("Out of memory when gamma is acquired in CPULayerNorm.\n"); - return false; - } - mBeta.reset(Tensor::createDevice({size})); - status = backend()->onAcquireBuffer(mBeta.get(), Backend::STATIC); - if (!status) { - MNN_ERROR("Out of memory when beta is acquired in CPULayerNorm.\n"); - return false; - } - return true; +CPULayerNorm::CPULayerNorm(std::shared_ptr res, Backend* backend) : Execution(backend) { + mResource = res; } -CPULayerNorm::CPULayerNorm(const MNN::Op* op, Backend* backend) : Execution(backend) { +std::shared_ptr CPULayerNorm::makeResource(const MNN::Op* op, Backend* backend) { const auto* layer_norm_param = op->main_as_LayerNorm(); - mAxis = layer_norm_param->axis()->size(); - mGroup = layer_norm_param->group(); - mEpsilon = layer_norm_param->epsilon(); - - if (USE_EXTERNAL_DATA(layer_norm_param)) { - int32_t size = static_cast(layer_norm_param->external()->Get(1)); - allocGammaBeta(size); - OpCommonUtils::loadExternalDatas(backend, {mGamma->host(), mBeta->host()}, layer_norm_param->external()->data()); - return; + std::shared_ptr res(new Resource); + res->mAxis = 0; + if (nullptr != layer_norm_param->axis()) { + res->mAxis = layer_norm_param->axis()->size(); } - + res->mGroup = layer_norm_param->group(); + res->mEpsilon = layer_norm_param->epsilon(); + res->mRMSNorm = layer_norm_param->useRMSNorm(); if (layer_norm_param->gamma() && layer_norm_param->beta()) { int size = layer_norm_param->gamma()->size(); + res->mIniGammaBeta = true; + res->mGamma.reset(Tensor::createDevice({size})); + auto status = backend->onAcquireBuffer(res->mGamma.get(), Backend::STATIC); + if (!status) { + MNN_ERROR("Out of memory when gamma is acquired in CPULayerNorm.\n"); + return nullptr; + } + res->mBeta.reset(Tensor::createDevice({size})); + status = backend->onAcquireBuffer(res->mBeta.get(), Backend::STATIC); + if (!status) { + MNN_ERROR("Out of memory when beta is acquired in CPULayerNorm.\n"); + return nullptr; + } + if (layer_norm_param->beta()->size() != size) { MNN_ERROR("Size of gamma and beta are not match in CPULayerNorm.\n"); } - allocGammaBeta(size); const float* gamma_data = layer_norm_param->gamma()->data(); - memcpy(mGamma->host(), gamma_data, size * sizeof(float)); + memcpy(res->mGamma->host(), gamma_data, size * sizeof(float)); const float* beta_data = layer_norm_param->beta()->data(); - memcpy(mBeta->host(), beta_data, size * sizeof(float)); + memcpy(res->mBeta->host(), beta_data, size * sizeof(float)); } + return res; } ErrorCode CPULayerNorm::onExecute(const std::vector &inputs, const std::vector &outputs) { - const float* gamma = mIniGammaBeta ? mGamma->host() : nullptr; - const float* beta = mIniGammaBeta ? mBeta->host() : nullptr; + const float* gamma = mResource->mIniGammaBeta ? mResource->mGamma->host() : nullptr; + const float* beta = mResource->mIniGammaBeta ? mResource->mBeta->host() : nullptr; if (mInpZero.data()) { const int8_t* input = inputs[0]->host(); @@ -79,7 +77,7 @@ ErrorCode CPULayerNorm::onExecute(const std::vector &inputs, params.outputZeroPoint = mOutZero.data(); const int8_t* inner_input = input + tId * mInnerSize; int8_t* inner_output = output + tId * mInnerSize; - core->MNNNormInt8(inner_output, inner_input, gamma, beta, mEpsilon, mInnerSize, ¶ms); + core->MNNNormInt8(inner_output, inner_input, gamma, beta, mResource->mEpsilon, mInnerSize, ¶ms, mResource->mRMSNorm); } MNN_CONCURRENCY_END(); return NO_ERROR; @@ -90,7 +88,7 @@ ErrorCode CPULayerNorm::onExecute(const std::vector &inputs, MNN_CONCURRENCY_BEGIN(tId, mOutterSize) { const float* inner_input = input + tId * mInnerSize; float* inner_output = output + tId * mInnerSize; - MNNNorm(inner_output, inner_input, gamma, beta, mEpsilon, mInnerSize); + MNNNorm(inner_output, inner_input, gamma, beta, mResource->mEpsilon, mInnerSize, mResource->mRMSNorm); } MNN_CONCURRENCY_END(); return NO_ERROR; @@ -101,18 +99,18 @@ ErrorCode CPULayerNorm::onResize(const std::vector &inputs, mOutterSize = 1; mInnerSize = 1; int rank = inputs.at(0)->dimensions(); - if (mGroup > 1) { - mOutterSize = inputs.at(0)->length(0) * mGroup; + if (mResource->mGroup > 1) { + mOutterSize = inputs.at(0)->length(0) * mResource->mGroup; for (int i = 1; i < rank; i++) { mInnerSize *= inputs.at(0)->length(i); } - mInnerSize /= mGroup; + mInnerSize /= mResource->mGroup; return NO_ERROR; } - for (int i = 0; i < rank - mAxis; ++i) { + for (int i = 0; i < rank - mResource->mAxis; ++i) { mOutterSize *= inputs.at(0)->length(i); } - for (int i = rank - mAxis; i < rank; ++i) { + for (int i = rank - mResource->mAxis; i < rank; ++i) { mInnerSize *= inputs.at(0)->length(i); } if (CPUBackend::getDataType(inputs[0]) == DataType_DT_INT8 || inputs[0]->getType().bytes() == 1) { @@ -134,18 +132,24 @@ ErrorCode CPULayerNorm::onResize(const std::vector &inputs, } CPULayerNorm::~CPULayerNorm() { - if (mGamma.get()) { - backend()->onReleaseBuffer(mGamma.get(), Backend::STATIC); - } - if (mBeta.get()) { - backend()->onReleaseBuffer(mBeta.get(), Backend::STATIC); + // Do nothing +} +bool CPULayerNorm::onClone(Backend* bn, const Op* op, Execution** dst) { + if (nullptr == dst) { + return true; } + *dst = new CPULayerNorm(mResource, bn); + return true; } class CPULayerNormCreator : public CPUBackend::Creator { public: Execution* onCreate(const std::vector& inputs, const std::vector& outputs, const MNN::Op* op, Backend* backend) const override { - return new CPULayerNorm(op, backend); + auto res = CPULayerNorm::makeResource(op, backend); + if (nullptr == res.get()) { + return nullptr; + } + return new CPULayerNorm(res, backend); } }; diff --git a/source/backend/cpu/CPULayerNorm.hpp b/source/backend/cpu/CPULayerNorm.hpp index 47d063a7a..9fc39bfad 100644 --- a/source/backend/cpu/CPULayerNorm.hpp +++ b/source/backend/cpu/CPULayerNorm.hpp @@ -14,22 +14,27 @@ namespace MNN { class CPULayerNorm : public Execution { public: - explicit CPULayerNorm(const MNN::Op* op, Backend* backend); + struct Resource { + int mGroup = 1; + float mEpsilon = 0.001; + std::unique_ptr mGamma; + std::unique_ptr mBeta; + bool mIniGammaBeta = false; + bool mRMSNorm = false; + int mAxis = 0; + }; + CPULayerNorm(std::shared_ptr res, Backend* backend); virtual ~CPULayerNorm(); - ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; - ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; -private: - bool allocGammaBeta(int size); + virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual bool onClone(Backend* bn, const Op* op, Execution** dst) override; + + static std::shared_ptr makeResource(const MNN::Op* op, Backend* backend); private: - int mAxis = 0; + std::shared_ptr mResource; int mInnerSize = 1; int mOutterSize = 1; - int mGroup = 1; - float mEpsilon = 0.001; - std::unique_ptr mGamma; - std::unique_ptr mBeta; - bool mIniGammaBeta = false; // LayerNormInt8 parameters. std::vector mInpScale; std::vector mOutScale; diff --git a/source/backend/cpu/CPUMatMul.cpp b/source/backend/cpu/CPUMatMul.cpp index b989833e7..a1dfb41ea 100644 --- a/source/backend/cpu/CPUMatMul.cpp +++ b/source/backend/cpu/CPUMatMul.cpp @@ -136,8 +136,8 @@ ErrorCode CPUMatMul::onResize(const std::vector& inputs, const std::vec }, 1)); } else { mStrassenUseBiasDirectly = true; - if (TensorUtils::getDescribe(bias)->mem.get()) { - bdestAlloc = TensorUtils::getDescribe(bias)->mem->chunk(); + if (TensorUtils::getDescribeOrigin(bias)->mem.get()) { + bdestAlloc = TensorUtils::getDescribeOrigin(bias)->mem->chunk(); } } postParameters = { diff --git a/source/backend/cpu/CPUOPRegister.cpp b/source/backend/cpu/CPUOPRegister.cpp index d08e1dc9e..b24bcb469 100644 --- a/source/backend/cpu/CPUOPRegister.cpp +++ b/source/backend/cpu/CPUOPRegister.cpp @@ -29,6 +29,7 @@ extern void ___CPUDetCreator__OpType_Det__(); extern void ___CPUHistogramCreator__OpType_Histogram__(); extern void ___CPUPluginCreator__OpType_Plugin__(); extern void ___CPUInt8ToFloatCreator__OpType_Int8ToFloat__(); +extern void ___CPUDynamicQuantCreator__OpType_DynamicQuant__(); extern void ___CPUROIAlignCreator__OpType_ROIAlign__(); extern void ___CPUROIPoolingCreator__OpType_ROIPooling__(); extern void ___CPUTopKV2Creator__OpType_TopKV2__(); @@ -66,6 +67,8 @@ extern void ___CPUSetDiff1DCreator__OpType_SetDiff1D__(); extern void ___CPUEltwiseInt8Creator__OpType_EltwiseInt8__(); extern void ___CPUSvdCreator__OpType_Svd__(); extern void ___CPULayerNormCreator__OpType_LayerNorm__(); +extern void ___CPUExternalConstCreator__OpType_Const__(); +extern void ___CPUExternalConstCreator__OpType_TrainableParam__(); #ifdef MNN_SUPPORT_RENDER extern void ___CPURasterAndInterpolateCreator__OpType_RasterAndInterpolate__(); @@ -102,6 +105,7 @@ ___CPUDetCreator__OpType_Det__(); ___CPUHistogramCreator__OpType_Histogram__(); ___CPUPluginCreator__OpType_Plugin__(); ___CPUInt8ToFloatCreator__OpType_Int8ToFloat__(); +___CPUDynamicQuantCreator__OpType_DynamicQuant__(); ___CPUROIAlignCreator__OpType_ROIAlign__(); ___CPUROIPoolingCreator__OpType_ROIPooling__(); ___CPUTopKV2Creator__OpType_TopKV2__(); @@ -139,6 +143,8 @@ ___CPUSetDiff1DCreator__OpType_SetDiff1D__(); ___CPUEltwiseInt8Creator__OpType_EltwiseInt8__(); ___CPUSvdCreator__OpType_Svd__(); ___CPULayerNormCreator__OpType_LayerNorm__(); +___CPUExternalConstCreator__OpType_Const__(); +___CPUExternalConstCreator__OpType_TrainableParam__(); #ifdef MNN_SUPPORT_RENDER ___CPURasterAndInterpolateCreator__OpType_RasterAndInterpolate__(); ___CPURasterDiffCreator__OpType_RasterDiff__(); diff --git a/source/backend/cpu/CPUROIAlign.cpp b/source/backend/cpu/CPUROIAlign.cpp index d514afc52..f1a928779 100644 --- a/source/backend/cpu/CPUROIAlign.cpp +++ b/source/backend/cpu/CPUROIAlign.cpp @@ -13,16 +13,6 @@ #include "CPUTensorConvert.hpp" #include "backend/cpu/CPUBackend.hpp" #include "core/TensorUtils.hpp" -#ifdef MNN_USE_NEON -#include -#endif -#ifdef MNN_USE_SSE -#if defined(_MSC_VER) -#include -#else -#include -#endif -#endif namespace MNN { @@ -44,13 +34,28 @@ ErrorCode CPUROIAlign::onResize(const std::vector& inputs, const std::v auto& roi = inputs[1]->buffer(); mROI.buffer().dimensions = roi.dimensions; - mROI.buffer().type = halide_type_of();// Use int32 instead of float to ensure the backend alloc 4 byte unit + mROI.buffer().type = halide_type_of(); memcpy(mROI.buffer().dim, roi.dim, sizeof(halide_dimension_t) * roi.dimensions); TensorUtils::getDescribe(&mROI)->dimensionFormat = MNN_DATA_FORMAT_NCHW; TensorUtils::setLinearLayout(&mROI); - - backend()->onAcquireBuffer(&mROI, Backend::DYNAMIC); + auto core = static_cast(backend())->functions(); + if (core->bytes < 4) { + mROITemp.reset(MNN::Tensor::createDevice({mROI.elementSize()})); + } + auto res = backend()->onAcquireBuffer(&mROI, Backend::DYNAMIC); + if (!res) { + return OUT_OF_MEMORY; + } + if (core->bytes < 4) { + res = backend()->onAcquireBuffer(mROITemp.get(), Backend::DYNAMIC); + if (!res) { + return OUT_OF_MEMORY; + } + } backend()->onReleaseBuffer(&mROI, Backend::DYNAMIC); + if (core->bytes < 4) { + backend()->onReleaseBuffer(mROITemp.get(), Backend::DYNAMIC); + } return NO_ERROR; } @@ -64,8 +69,10 @@ ErrorCode CPUROIAlign::onExecute(const std::vector& inputs, const std:: // dataType of ROI must be float32. Tensor *roiTensor = &mROI; + auto roiPtrSrc = roiTensor->host(); if (core->bytes != 4) { - core->MNNLowpToFp32(mROI.host(), mROI.host(), mROI.elementSize()); + core->MNNLowpToFp32(mROI.host(), mROITemp->host(), mROI.elementSize()); + roiPtrSrc = mROITemp->host(); } if (mOutputGrad == false) { @@ -79,7 +86,7 @@ ErrorCode CPUROIAlign::onExecute(const std::vector& inputs, const std:: for (int n = 0; n < numROI; ++n) { auto batchOutput = output->host() + os * n * core->bytes; - auto roiPtr = roiTensor->host() + rs * n; + auto roiPtr = roiPtrSrc + rs * n; int batchIdx = (int)roiPtr[0], idxRoi = 1; if (inputs.size() == 3) { batchIdx = inputs[2]->host()[n]; @@ -139,9 +146,10 @@ ErrorCode CPUROIAlign::onExecute(const std::vector& inputs, const std:: auto numSlice = UP_DIV(input->channel(), core->pack); float alignOffset = mAligned ? -0.5f : 0.f; auto& bwDiff = inputs[3]; + ::memset(output->host(), 0, static_cast(backend())->getTensorSize(output, true)); for (int n = 0; n < numROI; ++n) { - auto roiPtr = roiTensor->host() + rs * n; + auto roiPtr = roiPtrSrc + rs * n; int batchIdx = inputs[2]->host()[n], idxRoi = 0; float x1 = roiPtr[idxRoi++] * mSpatialScale + alignOffset; float y1 = roiPtr[idxRoi++] * mSpatialScale + alignOffset; @@ -320,6 +328,9 @@ class CPUROIAlignCreator : public CPUBackend::Creator { MNN_ERROR("Don't have function for CPUROIAlign\n"); return nullptr; } + if (core->bytes < 4 && roiAlign->outputGrad()) { + return nullptr; + } return new CPUROIAlign(backend, roiAlign->pooledWidth(), roiAlign->pooledHeight(), roiAlign->samplingRatio(), roiAlign->spatialScale(), roiAlign->aligned(), roiAlign->poolType(), roiAlign->outputGrad()); } diff --git a/source/backend/cpu/CPUROIAlign.hpp b/source/backend/cpu/CPUROIAlign.hpp index 91415b292..524671f63 100644 --- a/source/backend/cpu/CPUROIAlign.hpp +++ b/source/backend/cpu/CPUROIAlign.hpp @@ -1,4 +1,4 @@ -// +// // CPUROIAlign.hpp // MNN // @@ -27,7 +27,7 @@ class CPUROIAlign : public Execution { int samplingRatioW, std::vector> &vecPos, std::vector> &vecArea); -private: +protected: int mPooledWidth; int mPooledHeight; int mSamplingRatio; @@ -37,8 +37,9 @@ class CPUROIAlign : public Execution { bool mOutputGrad; // false: output pooled value, true: output input grad Tensor mROI; + std::shared_ptr mROITemp; }; } // namespace MNN -#endif /* CPUROIAlign_hpp */ \ No newline at end of file +#endif /* CPUROIAlign_hpp */ diff --git a/source/backend/cpu/CPUROIPooling.cpp b/source/backend/cpu/CPUROIPooling.cpp index c631075e7..b6912a152 100644 --- a/source/backend/cpu/CPUROIPooling.cpp +++ b/source/backend/cpu/CPUROIPooling.cpp @@ -16,26 +16,10 @@ namespace MNN { CPUROIPooling::CPUROIPooling(Backend *backend, int pooledWidth, int pooledHeight, float spatialScale, bool outputGrad) - : Execution(backend), mPooledWidth(pooledWidth), mPooledHeight(pooledHeight), mSpatialScale(spatialScale), mOutputGrad(outputGrad) { + : CPUROIAlign(backend, pooledWidth, pooledHeight, 0, spatialScale, false, PoolType_MAX, outputGrad) { // nothing to do } -ErrorCode CPUROIPooling::onResize(const std::vector &inputs, const std::vector &outputs) { - // roi transform space - auto &roi = inputs[1]->buffer(); - - mROI.buffer().dimensions = roi.dimensions; - memcpy(mROI.buffer().dim, roi.dim, sizeof(halide_dimension_t) * roi.dimensions); - TensorUtils::getDescribe(&mROI)->dimensionFormat = MNN_DATA_FORMAT_NCHW; - TensorUtils::setLinearLayout(&mROI); - backend()->onAcquireBuffer(&mROI, Backend::DYNAMIC); - - // release temp buffer space - backend()->onReleaseBuffer(&mROI, Backend::DYNAMIC); - - return NO_ERROR; -} - static inline int max(int a, int b) { return a > b ? a : b; } static inline int min(int a, int b) { return a < b ? a : b; } @@ -48,8 +32,10 @@ ErrorCode CPUROIPooling::onExecute(const std::vector &inputs, const st // dataType of ROI must be float32. Tensor *roiTensor = &mROI; + auto roiPtrSrc = roiTensor->host(); if (core->bytes != 4) { - core->MNNLowpToFp32(mROI.host(), mROI.host(), mROI.elementSize()); + core->MNNLowpToFp32(mROI.host(), mROITemp->host(), mROI.elementSize()); + roiPtrSrc = mROITemp->host(); } if (mOutputGrad == false) { @@ -60,7 +46,7 @@ ErrorCode CPUROIPooling::onExecute(const std::vector &inputs, const st auto numROI = inputs[1]->batch(); for (int n = 0; n < numROI; ++n) { auto batchOutput = output->host() + os * n * core->bytes; - auto roiPtr = roiTensor->host() + roiTensor->buffer().dim[0].stride * n; + auto roiPtr = roiPtrSrc + roiTensor->buffer().dim[0].stride * n; int roi = roiPtr[0]; int x1 = round(roiPtr[1] * mSpatialScale); int y1 = round(roiPtr[2] * mSpatialScale); @@ -115,9 +101,10 @@ ErrorCode CPUROIPooling::onExecute(const std::vector &inputs, const st auto ow = bwDiff->width(), oh = bwDiff->height(), os = ow * oh * core->pack; auto slice = UP_DIV(input->channel(), core->pack); auto numROI = inputs[1]->batch(); + ::memset(output->host(), 0, static_cast(backend())->getTensorSize(output, true)); for (int n = 0; n < numROI; ++n) { auto batchBwDiff = inputs[2]->host() + os * n * core->bytes; - auto roiPtr = roiTensor->host() + roiTensor->buffer().dim[0].stride * n; + auto roiPtr = roiPtrSrc + roiTensor->buffer().dim[0].stride * n; int roi = roiPtr[0]; int x1 = round(roiPtr[1] * mSpatialScale); int y1 = round(roiPtr[2] * mSpatialScale); @@ -203,6 +190,9 @@ class CPUROIPoolingCreator : public CPUBackend::Creator { MNN_ERROR("Don't have function for CPUROIPooling\n"); return nullptr; } + if (core->bytes < 4 && roi->outputGrad()) { + return nullptr; + } return new CPUROIPooling(backend, roi->pooledWidth(), roi->pooledHeight(), roi->spatialScale(), roi->outputGrad()); } }; diff --git a/source/backend/cpu/CPUROIPooling.hpp b/source/backend/cpu/CPUROIPooling.hpp index 5459b2333..a7b8b3b28 100644 --- a/source/backend/cpu/CPUROIPooling.hpp +++ b/source/backend/cpu/CPUROIPooling.hpp @@ -10,23 +10,15 @@ #define CPUROIPooling_hpp #include "core/Execution.hpp" +#include "CPUROIAlign.hpp" namespace MNN { -class CPUROIPooling : public Execution { +class CPUROIPooling : public CPUROIAlign { public: CPUROIPooling(Backend *backend, int pooledWidth, int pooledHeight, float spatialScale, bool outputGrad); virtual ~CPUROIPooling() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; - -private: - int mPooledWidth; - int mPooledHeight; - float mSpatialScale; - bool mOutputGrad; // false: output pooled value, true: output input grad - - Tensor mROI; }; } // namespace MNN diff --git a/source/backend/cpu/CPURaster.cpp b/source/backend/cpu/CPURaster.cpp index f5895b83e..6d5f587b7 100644 --- a/source/backend/cpu/CPURaster.cpp +++ b/source/backend/cpu/CPURaster.cpp @@ -42,7 +42,6 @@ ErrorCode CPURaster::onResize(const std::vector &____inputs, const std mTempOutput = nullptr; auto midFormat = MNN_DATA_FORMAT_NCHW; mTempInputCopy.clear(); - mOutputPtr = output->host(); mFast = false; auto core = static_cast(backend())->functions(); mSingleConvert.type = 0; @@ -91,7 +90,6 @@ ErrorCode CPURaster::onResize(const std::vector &____inputs, const std if (!res) { return OUT_OF_MEMORY; } - mOutputPtr = mTempOutput->host(); } // input is NC4HW4 add Convert std::vector forRelease; @@ -320,7 +318,7 @@ void CPURaster::executeFaster(const std::vector &inputs, const std::ve auto& slice = iter.second; //Offset use byte auto srcPtr = iter.first->host() + slice.src.offset * bytes; - auto dstPtr = (uint8_t*)mOutputPtr + slice.dst.offset * bytes; + auto dstPtr = output->host() + slice.dst.offset * bytes; if (slice.src.stride[1] == slice.size[2] && slice.dst.stride[1] == slice.size[2] && slice.src.stride[2] == 1) { for (int z=0; z &____inputs, const std::vector &outputs) { + void* mOutputPtr = nullptr; if (nullptr != mTempOutput) { mOutputPtr = mTempOutput->host(); } else { @@ -574,7 +573,7 @@ ErrorCode CPURaster::onExecute(const std::vector &____inputs, const st auto outputEleSize = static_cast(backend())->getTensorSize(output); auto threadNum = static_cast(backend())->threadNumber(); if (mSingleConvert.type > 0) { - auto realInput = TensorUtils::getDescribe(output)->regions[0].origin; + auto realInput = ____inputs[0]; int srcBatch = mSingleConvert.batch, srcChannel = mSingleConvert.channel, srcArea = mSingleConvert.area; auto sourceFormat = TensorUtils::getDescribe(realInput)->dimensionFormat; auto destFormat = TensorUtils::getDescribe(output)->dimensionFormat; diff --git a/source/backend/cpu/CPURaster.hpp b/source/backend/cpu/CPURaster.hpp index 155642e60..6dbe9a252 100644 --- a/source/backend/cpu/CPURaster.hpp +++ b/source/backend/cpu/CPURaster.hpp @@ -31,7 +31,6 @@ class CPURaster : public Execution { std::vector> mTempInputCopy; std::vector> mFastBlit; std::shared_ptr mTempOutput; - void* mOutputPtr; bool mNeedZero = false; bool mFast = false; OpCommonUtils::TensorConvertParameter mSingleConvert; diff --git a/source/backend/cpu/CPUResizeCache.cpp b/source/backend/cpu/CPUResizeCache.cpp index 0e4241acf..f6a6764e0 100644 --- a/source/backend/cpu/CPUResizeCache.cpp +++ b/source/backend/cpu/CPUResizeCache.cpp @@ -18,7 +18,7 @@ void CPUResizeCache::reset() { } void CPUResizeCache::release() { for (auto iter : mFormatCache) { - TensorUtils::getDescribe(iter.second.get())->mem.reset(nullptr); + TensorUtils::getDescribeOrigin(iter.second.get())->mem = nullptr; } } }; diff --git a/source/backend/cpu/CPUScale.cpp b/source/backend/cpu/CPUScale.cpp index ff3a97813..db657c77c 100644 --- a/source/backend/cpu/CPUScale.cpp +++ b/source/backend/cpu/CPUScale.cpp @@ -12,20 +12,13 @@ #include "core/Macro.h" #include "core/TensorUtils.hpp" #include "core/Concurrency.h" -#include "core/OpCommonUtils.hpp" #include "compute/CommonOptFunction.h" namespace MNN { CPUScale::CPUScale(const Op* op, Backend* bn) : MNN::Execution(bn) { auto scale = op->main_as_Scale(); auto core = static_cast(bn)->functions(); - bool external = USE_EXTERNAL_DATA(scale); - int outputCount = 0; - if (external) { - outputCount = static_cast(scale->external()->Get(1) / sizeof(float)); - } else { - outputCount = scale->scaleData()->size(); - } + int outputCount = scale->scaleData()->size(); mScaleBias.reset(Tensor::createDevice({2, UP_DIV(outputCount, core->pack) * core->pack * core->bytes})); auto res = bn->onAcquireBuffer(mScaleBias.get(), Backend::STATIC); if (!res) { @@ -35,58 +28,37 @@ CPUScale::CPUScale(const Op* op, Backend* bn) : MNN::Execution(bn) { return; } ::memset(mScaleBias->host(), 0, mScaleBias->size()); - if (external) { - bool hasBias = scale->external()->size() > 2; - if (hasBias) { - if (core->bytes < 4) { - std::unique_ptr tmpTensor(Tensor::createDevice({outputCount * 2})); - auto status = backend()->onAcquireBuffer(tmpTensor.get(), Backend::STATIC); - if (!status) { - MNN_ERROR("Out of memory when tmpTensor is acquired in CPUScale.\n"); - return; - } - char* scalePtr = tmpTensor->host(); - char* biasPtr = scalePtr + outputCount * sizeof(float); - OpCommonUtils::loadExternalDatas(bn, {scalePtr, biasPtr}, scale->external()->data()); - core->MNNFp32ToLowp(tmpTensor->host(), mScaleBias->host(), outputCount * 2); - } else { - OpCommonUtils::loadExternalDatas(bn, {mScaleBias->host(), mScaleBias->host() + mScaleBias->length(1)}, scale->external()->data()); - } - } else { - if (core->bytes < 4) { - std::unique_ptr tmpTensor(Tensor::createDevice({outputCount})); - auto status = backend()->onAcquireBuffer(tmpTensor.get(), Backend::STATIC); - if (!status) { - MNN_ERROR("Out of memory when tmpTensor is acquired in CPUScale.\n"); - return; - } - OpCommonUtils::loadExternalDatas(bn, {tmpTensor->host()}, scale->external()->data()); - core->MNNFp32ToLowp(tmpTensor->host(), mScaleBias->host(), outputCount); - } else { - OpCommonUtils::loadExternalDatas(bn, {mScaleBias->host()}, scale->external()->data()); - } - } + if (core->bytes < 4) { + core->MNNFp32ToLowp(scale->scaleData()->data(), mScaleBias->host(), outputCount); } else { + ::memcpy(mScaleBias->host(), scale->scaleData()->data(), outputCount * sizeof(float)); + } + if (nullptr != scale->biasData() && nullptr != scale->biasData()->data()) { + auto biasPtr = mScaleBias->host() + mScaleBias->length(1); if (core->bytes < 4) { - core->MNNFp32ToLowp(scale->scaleData()->data(), mScaleBias->host(), outputCount); + core->MNNFp32ToLowp(scale->biasData()->data(), reinterpret_cast(biasPtr), outputCount); } else { - ::memcpy(mScaleBias->host(), scale->scaleData()->data(), outputCount * sizeof(float)); - } - if (nullptr != scale->biasData() && nullptr != scale->biasData()->data()) { - auto biasPtr = mScaleBias->host() + mScaleBias->length(1); - if (core->bytes < 4) { - core->MNNFp32ToLowp(scale->biasData()->data(), reinterpret_cast(biasPtr), outputCount); - } else { - ::memcpy(biasPtr, scale->biasData()->data(), outputCount * sizeof(float)); - } + ::memcpy(biasPtr, scale->biasData()->data(), outputCount * sizeof(float)); } } } CPUScale::~CPUScale() { - if (nullptr != mScaleBias) { - backend()->onReleaseBuffer(mScaleBias.get(), Backend::STATIC); + // Do nothing +} +CPUScale::CPUScale(Backend* bn) : Execution(bn) { + // Do nothing +} + +bool CPUScale::onClone(Backend* bn, const Op* op, Execution** dst) { + if (nullptr == dst) { + return true; } + auto scale = new CPUScale(bn); + scale->mScaleBias = mScaleBias; + *dst = scale; + return true; } + ErrorCode CPUScale::onExecute(const std::vector& inputs, const std::vector& outputs) { auto input = inputs[0]; auto output = outputs[0]; diff --git a/source/backend/cpu/CPUScale.hpp b/source/backend/cpu/CPUScale.hpp index fd29c2fae..3fa2923a4 100644 --- a/source/backend/cpu/CPUScale.hpp +++ b/source/backend/cpu/CPUScale.hpp @@ -18,8 +18,10 @@ class CPUScale : public Execution { CPUScale(const Op *op, Backend *bn); virtual ~CPUScale(); virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual bool onClone(Backend* bn, const Op* op, Execution** dst) override; private: + CPUScale(Backend* bn); std::shared_ptr mScaleBias; }; diff --git a/source/backend/cpu/CPUScaleInt8.cpp b/source/backend/cpu/CPUScaleInt8.cpp index 6daa3fc02..c5a20e0f9 100644 --- a/source/backend/cpu/CPUScaleInt8.cpp +++ b/source/backend/cpu/CPUScaleInt8.cpp @@ -11,7 +11,6 @@ #include "core/Macro.h" #include "core/TensorUtils.hpp" #include "core/Concurrency.h" -#include "core/OpCommonUtils.hpp" #include "compute/CommonOptFunction.h" #include "backend/cpu/compute/Int8FunctionsOpt.h" @@ -20,13 +19,7 @@ namespace MNN { CPUScaleInt8::CPUScaleInt8(const Op* op, Backend* bn) : MNN::Execution(bn) { auto scale = op->main_as_Scale(); auto core = static_cast(bn)->functions(); - bool external = USE_EXTERNAL_DATA(scale); - int outputCount = 0; - if (external) { - outputCount = static_cast(scale->external()->Get(1) / sizeof(float)); - } else { - outputCount = scale->scaleData()->size(); - } + int outputCount = scale->scaleData()->size(); mScaleBias.reset(Tensor::createDevice({2, UP_DIV(outputCount, core->pack) * core->pack * core->bytes})); auto res = bn->onAcquireBuffer(mScaleBias.get(), Backend::STATIC); if (!res) { @@ -36,54 +29,21 @@ CPUScaleInt8::CPUScaleInt8(const Op* op, Backend* bn) : MNN::Execution(bn) { return; } ::memset(mScaleBias->host(), 0, mScaleBias->size()); - if (external) { - bool hasBias = scale->external()->size() > 2; - if (hasBias) { - if (core->bytes < 4) { - std::unique_ptr tmpTensor(Tensor::createDevice({outputCount * 2})); - auto status = backend()->onAcquireBuffer(tmpTensor.get(), Backend::STATIC); - if (!status) { - MNN_ERROR("Out of memory when tmpTensor is acquired in CPUScale.\n"); - return; - } - char* scalePtr = tmpTensor->host(); - char* biasPtr = scalePtr + outputCount * sizeof(float); - OpCommonUtils::loadExternalDatas(bn, {scalePtr, biasPtr}, scale->external()->data()); - core->MNNFp32ToLowp(tmpTensor->host(), mScaleBias->host(), outputCount * 2); - } else { - OpCommonUtils::loadExternalDatas(bn, {mScaleBias->host(), mScaleBias->host() + mScaleBias->length(1)}, scale->external()->data()); - } - } else { - if (core->bytes < 4) { - std::unique_ptr tmpTensor(Tensor::createDevice({outputCount})); - auto status = backend()->onAcquireBuffer(tmpTensor.get(), Backend::STATIC); - if (!status) { - MNN_ERROR("Out of memory when tmpTensor is acquired in CPUScale.\n"); - return; - } - OpCommonUtils::loadExternalDatas(bn, {tmpTensor->host()}, scale->external()->data()); - core->MNNFp32ToLowp(tmpTensor->host(), mScaleBias->host(), outputCount); - } else { - OpCommonUtils::loadExternalDatas(bn, {mScaleBias->host()}, scale->external()->data()); - } - } + std::vector scaleDataQuant(outputCount); + for (int i = 0; i < outputCount; ++i) { + scaleDataQuant[i] = 1.0 / scale->scaleData()->data()[i]; + } + if (core->bytes < 4) { + core->MNNFp32ToLowp(scale->scaleData()->data(), mScaleBias->host(), outputCount); } else { - std::vector scaleDataQuant(outputCount); - for (int i = 0; i < outputCount; ++i) { - scaleDataQuant[i] = 1.0 / scale->scaleData()->data()[i]; - } + ::memcpy(mScaleBias->host(), scale->scaleData()->data(), outputCount * sizeof(float)); + } + if (nullptr != scale->biasData() && nullptr != scale->biasData()->data()) { + auto biasPtr = mScaleBias->host() + mScaleBias->length(1); if (core->bytes < 4) { - core->MNNFp32ToLowp(scale->scaleData()->data(), mScaleBias->host(), outputCount); + core->MNNFp32ToLowp(scale->biasData()->data(), reinterpret_cast(biasPtr), outputCount); } else { - ::memcpy(mScaleBias->host(), scale->scaleData()->data(), outputCount * sizeof(float)); - } - if (nullptr != scale->biasData() && nullptr != scale->biasData()->data()) { - auto biasPtr = mScaleBias->host() + mScaleBias->length(1); - if (core->bytes < 4) { - core->MNNFp32ToLowp(scale->biasData()->data(), reinterpret_cast(biasPtr), outputCount); - } else { - ::memcpy(biasPtr, scale->biasData()->data(), outputCount * sizeof(float)); - } + ::memcpy(biasPtr, scale->biasData()->data(), outputCount * sizeof(float)); } } } diff --git a/source/backend/cpu/CPUSelect.cpp b/source/backend/cpu/CPUSelect.cpp index 062c00e9c..bd001b0cc 100644 --- a/source/backend/cpu/CPUSelect.cpp +++ b/source/backend/cpu/CPUSelect.cpp @@ -7,33 +7,48 @@ // #include "backend/cpu/CPUSelect.hpp" +#include "core/TensorUtils.hpp" +#include "compute/CommonOptFunction.h" namespace MNN { -ErrorCode CPUSelect::onExecute(const std::vector &inputs, const std::vector &outputs) { - auto inSize1 = inputs[1]->elementSize(); - auto inSize2 = inputs[2]->elementSize(); - auto outSize = outputs[0]->elementSize(); - MNN_ASSERT(inputs[0]->elementSize() == outSize); - MNN_ASSERT(inSize1 == 1 || inSize1 == outSize); - MNN_ASSERT(inSize2 == 1 || inSize2 == outSize); - auto output = outputs[0]->host(); - auto select = inputs[0]->host(); - auto input0 = inputs[1]->host(); - auto input1 = inputs[2]->host(); +template +void selectMain(const int* select, const T* i1, const T* i2, T* out, size_t outSize, int inOff0, int inOff1, int inOff2) { for (int i = 0; i < outSize; i++) { - if (select[i]) { - if (inSize1 == 1) { - output[i] = input0[0]; - } else { - output[i] = input0[i]; - } + if (*select) { + *out = *i1; } else { - if (inSize2 == 1) { - output[i] = input1[0]; - } else { - output[i] = input1[i]; - } + *out = *i2; } + out++; + select+=inOff0; + i1+=inOff1; + i2+=inOff2; + } +} + + +ErrorCode CPUSelect::onExecute(const std::vector &inputs, const std::vector &outputs) { + auto inSize0 = static_cast(backend())->getTensorSize(inputs[0]); + auto inSize1 = static_cast(backend())->getTensorSize(inputs[1]); + auto inSize2 = static_cast(backend())->getTensorSize(inputs[2]); + auto outSize = static_cast(backend())->getTensorSize(outputs[0]); + int inOff0 = inSize0 == 1 ? 0 : 1; + int inOff1 = inSize1 == 1 ? 0 : 1; + int inOff2 = inSize2 == 1 ? 0 : 1; + auto select = inputs[0]->host(); + auto dataBytes = CPUBackend::getBytes(backend(), outputs[0]); + switch (dataBytes) { + case 4: + selectMain(select, inputs[1]->host(), inputs[2]->host(), outputs[0]->host(), outSize, inOff0, inOff1, inOff2); + break; + case 2: + selectMain(select, inputs[1]->host(), inputs[2]->host(), outputs[0]->host(), outSize, inOff0, inOff1, inOff2); + break; + case 1: + selectMain(select, inputs[1]->host(), inputs[2]->host(), outputs[0]->host(), outSize, inOff0, inOff1, inOff2); + break; + default: + break; } return NO_ERROR; } @@ -42,6 +57,12 @@ class CPUSelectCreator : public CPUBackend::Creator { public: virtual Execution *onCreate(const std::vector &inputs, const std::vector &outputs, const MNN::Op *op, Backend *backend) const { + auto cpubn = static_cast(backend); + auto format = TensorUtils::getDescribe(inputs[0])->dimensionFormat; + if (cpubn->functions()->pack != 4 && MNN_DATA_FORMAT_NC4HW4 == format) { + // For ARM82 backend, int32 is pack4 but float is pack8, don't support this case + return nullptr; + } return new CPUSelect(backend); } }; diff --git a/source/backend/cpu/CPUTensorConvert.cpp b/source/backend/cpu/CPUTensorConvert.cpp index 10faca0f6..f0d254603 100644 --- a/source/backend/cpu/CPUTensorConvert.cpp +++ b/source/backend/cpu/CPUTensorConvert.cpp @@ -281,8 +281,6 @@ static int _getBytes(const CoreFunctions* core, const Tensor* output) { ErrorCode CPUTensorConverter::convert(const Tensor* input, const Tensor* output, const CoreFunctions* core, int tId, int numberThread) { auto ib = input->buffer(); auto ob = output->buffer(); - MNN_ASSERT(TensorUtils::getDescribe(input)->memoryType != Tensor::InsideDescribe::MEMORY_VIRTUAL); - MNN_ASSERT(TensorUtils::getDescribe(output)->memoryType != Tensor::InsideDescribe::MEMORY_VIRTUAL); auto source = TensorUtils::getDescribe(input)->dimensionFormat; auto dest = TensorUtils::getDescribe(output)->dimensionFormat; if (nullptr == core) { diff --git a/source/backend/cpu/GridSampler.hpp b/source/backend/cpu/GridSampler.hpp index 553f2f7d1..e2e738d26 100644 --- a/source/backend/cpu/GridSampler.hpp +++ b/source/backend/cpu/GridSampler.hpp @@ -61,11 +61,13 @@ static void MNNGridSampleInterp(FLOAT* outputPtr, const FLOAT* inputPtr, const F } } } -static void MNNGridSampleInterpGrad(FLOAT* outputPtr, FLOAT* inputPtr, const float* cordPtr, size_t inH, size_t inW, size_t outW, size_t channelCUnit, size_t inOffset, size_t outOffset, bool sampleMode, bool padMode) { +static void MNNGridSampleInterpGrad(FLOAT* outputPtr, FLOAT* inputPtr, const FLOAT* cordPtr, size_t inH, size_t inW, size_t outW, size_t channelCUnit, size_t inOffset, size_t outOffset, bool sampleMode, bool padMode) { const int pack = PACK; for (auto ow = 0; ow < outW; ++ow) { - auto w = cordPtr[2 * ow + 0]; - auto h = cordPtr[2 * ow + 1]; + auto w_ = cordPtr[2 * ow + 0]; + auto h_ = cordPtr[2 * ow + 1]; + float w = (float)(w_); + float h = (float)(h_); Vec interp; if (sampleMode == true) { //sampleMode == SampleMode_NEAREST @@ -122,3 +124,88 @@ static void MNNGridSampleInterpGrad(FLOAT* outputPtr, FLOAT* inputPtr, const flo } } } + +static int MNNGridSampleComputeOffset3D(int d, int h, int w, int depth, int height, int width, bool padMode) { + if (padMode == true) { //padMode == BorderMode_ZEROS + if (h < 0 || h >= height || w < 0 || w >= width || d < 0 || d >= depth) { + return -1; + } + } else { + // Clearly, CLAMP is the right way to go for GridSamplePaddingMode_BORDER + // For GridSamplePaddingMode_REFLECTION, since we have reflected the values into (-1, 1), + // the leftover reflections degrade to GridSamplePaddingMode_BORDER + d = d < 0 ? 0 : (d > (depth - 1) ? (depth - 1) : d); + h = h < 0 ? 0 : ( h > (height - 1) ? (height - 1) : h); + w = w < 0 ? 0 : ( w > (width - 1) ? (width - 1) : w); + } + return ((d * height + h) * width + w) * 4; +} + +static void MNNGridSampleInterp3D(FLOAT* outputPtr, const FLOAT* inputPtr, const FLOAT* cordPtr, size_t inD, size_t inH, size_t inW, size_t outW, size_t channelCUnit, size_t inOffset, size_t outOffset, bool sampleMode, bool padMode) { + for (auto ow = 0; ow < outW; ++ow) { + auto w_ = cordPtr[3 * ow + 0]; + auto h_ = cordPtr[3 * ow + 1]; + auto d_ = cordPtr[3 * ow + 2]; + float w = (float)(w_); + float h = (float)(h_); + float d = (float)(d_); + + Vec interp; + + if (sampleMode == true) { //sampleMode == SampleMode_NEAREST + int nd = ::floor(d + 0.5f); + int nh = ::floor(h + 0.5f); + int nw = ::floor(w + 0.5f); + size_t ns = MNNGridSampleComputeOffset3D(nd, nh, nw, inD, inH, inW, padMode); + for (int k = 0; k < channelCUnit; ++k) { + interp = ns == -1 ? Vec(0.f) : Vec::load(inputPtr + k * inOffset + ns); + Vec::save(outputPtr + k * outOffset + PACK * ow, interp); + } + } else { //sampleMode == GridSampleMode_BILINEAR + int w0_d = ::floor(d); + int w0_h = ::floor(h); + int w0_w = ::floor(w); + int w1_d = ::ceil(d); + int w1_h = ::ceil(h); + int w1_w = ::ceil(w); + auto oneV = Vec(1.0f); + + auto f0 = Vec((float)w1_w - w); + auto f1 = oneV - f0; + auto h0 = Vec((float)w1_h - h); + auto h1 = oneV - h0; + auto d0 = Vec((float)w1_d - d); + auto d1 = oneV - d0; + + size_t s000 = MNNGridSampleComputeOffset3D(w0_d, w0_h, w0_w, inD, inH, inW, padMode); + size_t s001 = MNNGridSampleComputeOffset3D(w0_d, w0_h, w1_w, inD, inH, inW, padMode); + size_t s010 = MNNGridSampleComputeOffset3D(w0_d, w1_h, w0_w, inD, inH, inW, padMode); + size_t s011 = MNNGridSampleComputeOffset3D(w0_d, w1_h, w1_w, inD, inH, inW, padMode); + size_t s100 = MNNGridSampleComputeOffset3D(w1_d, w0_h, w0_w, inD, inH, inW, padMode); + size_t s101 = MNNGridSampleComputeOffset3D(w1_d, w0_h, w1_w, inD, inH, inW, padMode); + size_t s110 = MNNGridSampleComputeOffset3D(w1_d, w1_h, w0_w, inD, inH, inW, padMode); + size_t s111 = MNNGridSampleComputeOffset3D(w1_d, w1_h, w1_w, inD, inH, inW, padMode); + + for (int k = 0; k < channelCUnit; ++k) { + Vec i000 = s000 == -1 ? Vec(0.f) : Vec::load(inputPtr + k * inOffset + s000); + Vec i001 = s001 == -1 ? Vec(0.f) : Vec::load(inputPtr + k * inOffset + s001); + Vec i010 = s010 == -1 ? Vec(0.f) : Vec::load(inputPtr + k * inOffset + s010); + Vec i011 = s011 == -1 ? Vec(0.f) : Vec::load(inputPtr + k * inOffset + s011); + Vec i100 = s100 == -1 ? Vec(0.f) : Vec::load(inputPtr + k * inOffset + s100); + Vec i101 = s101 == -1 ? Vec(0.f) : Vec::load(inputPtr + k * inOffset + s101); + Vec i110 = s110 == -1 ? Vec(0.f) : Vec::load(inputPtr + k * inOffset + s110); + Vec i111 = s111 == -1 ? Vec(0.f) : Vec::load(inputPtr + k * inOffset + s111); + + Vec i00 = i000 * f0 + i001 * f1; + Vec i01 = i010 * f0 + i011 * f1; + Vec i0 = i00 * h0 + i01 * h1; + Vec i10 = i100 * f0 + i101 * f1; + Vec i11 = i110 * f0 + i111 * f1; + Vec i1 = i10 * h0 + i11 * h1; + interp = i0 * d0 + i1 * d1; + + Vec::save(outputPtr + k * outOffset + PACK * ow, interp); + } + } + } +} diff --git a/source/backend/cpu/arm/arm32/bf16/MNNGelu_BF16.S b/source/backend/cpu/arm/arm32/bf16/MNNGelu_BF16.S index 9694e705b..91ce6a944 100644 --- a/source/backend/cpu/arm/arm32/bf16/MNNGelu_BF16.S +++ b/source/backend/cpu/arm/arm32/bf16/MNNGelu_BF16.S @@ -136,7 +136,7 @@ vmul.f32 q7, q7, q4 vshrn.i32 d12, q6, #16 // shift right 16bit of each float32 as int16_t. vshrn.i32 d13, q7, #16 -vst1.16 q6, [r0]! +vst1.16 {q6}, [r0]! subs r2, r2, #1 bne GeluZLoop diff --git a/source/backend/cpu/arm/arm64/MNNGemmInt8AddBiasScale_ARMV86_Unit.S b/source/backend/cpu/arm/arm64/MNNGemmInt8AddBiasScale_ARMV86_Unit.S index 5115c41fa..a6d4af6a3 100644 --- a/source/backend/cpu/arm/arm64/MNNGemmInt8AddBiasScale_ARMV86_Unit.S +++ b/source/backend/cpu/arm/arm64/MNNGemmInt8AddBiasScale_ARMV86_Unit.S @@ -227,7 +227,7 @@ TILE_16: sub x10, x22, #64 cmp x7, #16 blt TILE_8 - mov x16, x5 // dst_depth_quad + mov x24, x5 // dst_depth_quad mov x26, x0 // dst mov x25, x2 // weight mov x19, x8 // scale @@ -271,7 +271,7 @@ LoopSz_TILE_16: bne LoopSz_TILE_16 LoopSzEnd_TILE_16: add x25, x25, x15 // weight += dz * src_depth_quad * (GEMM_INT8_UNIT * GEMM_INT8_SRC_UNIT); - sub x16, x16, #1 // dz-- + sub x24, x24, #1 // dz-- // transpose uzp1 v15.2d, v16.2d, v17.2d uzp2 v16.2d, v16.2d, v17.2d @@ -331,7 +331,7 @@ Tile16Quan: smin v19.16b, v11.16b, v19.16b st1 {v16.16b, v17.16b, v18.16b, v19.16b}, [x26], x4 // dst += dz * dst_step; Tile16LoopCheck: - cmp x16, #1 + cmp x24, #1 bge LoopDz_TILE_16 Tile16End: sub x7, x7, #16 @@ -341,7 +341,7 @@ Tile16End: TILE_8: cmp x7, #8 blt TILE_4 - mov x16, x5 // dst_depth_quad + mov x24, x5 // dst_depth_quad mov x26, x0 // dst mov x25, x2 // weight mov x19, x8 // scale @@ -374,7 +374,7 @@ LoopSz_TILE_8: bne LoopSz_TILE_8 LoopSzEnd_TILE_8: add x25, x25, x15 - sub x16, x16, #1 + sub x24, x24, #1 uzp1 v23.2d, v24.2d, v25.2d uzp2 v24.2d, v24.2d, v25.2d uzp1 v25.2d, v26.2d, v27.2d @@ -410,7 +410,7 @@ Tile8Quan: smin v19.16b, v11.16b, v19.16b st1 {v18.16b, v19.16b}, [x26], x4 // dst += dz * dst_step Tile8LoopCheck: - cmp x16, #1 + cmp x24, #1 bge LoopDz_TILE_8 Tile8End: sub x7, x7, #8 @@ -420,7 +420,7 @@ Tile8End: TILE_4: cmp x7, #4 blt TILE_2 - mov x16, x5 // dst_depth_quad + mov x24, x5 // dst_depth_quad mov x26, x0 // dst mov x25, x2 // weight mov x19, x8 // scale @@ -449,7 +449,7 @@ LoopSz_TILE_4: bne LoopSz_TILE_4 LoopSzEnd_TILE_4: add x25, x25, x15 - sub x16, x16, #1 + sub x24, x24, #1 uzp1 v27.2d, v28.2d, v29.2d uzp2 v28.2d, v28.2d, v29.2d uzp1 v29.2d, v30.2d, v31.2d @@ -472,7 +472,7 @@ Tile4Quan: smin v19.16b, v11.16b, v19.16b st1 {v19.16b}, [x26], x4 // dst += dz * dst_step Tile4LoopCheck: - cmp x16, #1 + cmp x24, #1 bge LoopDz_TILE_4 Tile4End: sub x7, x7, #4 @@ -482,7 +482,7 @@ Tile4End: TILE_2: cmp x7, #2 blt TILE_1 - mov x16, x5 // dst_depth_quad + mov x24, x5 // dst_depth_quad mov x26, x0 // dst mov x25, x2 // weight mov x19, x8 // scale @@ -507,7 +507,7 @@ LoopSz_TILE_2: bne LoopSz_TILE_2 LoopSzEnd_TILE_2: add x25, x25, x15 - sub x16, x16, #1 + sub x24, x24, #1 uzp1 v29.2d, v30.2d, v31.2d uzp2 v30.2d, v30.2d, v31.2d scvtf v29.4s, v29.4s @@ -532,7 +532,7 @@ Tile2Quan: st1 {v19.8b}, [x26], x4 // dst += dz * dst_step Tile2LoopCheck: - cmp x16, #1 + cmp x24, #1 bge LoopDz_TILE_2 Tile2End: sub x7, x7, #2 @@ -542,7 +542,7 @@ Tile2End: TILE_1: cmp x7, #1 blt End - mov x16, x5 // dst_depth_quad + mov x24, x5 // dst_depth_quad mov x26, x0 // dst mov x25, x2 // weight mov x19, x8 // scale @@ -567,7 +567,7 @@ LoopSz_TILE_1: bne LoopSz_TILE_1 LoopSzEnd_TILE_1: add x25, x25, x15 - sub x16, x16, #1 + sub x24, x24, #1 uzp1 v29.2d, v30.2d, v31.2d uzp2 v30.2d, v30.2d, v31.2d scvtf v29.4s, v29.4s @@ -592,7 +592,7 @@ Tile1Quan: st1 {v19.s}[0], [x26], x4 // dst += dz * dst_step Tile1LoopEnd: - cmp x16, #1 + cmp x24, #1 bge LoopDz_TILE_1 End: diff --git a/source/backend/cpu/arm/arm64/bf16/ARMV86_MNNPackedMatMulRemain_BF16.S b/source/backend/cpu/arm/arm64/bf16/ARMV86_MNNPackedMatMulRemain_BF16.S index 4c425e061..2acfe6930 100644 --- a/source/backend/cpu/arm/arm64/bf16/ARMV86_MNNPackedMatMulRemain_BF16.S +++ b/source/backend/cpu/arm/arm64/bf16/ARMV86_MNNPackedMatMulRemain_BF16.S @@ -50,15 +50,16 @@ asm_function ARMV86_MNNPackedMatMulRemain_BF16 //void ARMV86_MNNPackedMatMulRemain_BF16(float* C, const float* A, const float* B, size_t eSize, const size_t* parameter, const float* postParameters, const float* bias); //Auto x0: C, x1:A, x2:B, x3:eSize, x4:parameter, x5:postParameters, x6:bias -sub sp, sp, #32 +sub sp, sp, #64 str x19, [sp, #0] str x20, [sp, #8] str x21, [sp, #16] +str x22, [sp, #24] ldr x11, [x4, #0] // aStride ldr x9, [x4, #8] // l ldr x10, [x4, #16] // h lsl x11, x11, #2 // aStride * 4 -mov x16, #64 // B_stride = LP * HP = 4 * 8 * sizeof(int16_t) +mov x22, #64 // B_stride = LP * HP = 4 * 8 * sizeof(int16_t) ldr x7, [x4, #24] // cStride ldr x19, [x4, #40] // bExtraStride @@ -117,7 +118,7 @@ LoopE8: // e, TILE_BLOCK size is 8 // B [8, 4, bf16] : rn = 4 : v0 - v3 // C [8, 8, fp32] : rn = 16 : v16 - v31 ld1 {v4.8h, v5.8h, v6.8h, v7.8h}, [x15], x11 // A: 8 * 4 * sizeof(int16_t) - ld1 {v0.8h, v1.8h, v2.8h, v3.8h}, [x13], x16 // B: 8 * 4 * sizeof(int16_t) + ld1 {v0.8h, v1.8h, v2.8h, v3.8h}, [x13], x22 // B: 8 * 4 * sizeof(int16_t) .inst 0x6e40ec90 // bfmmla v16.4s, v4.8h, v0.8h .inst 0x6e41ec91 // bfmmla v17.4s, v4.8h, v1.8h .inst 0x6e40ecb2 // bfmmla v18.4s, v5.8h, v0.8h @@ -200,7 +201,7 @@ LoopE8: // e, TILE_BLOCK size is 8 // B [4, 4, bf16] : rn = 2 : v0 - v1 // C [8, 4, fp32] : rn = 8 : v16 - v23 ld1 {v4.8h, v5.8h, v6.8h, v7.8h}, [x15], x11 // A: 8 * 4 * sizeof(int16_t) - ld1 {v0.8h, v1.8h}, [x13], x16 // B: 4 * 4 * sizeof(int16_t) + ld1 {v0.8h, v1.8h}, [x13], x22 // B: 4 * 4 * sizeof(int16_t) .inst 0x6e40ec90 // bfmmla v16.4s, v4.8h, v0.8h .inst 0x6e41ec91 // bfmmla v17.4s, v4.8h, v1.8h .inst 0x6e40ecb2 // bfmmla v18.4s, v5.8h, v0.8h @@ -276,7 +277,7 @@ E4LH8: // B [8, 4, bf16] : rn = 4 : v0 - v3 // C [4, 8, fp32] : rn = 8 : v16 - v23 ld1 {v4.8h, v5.8h}, [x15], x11 // A: 4 * 4 * sizeof(int16_t) - ld1 {v0.8h, v1.8h, v2.8h, v3.8h}, [x13], x16 // B: 8 * 4 * sizeof(int16_t) + ld1 {v0.8h, v1.8h, v2.8h, v3.8h}, [x13], x22 // B: 8 * 4 * sizeof(int16_t) .inst 0x6e40ec90 // bfmmla v16.4s, v4.8h, v0.8h .inst 0x6e41ec91 // bfmmla v17.4s, v4.8h, v1.8h .inst 0x6e40ecb2 // bfmmla v18.4s, v5.8h, v0.8h @@ -331,7 +332,7 @@ E4LH8: // B [4, 4, bf16] : rn = 4 : v0 - v1 // C [4, 4, fp32] : rn = 4 : v16 - v19 ld1 {v4.8h, v5.8h}, [x15], x11 // A: 4 * 4 * sizeof(int16_t) - ld1 {v0.8h, v1.8h}, [x13], x16 // B: 4 * 4 * sizeof(int16_t) + ld1 {v0.8h, v1.8h}, [x13], x22 // B: 4 * 4 * sizeof(int16_t) .inst 0x6e40ec90 // bfmmla v16.4s, v4.8h, v0.8h .inst 0x6e41ec91 // bfmmla v17.4s, v4.8h, v1.8h .inst 0x6e40ecb2 // bfmmla v18.4s, v5.8h, v0.8h @@ -388,7 +389,7 @@ E2LH8: // B [8, 4, bf16] : rn = 2 : v0 - v3 // C [2, 8, fp32] : rn = 4 : v16 - v19 ld1 {v4.8h}, [x15], x11 // A: 2 * 4 * sizeof(int16_t) - ld1 {v0.8h, v1.8h, v2.8h, v3.8h}, [x13], x16 // B: 8 * 4 * sizeof(int16_t) + ld1 {v0.8h, v1.8h, v2.8h, v3.8h}, [x13], x22 // B: 8 * 4 * sizeof(int16_t) .inst 0x6e40ec90 // bfmmla v16.4s, v4.8h, v0.8h .inst 0x6e41ec91 // bfmmla v17.4s, v4.8h, v1.8h .inst 0x6e42ec92 // bfmmla v18.4s, v4.8h, v2.8h @@ -431,7 +432,7 @@ E2LH8: // B [4, 4, bf16] : rn = 2 : v0 - v1 // C [2, 4, fp32] : rn = 2 : v16 - v17 ld1 {v4.8h}, [x15], x11 // A: 2 * 4 * sizeof(int16_t) - ld1 {v0.8h, v1.8h}, [x13], x16 // B: 4 * 4 * sizeof(int16_t) + ld1 {v0.8h, v1.8h}, [x13], x22 // B: 4 * 4 * sizeof(int16_t) .inst 0x6e40ec90 // bfmmla v16.4s, v4.8h, v0.8h .inst 0x6e41ec91 // bfmmla v17.4s, v4.8h, v1.8h subs x12, x12, #1 @@ -489,7 +490,7 @@ LoopE1: // B [8, 4, bf16] : rn = 4 : v0 - v3 // C [1, 8, fp32] : rn = 4 : v16 - v19 ld1 {v4.4h}, [x15], x11 // A: 1 * 4 * sizeof(int16_t) - ld1 {v0.8h, v1.8h, v2.8h, v3.8h}, [x13], x16 // B: 8 * 4 * sizeof(int16_t) + ld1 {v0.8h, v1.8h, v2.8h, v3.8h}, [x13], x22 // B: 8 * 4 * sizeof(int16_t) .inst 0x6e40ec90 // bfmmla v16.4s, v4.8h, v0.8h .inst 0x6e41ec91 // bfmmla v17.4s, v4.8h, v1.8h .inst 0x6e42ec92 // bfmmla v18.4s, v4.8h, v2.8h @@ -535,7 +536,7 @@ LoopE1: // B [4, 4, bf16] : rn = 2 : v0 - v1 // C [1, 8, fp32] : rn = 4 : v16 - v17 ld1 {v4.4h}, [x15], x11 // A: 1 * 4 * sizeof(int16_t) - ld1 {v0.8h, v1.8h}, [x13], x16 // B: 4 * 4 * sizeof(int16_t) + ld1 {v0.8h, v1.8h}, [x13], x22 // B: 4 * 4 * sizeof(int16_t) .inst 0x6e40ec90 // bfmmla v16.4s, v4.8h, v0.8h .inst 0x6e41ec91 // bfmmla v17.4s, v4.8h, v1.8h subs x12, x12, #1 @@ -558,7 +559,8 @@ End: ldr x19, [sp, #0] ldr x20, [sp, #8] ldr x21, [sp, #16] -add sp, sp, #32 +ldr x22, [sp, #24] +add sp, sp, #64 ret #endif diff --git a/source/backend/cpu/arm/arm64/bf16/ARMV86_MNNPackedMatMul_BF16.S b/source/backend/cpu/arm/arm64/bf16/ARMV86_MNNPackedMatMul_BF16.S index 599b9bd04..7d3282969 100644 --- a/source/backend/cpu/arm/arm64/bf16/ARMV86_MNNPackedMatMul_BF16.S +++ b/source/backend/cpu/arm/arm64/bf16/ARMV86_MNNPackedMatMul_BF16.S @@ -51,10 +51,11 @@ asm_function ARMV86_MNNPackedMatMul_BF16 //void ARMV86_MNNPackedMatMul_BF16(float* C, const float* A, const float* B, const size_t* parameter, const float* postParameters, const float* bias); // x0: C, x1:A, x2:B, x3:parameter, x4: postParameters, x5:bias -stp d14, d15, [sp, #-64]! +stp d14, d15, [sp, #-80]! stp d12, d13, [sp, #16] stp d10, d11, [sp, #32] stp d8, d9, [sp, #48] +stp x19, x21, [sp, #64] //ldr x8, [x3, #0] // deprecated ldr x9, [x3, #8] // l @@ -71,8 +72,8 @@ lsr x9, x9, #2 cbz x4, Start ld1 {v5.4s}, [x4] -mov w17, v5.s[2] // min value -mov w18, v5.s[3] // max value +mov w19, v5.s[2] // min value +mov w20, v5.s[3] // max value Start: cmp x10, #2 @@ -169,8 +170,8 @@ LoopH: uzp2 v30.2d, v30.2d, v31.2d cbz x4, StoreLH8 PostTreatLH8: - dup v5.4s, w17 - dup v6.4s, w18 + dup v5.4s, w19 + dup v6.4s, w20 FOURFMAX v5, v7, v8, v9, v10 FOURFMAX v5, v11, v12, v13, v14 FOURFMAX v5, v15, v16, v17, v18 @@ -259,8 +260,8 @@ LoopHR: uzp2 v18.2d, v18.2d, v19.2d cbz x4, StoreLH4 PostTreatLH4: - dup v5.4s, w17 - dup v6.4s, w18 + dup v5.4s, w19 + dup v6.4s, w20 FOURFMAX v5, v7, v8, v9, v10 FOURFMAX v5, v11, v12, v13, v14 FOURFMAX v5, v15, v16, v17, v18 @@ -275,10 +276,11 @@ LoopHR: st1 {v11.4h, v12.4h, v13.4h, v14.4h}, [x0], #32 // 16 * sizeof(int16_t) st1 {v15.4h, v16.4h, v17.4h, v18.4h}, [x0], #32 // 16 * sizeof(int16_t) End: +ldp x19, x21, [sp, #64] ldp d8, d9, [sp, #48] ldp d10, d11, [sp, #32] ldp d12, d13, [sp, #16] -ldp d14, d15, [sp], #64 +ldp d14, d15, [sp], #80 ret #endif diff --git a/source/backend/cpu/arm/arm64/low_memory/MNNPackedMatMulRemain_int4.S b/source/backend/cpu/arm/arm64/low_memory/MNNPackedMatMulRemain_int4.S index 3c4a6ffcc..b7c904480 100644 --- a/source/backend/cpu/arm/arm64/low_memory/MNNPackedMatMulRemain_int4.S +++ b/source/backend/cpu/arm/arm64/low_memory/MNNPackedMatMulRemain_int4.S @@ -17,12 +17,17 @@ asm_function MNNPackedMatMulRemain_int4 //void MNNPackedMatMulRemain_int4(float* C, const float* A, const float* B, size_t eSize, const size_t* parameter, const float* postParameters, const float* bias, const float* k, const float* b); //Auto x0: C, x1:A, x2:B, x3:eSize, x4:parameter, x5:postParameters, x6:bias, x7: k, x8: b ldr x8, [sp] -sub sp, sp, #64 -str x19, [sp, #0] -str x20, [sp, #8] -str x21, [sp, #16] -str x22, [sp, #24] -str x23, [sp, #32] +stp d14, d15, [sp, #(-16 * 8)]! +stp d12, d13, [sp, #16] +stp d10, d11, [sp, #32] +stp d8, d9, [sp, #48] +stp x25, x26, [sp, #(16 * 4)] +stp x23, x24, [sp, #(16 * 5)] +stp x21, x22, [sp, #(16 * 6)] +stp x19, x20, [sp, #(16 * 7)] + +mov w22, #0x0f +dup v10.8b, w22 mov x22, x7 // alpha mov x23, x8 // bias @@ -53,158 +58,93 @@ LoopE8: mov x21, x0 mov x13, x2 mov x14, x22 - mov x16, x23 + mov x24, x23 LH8: cmp x8, #2 blt LH4 - // sub x14, x7, #64 LoopH8x8: mov x15, x1 + subs x12, x9, #1 ld1 {v12.4s, v13.4s}, [x14], #32 // alpha - mov w17, #0x0f - dup v3.8b, w17 - mov w17, #8 - dup v4.8b, w17 - ld1 {v14.4s, v15.4s}, [x16], #32 // bias - subs x12, x9, #2 - ld1 {v0.4h}, [x13], #8 + ld1 {v14.4s, v15.4s}, [x24], #32 // bias + + ld1 {v0.s}[0], [x13], #4 ushr v1.8b, v0.8b, #4 - and v2.8b, v0.8b, v3.8b - sub v1.8b, v1.8b, v4.8b - sub v2.8b, v2.8b, v4.8b - zip1 v9.8b, v1.8b, v2.8b - zip2 v10.8b, v1.8b, v2.8b - sxtl v0.8h, v9.8b - sxtl v1.8h, v10.8b - sxtl v8.4s, v0.4h - sxtl2 v9.4s, v0.8h - sxtl v10.4s, v1.4h - sxtl2 v11.4s, v1.8h + and v2.8b, v0.8b, v10.8b + zip1 v3.8b, v1.8b, v2.8b + + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + sxtl2 v9.4s, v4.8h scvtf v0.4s, v8.4s scvtf v1.4s, v9.4s - mov v8.16b, v14.16b - mov v9.16b, v15.16b - fmla v8.4s, v0.4s, v12.4s - fmla v9.4s, v1.4s, v13.4s - scvtf v0.4s, v10.4s - scvtf v1.4s, v11.4s - mov v10.16b, v14.16b - mov v11.16b, v15.16b - fmla v10.4s, v0.4s, v12.4s - fmla v11.4s, v1.4s, v13.4s - ld1 {v0.4s, v1.4s}, [x15], x11 - fmul v16.4s, v8.4s, v0.s[0] - fmul v17.4s, v8.4s, v0.s[1] - fmul v18.4s, v8.4s, v0.s[2] - fmul v19.4s, v8.4s, v0.s[3] - - fmul v20.4s, v9.4s, v0.s[0] - fmul v21.4s, v9.4s, v0.s[1] - fmul v22.4s, v9.4s, v0.s[2] - fmul v23.4s, v9.4s, v0.s[3] - - fmul v24.4s, v8.4s, v1.s[0] - fmul v25.4s, v8.4s, v1.s[1] - fmul v26.4s, v8.4s, v1.s[2] - fmul v27.4s, v8.4s, v1.s[3] - - fmul v28.4s, v9.4s, v1.s[0] - fmul v29.4s, v9.4s, v1.s[1] - fmul v30.4s, v9.4s, v1.s[2] - fmul v31.4s, v9.4s, v1.s[3] + fmul v3.4s, v0.4s, v12.4s + fmul v4.4s, v1.4s, v13.4s + fadd v3.4s, v3.4s, v14.4s + fadd v4.4s, v4.4s, v15.4s + ld1 {v0.4s, v1.4s}, [x15], x11 - fmla v16.4s, v10.4s, v0.s[0] - fmla v17.4s, v10.4s, v0.s[1] - fmla v18.4s, v10.4s, v0.s[2] - fmla v19.4s, v10.4s, v0.s[3] - - fmla v20.4s, v11.4s, v0.s[0] - fmla v21.4s, v11.4s, v0.s[1] - fmla v22.4s, v11.4s, v0.s[2] - fmla v23.4s, v11.4s, v0.s[3] - - fmla v24.4s, v10.4s, v1.s[0] - fmla v25.4s, v10.4s, v1.s[1] - fmla v26.4s, v10.4s, v1.s[2] - fmla v27.4s, v10.4s, v1.s[3] - - fmla v28.4s, v11.4s, v1.s[0] - fmla v29.4s, v11.4s, v1.s[1] - fmla v30.4s, v11.4s, v1.s[2] - fmla v31.4s, v11.4s, v1.s[3] + fmul v16.4s, v3.4s, v0.s[0] + fmul v17.4s, v3.4s, v0.s[1] + fmul v18.4s, v3.4s, v0.s[2] + fmul v19.4s, v3.4s, v0.s[3] + + fmul v20.4s, v4.4s, v0.s[0] + fmul v21.4s, v4.4s, v0.s[1] + fmul v22.4s, v4.4s, v0.s[2] + fmul v23.4s, v4.4s, v0.s[3] + + fmul v24.4s, v3.4s, v1.s[0] + fmul v25.4s, v3.4s, v1.s[1] + fmul v26.4s, v3.4s, v1.s[2] + fmul v27.4s, v3.4s, v1.s[3] + + fmul v28.4s, v4.4s, v1.s[0] + fmul v29.4s, v4.4s, v1.s[1] + fmul v30.4s, v4.4s, v1.s[2] + fmul v31.4s, v4.4s, v1.s[3] beq LoopLEnd LoopL: - subs x12, x12, #2 - ld1 {v0.4h}, [x13], #8 + ld1 {v0.s}[0], [x13], #4 ushr v1.8b, v0.8b, #4 - and v2.8b, v0.8b, v3.8b - sub v1.8b, v1.8b, v4.8b - sub v2.8b, v2.8b, v4.8b - zip1 v9.8b, v1.8b, v2.8b - zip2 v10.8b, v1.8b, v2.8b - sxtl v0.8h, v9.8b - sxtl v1.8h, v10.8b - sxtl v8.4s, v0.4h - sxtl2 v9.4s, v0.8h - sxtl v10.4s, v1.4h - sxtl2 v11.4s, v1.8h + and v2.8b, v0.8b, v10.8b + zip1 v3.8b, v1.8b, v2.8b + + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + sxtl2 v9.4s, v4.8h scvtf v0.4s, v8.4s scvtf v1.4s, v9.4s - mov v8.16b, v14.16b - mov v9.16b, v15.16b - fmla v8.4s, v0.4s, v12.4s - fmla v9.4s, v1.4s, v13.4s - scvtf v0.4s, v10.4s - scvtf v1.4s, v11.4s - mov v10.16b, v14.16b - mov v11.16b, v15.16b - fmla v10.4s, v0.4s, v12.4s - fmla v11.4s, v1.4s, v13.4s - ld1 {v0.4s, v1.4s}, [x15], x11 - fmla v16.4s, v8.4s, v0.s[0] - fmla v17.4s, v8.4s, v0.s[1] - fmla v18.4s, v8.4s, v0.s[2] - fmla v19.4s, v8.4s, v0.s[3] - - fmla v20.4s, v9.4s, v0.s[0] - fmla v21.4s, v9.4s, v0.s[1] - fmla v22.4s, v9.4s, v0.s[2] - fmla v23.4s, v9.4s, v0.s[3] - - fmla v24.4s, v8.4s, v1.s[0] - fmla v25.4s, v8.4s, v1.s[1] - fmla v26.4s, v8.4s, v1.s[2] - fmla v27.4s, v8.4s, v1.s[3] - - fmla v28.4s, v9.4s, v1.s[0] - fmla v29.4s, v9.4s, v1.s[1] - fmla v30.4s, v9.4s, v1.s[2] - fmla v31.4s, v9.4s, v1.s[3] + fmul v3.4s, v0.4s, v12.4s + fmul v4.4s, v1.4s, v13.4s + fadd v3.4s, v3.4s, v14.4s + fadd v4.4s, v4.4s, v15.4s ld1 {v0.4s, v1.4s}, [x15], x11 - fmla v16.4s, v10.4s, v0.s[0] - fmla v17.4s, v10.4s, v0.s[1] - fmla v18.4s, v10.4s, v0.s[2] - fmla v19.4s, v10.4s, v0.s[3] - - fmla v20.4s, v11.4s, v0.s[0] - fmla v21.4s, v11.4s, v0.s[1] - fmla v22.4s, v11.4s, v0.s[2] - fmla v23.4s, v11.4s, v0.s[3] - - fmla v24.4s, v10.4s, v1.s[0] - fmla v25.4s, v10.4s, v1.s[1] - fmla v26.4s, v10.4s, v1.s[2] - fmla v27.4s, v10.4s, v1.s[3] - - fmla v28.4s, v11.4s, v1.s[0] - fmla v29.4s, v11.4s, v1.s[1] - fmla v30.4s, v11.4s, v1.s[2] - fmla v31.4s, v11.4s, v1.s[3] - + fmla v16.4s, v3.4s, v0.s[0] + fmla v17.4s, v3.4s, v0.s[1] + fmla v18.4s, v3.4s, v0.s[2] + fmla v19.4s, v3.4s, v0.s[3] + + fmla v20.4s, v4.4s, v0.s[0] + fmla v21.4s, v4.4s, v0.s[1] + fmla v22.4s, v4.4s, v0.s[2] + fmla v23.4s, v4.4s, v0.s[3] + + fmla v24.4s, v3.4s, v1.s[0] + fmla v25.4s, v3.4s, v1.s[1] + fmla v26.4s, v3.4s, v1.s[2] + fmla v27.4s, v3.4s, v1.s[3] + + fmla v28.4s, v4.4s, v1.s[0] + fmla v29.4s, v4.4s, v1.s[1] + fmla v30.4s, v4.4s, v1.s[2] + fmla v31.4s, v4.4s, v1.s[3] + + subs x12, x12, #1 bne LoopL LoopLEnd: @@ -296,180 +236,61 @@ LoopE8: cbz x8, E8End LoopHRemain: mov x15, x1 - ld1 {v4.4s}, [x14], #16 // alpha - mov w17, #0x0f - dup v30.8b, w17 - mov w17, #8 - dup v31.8b, w17 - ld1 {v14.4s}, [x16], #16 // bias - subs x12, x9, #4 - // load 16xint4 to 4xfloat - ld1 {v3.8h}, [x13] - uzp1 v0.8h, v3.8h, v3.8h - ushr v1.8b, v0.8b, #4 - and v2.8b, v0.8b, v30.8b - sub v1.8b, v1.8b, v31.8b - sub v2.8b, v2.8b, v31.8b - - zip1 v9.8b, v1.8b, v2.8b - zip2 v10.8b, v1.8b, v2.8b - sxtl v11.8h, v9.8b - sxtl v12.8h, v10.8b - sxtl v8.4s, v11.4h - sxtl2 v9.4s, v11.8h - sxtl v10.4s, v12.4h - sxtl2 v11.4s, v12.8h - scvtf v12.4s, v8.4s - scvtf v13.4s, v9.4s - mov v8.16b, v14.16b - mov v9.16b, v14.16b - fmla v8.4s, v12.4s, v4.4s - fmla v9.4s, v13.4s, v4.4s - scvtf v12.4s, v10.4s - scvtf v13.4s, v11.4s - mov v10.16b, v14.16b - mov v11.16b, v14.16b - fmla v10.4s, v12.4s, v4.4s - fmla v11.4s, v13.4s, v4.4s - - ld1 {v0.4s}, [x15], #16 - fmul v16.4s, v8.4s, v0.s[0] - fmul v17.4s, v8.4s, v0.s[1] - ld1 {v1.4s}, [x15] - fmul v18.4s, v8.4s, v0.s[2] - sub x15, x15, #16 - fmul v19.4s, v8.4s, v0.s[3] - add x15, x15, x11 - fmul v20.4s, v8.4s, v1.s[0] - fmul v21.4s, v8.4s, v1.s[1] - fmul v22.4s, v8.4s, v1.s[2] - fmul v23.4s, v8.4s, v1.s[3] + subs x12, x9, #1 + ld1 {v12.4s}, [x14] // alpha + ld1 {v14.4s}, [x24] // bias - ld1 {v0.4s}, [x15], #16 - fmla v16.4s, v9.4s, v0.s[0] - fmla v17.4s, v9.4s, v0.s[1] - ld1 {v1.4s}, [x15] - fmla v18.4s, v9.4s, v0.s[2] - sub x15, x15, #16 - fmla v19.4s, v9.4s, v0.s[3] - add x15, x15, x11 - fmla v20.4s, v9.4s, v1.s[0] - fmla v21.4s, v9.4s, v1.s[1] - fmla v22.4s, v9.4s, v1.s[2] - fmla v23.4s, v9.4s, v1.s[3] + ld1 {v0.s}[0], [x13], #4 + ushr v1.8b, v0.8b, #4 + and v2.8b, v0.8b, v10.8b + zip1 v3.8b, v1.8b, v2.8b - ld1 {v0.4s}, [x15], #16 - fmla v16.4s, v10.4s, v0.s[0] - fmla v17.4s, v10.4s, v0.s[1] - ld1 {v1.4s}, [x15] - fmla v18.4s, v10.4s, v0.s[2] - sub x15, x15, #16 - fmla v19.4s, v10.4s, v0.s[3] - add x15, x15, x11 - fmla v20.4s, v10.4s, v1.s[0] - fmla v21.4s, v10.4s, v1.s[1] - fmla v22.4s, v10.4s, v1.s[2] - fmla v23.4s, v10.4s, v1.s[3] + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + scvtf v0.4s, v8.4s + fmul v3.4s, v0.4s, v12.4s + fadd v3.4s, v3.4s, v14.4s ld1 {v0.4s}, [x15], #16 - fmla v16.4s, v11.4s, v0.s[0] - fmla v17.4s, v11.4s, v0.s[1] + fmul v16.4s, v3.4s, v0.s[0] + fmul v17.4s, v3.4s, v0.s[1] ld1 {v1.4s}, [x15] - fmla v18.4s, v11.4s, v0.s[2] + fmul v18.4s, v3.4s, v0.s[2] sub x15, x15, #16 - fmla v19.4s, v11.4s, v0.s[3] + fmul v19.4s, v3.4s, v0.s[3] add x15, x15, x11 - fmla v20.4s, v11.4s, v1.s[0] - fmla v21.4s, v11.4s, v1.s[1] - fmla v22.4s, v11.4s, v1.s[2] - fmla v23.4s, v11.4s, v1.s[3] - - add x13, x13, #16 + fmul v20.4s, v3.4s, v1.s[0] + fmul v21.4s, v3.4s, v1.s[1] + fmul v22.4s, v3.4s, v1.s[2] + fmul v23.4s, v3.4s, v1.s[3] beq LoopLREnd LoopLR: - ld1 {v3.8h}, [x13] - uzp1 v0.8h, v3.8h, v3.8h + ld1 {v0.s}[0], [x13], #4 ushr v1.8b, v0.8b, #4 - and v2.8b, v0.8b, v30.8b - sub v1.8b, v1.8b, v31.8b - sub v2.8b, v2.8b, v31.8b - - zip1 v9.8b, v1.8b, v2.8b - zip2 v10.8b, v1.8b, v2.8b - sxtl v11.8h, v9.8b - sxtl v12.8h, v10.8b - sxtl v8.4s, v11.4h - sxtl2 v9.4s, v11.8h - sxtl v10.4s, v12.4h - sxtl2 v11.4s, v12.8h - scvtf v12.4s, v8.4s - scvtf v13.4s, v9.4s - mov v8.16b, v14.16b - mov v9.16b, v14.16b - fmla v8.4s, v12.4s, v4.4s - fmla v9.4s, v13.4s, v4.4s - scvtf v12.4s, v10.4s - scvtf v13.4s, v11.4s - mov v10.16b, v14.16b - mov v11.16b, v14.16b - fmla v10.4s, v12.4s, v4.4s - fmla v11.4s, v13.4s, v4.4s - - ld1 {v0.4s}, [x15], #16 - fmla v16.4s, v8.4s, v0.s[0] - fmla v17.4s, v8.4s, v0.s[1] - ld1 {v1.4s}, [x15] - fmla v18.4s, v8.4s, v0.s[2] - sub x15, x15, #16 - fmla v19.4s, v8.4s, v0.s[3] - add x15, x15, x11 - fmla v20.4s, v8.4s, v1.s[0] - fmla v21.4s, v8.4s, v1.s[1] - fmla v22.4s, v8.4s, v1.s[2] - fmla v23.4s, v8.4s, v1.s[3] - - ld1 {v0.4s}, [x15], #16 - fmla v16.4s, v9.4s, v0.s[0] - fmla v17.4s, v9.4s, v0.s[1] - ld1 {v1.4s}, [x15] - fmla v18.4s, v9.4s, v0.s[2] - sub x15, x15, #16 - fmla v19.4s, v9.4s, v0.s[3] - add x15, x15, x11 - fmla v20.4s, v9.4s, v1.s[0] - fmla v21.4s, v9.4s, v1.s[1] - fmla v22.4s, v9.4s, v1.s[2] - fmla v23.4s, v9.4s, v1.s[3] + and v2.8b, v0.8b, v10.8b + zip1 v3.8b, v1.8b, v2.8b + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + scvtf v0.4s, v8.4s + fmul v3.4s, v0.4s, v12.4s + fadd v3.4s, v3.4s, v14.4s ld1 {v0.4s}, [x15], #16 - fmla v16.4s, v10.4s, v0.s[0] - fmla v17.4s, v10.4s, v0.s[1] + fmla v16.4s, v3.4s, v0.s[0] + fmla v17.4s, v3.4s, v0.s[1] ld1 {v1.4s}, [x15] - fmla v18.4s, v10.4s, v0.s[2] + fmla v18.4s, v3.4s, v0.s[2] sub x15, x15, #16 - fmla v19.4s, v10.4s, v0.s[3] + fmla v19.4s, v3.4s, v0.s[3] add x15, x15, x11 - fmla v20.4s, v10.4s, v1.s[0] - fmla v21.4s, v10.4s, v1.s[1] - fmla v22.4s, v10.4s, v1.s[2] - fmla v23.4s, v10.4s, v1.s[3] - ld1 {v0.4s}, [x15], #16 - fmla v16.4s, v11.4s, v0.s[0] - fmla v17.4s, v11.4s, v0.s[1] - ld1 {v1.4s}, [x15] - fmla v18.4s, v11.4s, v0.s[2] - sub x15, x15, #16 - fmla v19.4s, v11.4s, v0.s[3] - add x15, x15, x11 - fmla v20.4s, v11.4s, v1.s[0] - fmla v21.4s, v11.4s, v1.s[1] - fmla v22.4s, v11.4s, v1.s[2] - fmla v23.4s, v11.4s, v1.s[3] + fmla v20.4s, v3.4s, v1.s[0] + fmla v21.4s, v3.4s, v1.s[1] + fmla v22.4s, v3.4s, v1.s[2] + fmla v23.4s, v3.4s, v1.s[3] - add x13, x13, #16 - subs x12, x12, #4 + subs x12, x12, #1 bne LoopLR LoopLREnd: @@ -533,7 +354,7 @@ blt E1 mov x21, x0 mov x13, x2 mov x14, x22 - mov x16, x23 + mov x24, x23 cmp x8, #2 blt E4LH4 @@ -541,113 +362,102 @@ blt E1 E4LH8: E4LoopH8: mov x15, x1 - ld1 {v24.4s, v25.4s}, [x14], #32 // alpha - mov w17, #0x0f - dup v30.8b, w17 - mov w17, #8 - dup v31.8b, w17 - ld1 {v26.4s, v27.4s}, [x16], #32 // bias - subs x12, x9, #2 - // ld1 {v3.4s, v4.4s}, [x13], #32 - ld1 {v0.4h}, [x13], #8 + subs x12, x9, #1 + + ld1 {v12.4s, v13.4s}, [x14], #32 // alpha + ld1 {v14.4s, v15.4s}, [x24], #32 // bias + + ld1 {v0.s}[0], [x13], #4 ushr v1.8b, v0.8b, #4 - and v2.8b, v0.8b, v30.8b - sub v1.8b, v1.8b, v31.8b - sub v2.8b, v2.8b, v31.8b - zip1 v9.8b, v1.8b, v2.8b - zip2 v10.8b, v1.8b, v2.8b - sxtl v11.8h, v9.8b - sxtl v12.8h, v10.8b - sxtl v8.4s, v11.4h - sxtl2 v9.4s, v11.8h - sxtl v10.4s, v12.4h - sxtl2 v11.4s, v12.8h - scvtf v12.4s, v8.4s - scvtf v13.4s, v9.4s - mov v8.16b, v26.16b - mov v9.16b, v27.16b - fmla v8.4s, v12.4s, v24.4s - fmla v9.4s, v13.4s, v25.4s - scvtf v12.4s, v10.4s - scvtf v13.4s, v11.4s - mov v10.16b, v26.16b - mov v11.16b, v27.16b - fmla v10.4s, v12.4s, v24.4s - fmla v11.4s, v13.4s, v25.4s + and v2.8b, v0.8b, v10.8b + zip1 v3.8b, v1.8b, v2.8b + + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + sxtl2 v9.4s, v4.8h + scvtf v0.4s, v8.4s + scvtf v1.4s, v9.4s + fmul v3.4s, v0.4s, v12.4s + fmul v4.4s, v1.4s, v13.4s + fadd v3.4s, v3.4s, v14.4s + fadd v4.4s, v4.4s, v15.4s ld1 {v0.4s}, [x15], x11 - ld1 {v1.4s}, [x15], x11 - fmul v16.4s, v8.4s, v0.s[0] - fmul v17.4s, v8.4s, v0.s[1] - fmul v18.4s, v8.4s, v0.s[2] - fmul v19.4s, v8.4s, v0.s[3] - - fmul v20.4s, v9.4s, v0.s[0] - fmul v21.4s, v9.4s, v0.s[1] - fmul v22.4s, v9.4s, v0.s[2] - fmul v23.4s, v9.4s, v0.s[3] - - fmla v16.4s, v10.4s, v1.s[0] - fmla v17.4s, v10.4s, v1.s[1] - fmla v18.4s, v10.4s, v1.s[2] - fmla v19.4s, v10.4s, v1.s[3] - - fmla v20.4s, v11.4s, v1.s[0] - fmla v21.4s, v11.4s, v1.s[1] - fmla v22.4s, v11.4s, v1.s[2] - fmla v23.4s, v11.4s, v1.s[3] + fmul v16.4s, v3.4s, v0.s[0] + fmul v17.4s, v3.4s, v0.s[1] + fmul v18.4s, v3.4s, v0.s[2] + fmul v19.4s, v3.4s, v0.s[3] + + fmul v20.4s, v4.4s, v0.s[0] + fmul v21.4s, v4.4s, v0.s[1] + fmul v22.4s, v4.4s, v0.s[2] + fmul v23.4s, v4.4s, v0.s[3] + beq E4LoopLEnd + subs x12, x12, #1 + + ld1 {v0.s}[0], [x13], #4 + ushr v1.8b, v0.8b, #4 + and v2.8b, v0.8b, v10.8b + zip1 v3.8b, v1.8b, v2.8b + + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + sxtl2 v9.4s, v4.8h + scvtf v0.4s, v8.4s + scvtf v1.4s, v9.4s + fmul v3.4s, v0.4s, v12.4s + fmul v4.4s, v1.4s, v13.4s + fadd v3.4s, v3.4s, v14.4s + fadd v4.4s, v4.4s, v15.4s + + ld1 {v0.4s}, [x15], x11 + fmla v16.4s, v3.4s, v0.s[0] + fmla v17.4s, v3.4s, v0.s[1] + + beq E4LoopLComputeEnd + E4LoopL: - subs x12, x12, #2 - // ld1 {v3.4s, v4.4s}, [x13], #32 - ld1 {v0.4h}, [x13], #8 + fmla v18.4s, v3.4s, v0.s[2] + fmla v19.4s, v3.4s, v0.s[3] + + fmla v20.4s, v4.4s, v0.s[0] + fmla v21.4s, v4.4s, v0.s[1] + fmla v22.4s, v4.4s, v0.s[2] + fmla v23.4s, v4.4s, v0.s[3] + + + ld1 {v0.s}[0], [x13], #4 ushr v1.8b, v0.8b, #4 - and v2.8b, v0.8b, v30.8b - sub v1.8b, v1.8b, v31.8b - sub v2.8b, v2.8b, v31.8b - zip1 v9.8b, v1.8b, v2.8b - zip2 v10.8b, v1.8b, v2.8b - sxtl v11.8h, v9.8b - sxtl v12.8h, v10.8b - sxtl v8.4s, v11.4h - sxtl2 v9.4s, v11.8h - sxtl v10.4s, v12.4h - sxtl2 v11.4s, v12.8h - scvtf v12.4s, v8.4s - scvtf v13.4s, v9.4s - mov v8.16b, v26.16b - mov v9.16b, v27.16b - fmla v8.4s, v12.4s, v24.4s - fmla v9.4s, v13.4s, v25.4s - scvtf v12.4s, v10.4s - scvtf v13.4s, v11.4s - mov v10.16b, v26.16b - mov v11.16b, v27.16b - fmla v10.4s, v12.4s, v24.4s - fmla v11.4s, v13.4s, v25.4s + and v2.8b, v0.8b, v10.8b + zip1 v3.8b, v1.8b, v2.8b + + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + sxtl2 v9.4s, v4.8h + scvtf v0.4s, v8.4s + scvtf v1.4s, v9.4s + fmul v3.4s, v0.4s, v12.4s + fmul v4.4s, v1.4s, v13.4s + fadd v3.4s, v3.4s, v14.4s + fadd v4.4s, v4.4s, v15.4s + ld1 {v0.4s}, [x15], x11 - ld1 {v1.4s}, [x15], x11 - fmla v16.4s, v8.4s, v0.s[0] - fmla v17.4s, v8.4s, v0.s[1] - fmla v18.4s, v8.4s, v0.s[2] - fmla v19.4s, v8.4s, v0.s[3] - - fmla v20.4s, v9.4s, v0.s[0] - fmla v21.4s, v9.4s, v0.s[1] - fmla v22.4s, v9.4s, v0.s[2] - fmla v23.4s, v9.4s, v0.s[3] - - fmla v16.4s, v10.4s, v1.s[0] - fmla v17.4s, v10.4s, v1.s[1] - fmla v18.4s, v10.4s, v1.s[2] - fmla v19.4s, v10.4s, v1.s[3] - - fmla v20.4s, v11.4s, v1.s[0] - fmla v21.4s, v11.4s, v1.s[1] - fmla v22.4s, v11.4s, v1.s[2] - fmla v23.4s, v11.4s, v1.s[3] + fmla v16.4s, v3.4s, v0.s[0] + fmla v17.4s, v3.4s, v0.s[1] + + subs x12, x12, #1 bne E4LoopL + E4LoopLComputeEnd: + fmla v18.4s, v3.4s, v0.s[2] + fmla v19.4s, v3.4s, v0.s[3] + + fmla v20.4s, v4.4s, v0.s[0] + fmla v21.4s, v4.4s, v0.s[1] + fmla v22.4s, v4.4s, v0.s[2] + fmla v23.4s, v4.4s, v0.s[3] + E4LoopLEnd: add x13, x13, x19 sub x8, x8, #2 @@ -703,181 +513,53 @@ blt E1 E4LH4: cbz x8, E4End mov x15, x1 -#if 0 - // l_tile = 1 loop - ld1 {v1.4s}, [x14], #16 // alpha - ld1 {v2.4s}, [x16], #16 // bias subs x12, x9, #1 - ldrb w8, [x13] - ldrb w9, [x13, #1] - movi v8.4s, #15 - fmov s3, w8 - mov v3.s[1], w9 - zip1 v3.4s, v3.4s, v3.4s - ushr v4.4s, v3.4s, #4 - and v3.16b, v3.16b, v8.16b - rev64 v4.4s, v4.4s - trn2 v3.4s, v4.4s, v3.4s - mvni v9.4s, #6 - add v3.4s, v3.4s, v9.4s - scvtf v3.4s, v3.4s - mov v4.16b, v2.16b - fmla v4.4s, v3.4s, v1.4s - ld1 {v0.4s}, [x15], x11 - fmul v16.4s, v4.4s, v0.s[0] - fmul v17.4s, v4.4s, v0.s[1] - fmul v18.4s, v4.4s, v0.s[2] - fmul v19.4s, v4.4s, v0.s[3] - add x13, x13, #4 -#else - ld1 {v4.4s}, [x14], #16 // alpha - mov w17, #0x0f - dup v30.8b, w17 - mov w17, #8 - dup v31.8b, w17 - ld1 {v14.4s}, [x16], #16 // bias - subs x12, x9, #4 - // load 16xint4 to 16xfloat - ld1 {v3.8h}, [x13] - uzp1 v0.8h, v3.8h, v3.8h + ld1 {v12.4s}, [x14] // alpha + ld1 {v14.4s}, [x24] // bias + + + + ld1 {v0.s}[0], [x13], #4 ushr v1.8b, v0.8b, #4 - and v2.8b, v0.8b, v30.8b - sub v1.8b, v1.8b, v31.8b - sub v2.8b, v2.8b, v31.8b - zip1 v9.8b, v1.8b, v2.8b - zip2 v10.8b, v1.8b, v2.8b - sxtl v11.8h, v9.8b - sxtl v12.8h, v10.8b - sxtl v8.4s, v11.4h - sxtl2 v9.4s, v11.8h - sxtl v10.4s, v12.4h - sxtl2 v11.4s, v12.8h + and v2.8b, v0.8b, v10.8b + zip1 v3.8b, v1.8b, v2.8b + + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + scvtf v0.4s, v8.4s + fmul v3.4s, v0.4s, v12.4s + fadd v3.4s, v3.4s, v14.4s + ld1 {v0.4s}, [x15], x11 - scvtf v12.4s, v8.4s - scvtf v13.4s, v9.4s - mov v8.16b, v14.16b - mov v9.16b, v14.16b - fmla v8.4s, v12.4s, v4.4s - ld1 {v1.4s}, [x15], x11 - fmla v9.4s, v13.4s, v4.4s - scvtf v12.4s, v10.4s - ld1 {v2.4s}, [x15], x11 - scvtf v13.4s, v11.4s - mov v10.16b, v14.16b - mov v11.16b, v14.16b - ld1 {v3.4s}, [x15], x11 - fmla v10.4s, v12.4s, v4.4s - fmla v11.4s, v13.4s, v4.4s - - // ld1 {v0.4s, v1.4s, v2.4s, v3.4s}, [x15], x11 - fmul v16.4s, v8.4s, v0.s[0] - fmul v17.4s, v8.4s, v0.s[1] - fmul v18.4s, v8.4s, v0.s[2] - fmul v19.4s, v8.4s, v0.s[3] - - fmla v16.4s, v9.4s, v1.s[0] - fmla v17.4s, v9.4s, v1.s[1] - fmla v18.4s, v9.4s, v1.s[2] - fmla v19.4s, v9.4s, v1.s[3] - - fmla v16.4s, v10.4s, v2.s[0] - fmla v17.4s, v10.4s, v2.s[1] - fmla v18.4s, v10.4s, v2.s[2] - fmla v19.4s, v10.4s, v2.s[3] - - fmla v16.4s, v11.4s, v3.s[0] - fmla v17.4s, v11.4s, v3.s[1] - fmla v18.4s, v11.4s, v3.s[2] - fmla v19.4s, v11.4s, v3.s[3] - add x13, x13, #16 -#endif + fmul v16.4s, v3.4s, v0.s[0] + fmul v17.4s, v3.4s, v0.s[1] + fmul v18.4s, v3.4s, v0.s[2] + fmul v19.4s, v3.4s, v0.s[3] + beq E4LoopLREnd E4LoopLR: -#if 0 - // ld1 {v3.4s}, [x13] - ldrb w8, [x13] - ldrb w9, [x13, #1] - movi v8.4s, #15 - fmov s3, w8 - mov v3.s[1], w9 - zip1 v3.4s, v3.4s, v3.4s - ushr v4.4s, v3.4s, #4 - and v3.16b, v3.16b, v8.16b - rev64 v4.4s, v4.4s - trn2 v3.4s, v4.4s, v3.4s - mvni v9.4s, #6 - add v3.4s, v3.4s, v9.4s - scvtf v3.4s, v3.4s - mov v4.16b, v2.16b - fmla v4.4s, v3.4s, v1.4s + + ld1 {v0.s}[0], [x13], #4 + ushr v1.8b, v0.8b, #4 + and v2.8b, v0.8b, v10.8b + zip1 v3.8b, v1.8b, v2.8b + + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + scvtf v0.4s, v8.4s + fmul v3.4s, v0.4s, v12.4s + fadd v3.4s, v3.4s, v14.4s ld1 {v0.4s}, [x15], x11 - fmla v16.4s, v4.4s, v0.s[0] - fmla v17.4s, v4.4s, v0.s[1] - fmla v18.4s, v4.4s, v0.s[2] - fmla v19.4s, v4.4s, v0.s[3] - add x13, x13, #4 + fmla v16.4s, v3.4s, v0.s[0] + fmla v17.4s, v3.4s, v0.s[1] + fmla v18.4s, v3.4s, v0.s[2] + fmla v19.4s, v3.4s, v0.s[3] subs x12, x12, #1 -#else - ld1 {v3.8h}, [x13] - // 0123xxxx4567xxxx => 01234567... - uzp1 v0.8h, v3.8h, v3.8h - ushr v1.8b, v0.8b, #4 - and v2.8b, v0.8b, v30.8b - sub v1.8b, v1.8b, v31.8b - sub v2.8b, v2.8b, v31.8b - - zip1 v9.8b, v1.8b, v2.8b - zip2 v10.8b, v1.8b, v2.8b - sxtl v11.8h, v9.8b - sxtl v12.8h, v10.8b - sxtl v8.4s, v11.4h - sxtl2 v9.4s, v11.8h - sxtl v10.4s, v12.4h - sxtl2 v11.4s, v12.8h - scvtf v12.4s, v8.4s - scvtf v13.4s, v9.4s - mov v8.16b, v14.16b - mov v9.16b, v14.16b - fmla v8.4s, v12.4s, v4.4s - fmla v9.4s, v13.4s, v4.4s - scvtf v12.4s, v10.4s - scvtf v13.4s, v11.4s - mov v10.16b, v14.16b - mov v11.16b, v14.16b - fmla v10.4s, v12.4s, v4.4s - fmla v11.4s, v13.4s, v4.4s - // ld1 {v0.4s, v1.4s, v2.4s, v3.4s}, [x15], x11 - ld1 {v0.4s}, [x15], x11 - ld1 {v1.4s}, [x15], x11 - ld1 {v2.4s}, [x15], x11 - ld1 {v3.4s}, [x15], x11 - fmla v16.4s, v8.4s, v0.s[0] - fmla v17.4s, v8.4s, v0.s[1] - fmla v18.4s, v8.4s, v0.s[2] - fmla v19.4s, v8.4s, v0.s[3] - - fmla v16.4s, v9.4s, v1.s[0] - fmla v17.4s, v9.4s, v1.s[1] - fmla v18.4s, v9.4s, v1.s[2] - fmla v19.4s, v9.4s, v1.s[3] - - fmla v16.4s, v10.4s, v2.s[0] - fmla v17.4s, v10.4s, v2.s[1] - fmla v18.4s, v10.4s, v2.s[2] - fmla v19.4s, v10.4s, v2.s[3] - - fmla v16.4s, v11.4s, v3.s[0] - fmla v17.4s, v11.4s, v3.s[1] - fmla v18.4s, v11.4s, v3.s[2] - fmla v19.4s, v11.4s, v3.s[3] - add x13, x13, #16 - subs x12, x12, #4 -#endif - bne E4LoopLR + bne E4LoopLR E4LoopLREnd: cbz x5, StoreLH4x4 @@ -922,7 +604,7 @@ LoopE1: mov x21, x0 mov x13, x2 mov x14, x22 - mov x16, x23 + mov x24, x23 cmp x8, #2 blt E1LH4 @@ -930,81 +612,53 @@ LoopE1: E1LH8: E1LoopH8: mov x15, x1 - ld1 {v24.4s, v25.4s}, [x14], #32 // alpha - mov w17, #0x0f - dup v30.8b, w17 - mov w17, #8 - dup v31.8b, w17 - ld1 {v26.4s, v27.4s}, [x16], #32 // bias - subs x12, x9, #2 - // ld1 {v3.4s, v4.4s}, [x13], #32 - ld1 {v0.4h}, [x13], #8 + subs x12, x9, #1 + + ld1 {v12.4s, v13.4s}, [x14], #32 // alpha + ld1 {v14.4s, v15.4s}, [x24], #32 // bias + + ld1 {v0.s}[0], [x13], #4 ushr v1.8b, v0.8b, #4 - and v2.8b, v0.8b, v30.8b - sub v1.8b, v1.8b, v31.8b - sub v2.8b, v2.8b, v31.8b - zip1 v9.8b, v1.8b, v2.8b - zip2 v10.8b, v1.8b, v2.8b - sxtl v11.8h, v9.8b - sxtl v12.8h, v10.8b - sxtl v8.4s, v11.4h - sxtl2 v9.4s, v11.8h - sxtl v10.4s, v12.4h - sxtl2 v11.4s, v12.8h - scvtf v12.4s, v8.4s - scvtf v13.4s, v9.4s - mov v8.16b, v26.16b - mov v9.16b, v27.16b - fmla v8.4s, v12.4s, v24.4s - fmla v9.4s, v13.4s, v25.4s - scvtf v12.4s, v10.4s - scvtf v13.4s, v11.4s - mov v10.16b, v26.16b - mov v11.16b, v27.16b - fmla v10.4s, v12.4s, v24.4s - fmla v11.4s, v13.4s, v25.4s + and v2.8b, v0.8b, v10.8b + zip1 v3.8b, v1.8b, v2.8b + + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + sxtl2 v9.4s, v4.8h + scvtf v0.4s, v8.4s + scvtf v1.4s, v9.4s + fmul v3.4s, v0.4s, v12.4s + fmul v4.4s, v1.4s, v13.4s + fadd v3.4s, v3.4s, v14.4s + fadd v4.4s, v4.4s, v15.4s + ld1 {v0.s}[0], [x15], x11 - ld1 {v0.s}[1], [x15], x11 - fmul v16.4s, v8.4s, v0.s[0] - fmul v20.4s, v9.4s, v0.s[0] - fmla v16.4s, v10.4s, v0.s[1] - fmla v20.4s, v11.4s, v0.s[1] + fmul v16.4s, v3.4s, v0.s[0] + fmul v20.4s, v4.4s, v0.s[0] + beq E1LoopLEnd E1LoopL: - subs x12, x12, #2 - // ld1 {v3.4s, v4.4s}, [x13], #32 - ld1 {v0.4h}, [x13], #8 + + ld1 {v0.s}[0], [x13], #4 ushr v1.8b, v0.8b, #4 - and v2.8b, v0.8b, v30.8b - sub v1.8b, v1.8b, v31.8b - sub v2.8b, v2.8b, v31.8b - zip1 v9.8b, v1.8b, v2.8b - zip2 v10.8b, v1.8b, v2.8b - sxtl v11.8h, v9.8b - sxtl v12.8h, v10.8b - sxtl v8.4s, v11.4h - sxtl2 v9.4s, v11.8h - sxtl v10.4s, v12.4h - sxtl2 v11.4s, v12.8h - scvtf v12.4s, v8.4s - scvtf v13.4s, v9.4s - mov v8.16b, v26.16b - mov v9.16b, v27.16b - fmla v8.4s, v12.4s, v24.4s - fmla v9.4s, v13.4s, v25.4s - scvtf v12.4s, v10.4s - scvtf v13.4s, v11.4s - mov v10.16b, v26.16b - mov v11.16b, v27.16b - fmla v10.4s, v12.4s, v24.4s - fmla v11.4s, v13.4s, v25.4s + and v2.8b, v0.8b, v10.8b + zip1 v3.8b, v1.8b, v2.8b + + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + sxtl2 v9.4s, v4.8h + scvtf v0.4s, v8.4s + scvtf v1.4s, v9.4s + fmul v3.4s, v0.4s, v12.4s + fmul v4.4s, v1.4s, v13.4s + fadd v3.4s, v3.4s, v14.4s + fadd v4.4s, v4.4s, v15.4s ld1 {v0.s}[0], [x15], x11 - ld1 {v0.s}[1], [x15], x11 - fmla v16.4s, v8.4s, v0.s[0] - fmla v20.4s, v9.4s, v0.s[0] - fmla v16.4s, v10.4s, v0.s[1] - fmla v20.4s, v11.4s, v0.s[1] + fmla v16.4s, v3.4s, v0.s[0] + fmla v20.4s, v4.4s, v0.s[0] + + subs x12, x12, #1 bne E1LoopL E1LoopLEnd: @@ -1036,95 +690,41 @@ LoopE1: E1LH4: cbz x8, E1End mov x15, x1 - ld1 {v4.4s}, [x14], #16 // alpha - mov w17, #0x0f - dup v30.8b, w17 - mov w17, #8 - dup v31.8b, w17 - ld1 {v14.4s}, [x16], #16 // bias - subs x12, x9, #4 - ld1 {v3.8h}, [x13] - uzp1 v0.8h, v3.8h, v3.8h + subs x12, x9, #1 + + ld1 {v12.4s}, [x14] // alpha + ld1 {v14.4s}, [x24] // bias + ld1 {v0.s}[0], [x13], #4 ushr v1.8b, v0.8b, #4 - and v2.8b, v0.8b, v30.8b - sub v1.8b, v1.8b, v31.8b - sub v2.8b, v2.8b, v31.8b - zip1 v9.8b, v1.8b, v2.8b - zip2 v10.8b, v1.8b, v2.8b - sxtl v11.8h, v9.8b - sxtl v12.8h, v10.8b - sxtl v8.4s, v11.4h - sxtl2 v9.4s, v11.8h - sxtl v10.4s, v12.4h - sxtl2 v11.4s, v12.8h - scvtf v12.4s, v8.4s - scvtf v13.4s, v9.4s - mov v8.16b, v14.16b - mov v9.16b, v14.16b - fmla v8.4s, v12.4s, v4.4s - fmla v9.4s, v13.4s, v4.4s - scvtf v12.4s, v10.4s - scvtf v13.4s, v11.4s - mov v10.16b, v14.16b - mov v11.16b, v14.16b - fmla v10.4s, v12.4s, v4.4s - fmla v11.4s, v13.4s, v4.4s + and v2.8b, v0.8b, v10.8b + zip1 v3.8b, v1.8b, v2.8b + + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + scvtf v0.4s, v8.4s + fmul v3.4s, v0.4s, v12.4s + fadd v3.4s, v3.4s, v14.4s ld1 {v0.s}[0], [x15], x11 - ld1 {v0.s}[1], [x15], x11 - ld1 {v0.s}[2], [x15], x11 - ld1 {v0.s}[3], [x15], x11 - fmul v16.4s, v8.4s, v0.s[0] - fmla v16.4s, v9.4s, v0.s[1] - fmla v16.4s, v10.4s, v0.s[2] - fmla v16.4s, v11.4s, v0.s[3] - add x13, x13, #16 + fmul v16.4s, v3.4s, v0.s[0] beq E1LoopLREnd E1LoopLR: - // weight: load 16 x int4 to 16 x float - ld1 {v3.8h}, [x13] - uzp1 v0.8h, v3.8h, v3.8h + ld1 {v0.s}[0], [x13], #4 ushr v1.8b, v0.8b, #4 - and v2.8b, v0.8b, v30.8b - sub v1.8b, v1.8b, v31.8b - sub v2.8b, v2.8b, v31.8b - - zip1 v9.8b, v1.8b, v2.8b - zip2 v10.8b, v1.8b, v2.8b - sxtl v11.8h, v9.8b - sxtl v12.8h, v10.8b - - sxtl v8.4s, v11.4h - sxtl2 v9.4s, v11.8h - sxtl v10.4s, v12.4h - sxtl2 v11.4s, v12.8h - scvtf v12.4s, v8.4s - scvtf v13.4s, v9.4s - mov v8.16b, v15.16b - mov v9.16b, v15.16b - fmla v8.4s, v12.4s, v4.4s - fmla v9.4s, v13.4s, v4.4s - scvtf v12.4s, v10.4s - scvtf v13.4s, v11.4s - mov v10.16b, v15.16b - mov v11.16b, v15.16b - fmla v10.4s, v12.4s, v4.4s - fmla v11.4s, v13.4s, v4.4s - - // input: load 4 x float + and v2.8b, v0.8b, v10.8b + zip1 v3.8b, v1.8b, v2.8b + + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + scvtf v0.4s, v8.4s + fmul v3.4s, v0.4s, v12.4s + fadd v3.4s, v3.4s, v14.4s ld1 {v0.s}[0], [x15], x11 - ld1 {v0.s}[1], [x15], x11 - ld1 {v0.s}[2], [x15], x11 - ld1 {v0.s}[3], [x15], x11 - // compute - fmla v16.4s, v8.4s, v0.s[0] - fmla v16.4s, v9.4s, v0.s[1] - fmla v16.4s, v10.4s, v0.s[2] - fmla v16.4s, v11.4s, v0.s[3] - add x13, x13, #16 - subs x12, x12, #4 + fmla v16.4s, v3.4s, v0.s[0] + + subs x12, x12, #1 bne E1LoopLR E1LoopLREnd: @@ -1147,14 +747,15 @@ LoopE1: add x1, x1, #4 bne LoopE1 - End: -ldr x19, [sp, #0] -ldr x20, [sp, #8] -ldr x21, [sp, #16] -ldr x22, [sp, #24] -ldr x23, [sp, #32] -add sp, sp, #64 +ldp x19, x20, [sp, #(16 * 7)] +ldp x21, x22, [sp, #(16 * 6)] +ldp x23, x24, [sp, #(16 * 5)] +ldp x25, x26, [sp, #(16 * 4)] +ldp d8, d9, [sp, #48] +ldp d10, d11, [sp, #32] +ldp d12, d13, [sp, #16] +ldp d14, d15, [sp], #(16 * 8) ret diff --git a/source/backend/cpu/arm/arm64/low_memory/MNNPackedMatMulRemain_int8.S b/source/backend/cpu/arm/arm64/low_memory/MNNPackedMatMulRemain_int8.S index 8bb00c291..1a8ec2287 100644 --- a/source/backend/cpu/arm/arm64/low_memory/MNNPackedMatMulRemain_int8.S +++ b/source/backend/cpu/arm/arm64/low_memory/MNNPackedMatMulRemain_int8.S @@ -56,142 +56,85 @@ LoopE8: mov x21, x0 mov x13, x2 mov x14, x22 - mov x16, x23 + mov x24, x23 LH8: cmp x8, #2 blt LH4 - // sub x14, x7, #64 LoopH8x8: mov x15, x1 + subs x12, x9, #1 ld1 {v12.4s, v13.4s}, [x14], #32 // alpha - ld1 {v14.4s, v15.4s}, [x16], #32 // bias - subs x12, x9, #2 - ld1 {v3.16b}, [x13], #16 - sxtl v0.8h, v3.8b - sxtl2 v1.8h, v3.16b - sxtl v8.4s, v0.4h - sxtl2 v9.4s, v0.8h - sxtl v10.4s, v1.4h - sxtl2 v11.4s, v1.8h + ld1 {v14.4s, v15.4s}, [x24], #32 // bias + + ld1 {v3.8b}, [x13], #8 + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + sxtl2 v9.4s, v4.8h scvtf v0.4s, v8.4s scvtf v1.4s, v9.4s - mov v8.16b, v14.16b - mov v9.16b, v15.16b - fmla v8.4s, v0.4s, v12.4s - fmla v9.4s, v1.4s, v13.4s - scvtf v0.4s, v10.4s - scvtf v1.4s, v11.4s - mov v10.16b, v14.16b - mov v11.16b, v15.16b - fmla v10.4s, v0.4s, v12.4s - fmla v11.4s, v1.4s, v13.4s - ld1 {v0.4s, v1.4s}, [x15], x11 - fmul v16.4s, v8.4s, v0.s[0] - fmul v17.4s, v8.4s, v0.s[1] - fmul v18.4s, v8.4s, v0.s[2] - fmul v19.4s, v8.4s, v0.s[3] - - fmul v20.4s, v9.4s, v0.s[0] - fmul v21.4s, v9.4s, v0.s[1] - fmul v22.4s, v9.4s, v0.s[2] - fmul v23.4s, v9.4s, v0.s[3] - - fmul v24.4s, v8.4s, v1.s[0] - fmul v25.4s, v8.4s, v1.s[1] - fmul v26.4s, v8.4s, v1.s[2] - fmul v27.4s, v8.4s, v1.s[3] - - fmul v28.4s, v9.4s, v1.s[0] - fmul v29.4s, v9.4s, v1.s[1] - fmul v30.4s, v9.4s, v1.s[2] - fmul v31.4s, v9.4s, v1.s[3] + fmul v3.4s, v0.4s, v12.4s + fmul v4.4s, v1.4s, v13.4s + fadd v3.4s, v3.4s, v14.4s + fadd v4.4s, v4.4s, v15.4s + ld1 {v0.4s, v1.4s}, [x15], x11 - fmla v16.4s, v10.4s, v0.s[0] - fmla v17.4s, v10.4s, v0.s[1] - fmla v18.4s, v10.4s, v0.s[2] - fmla v19.4s, v10.4s, v0.s[3] - - fmla v20.4s, v11.4s, v0.s[0] - fmla v21.4s, v11.4s, v0.s[1] - fmla v22.4s, v11.4s, v0.s[2] - fmla v23.4s, v11.4s, v0.s[3] - - fmla v24.4s, v10.4s, v1.s[0] - fmla v25.4s, v10.4s, v1.s[1] - fmla v26.4s, v10.4s, v1.s[2] - fmla v27.4s, v10.4s, v1.s[3] - - fmla v28.4s, v11.4s, v1.s[0] - fmla v29.4s, v11.4s, v1.s[1] - fmla v30.4s, v11.4s, v1.s[2] - fmla v31.4s, v11.4s, v1.s[3] + fmul v16.4s, v3.4s, v0.s[0] + fmul v17.4s, v3.4s, v0.s[1] + fmul v18.4s, v3.4s, v0.s[2] + fmul v19.4s, v3.4s, v0.s[3] + + fmul v20.4s, v4.4s, v0.s[0] + fmul v21.4s, v4.4s, v0.s[1] + fmul v22.4s, v4.4s, v0.s[2] + fmul v23.4s, v4.4s, v0.s[3] + + fmul v24.4s, v3.4s, v1.s[0] + fmul v25.4s, v3.4s, v1.s[1] + fmul v26.4s, v3.4s, v1.s[2] + fmul v27.4s, v3.4s, v1.s[3] + + fmul v28.4s, v4.4s, v1.s[0] + fmul v29.4s, v4.4s, v1.s[1] + fmul v30.4s, v4.4s, v1.s[2] + fmul v31.4s, v4.4s, v1.s[3] beq LoopLEnd LoopL: - subs x12, x12, #2 - ld1 {v3.16b}, [x13], #16 - sxtl v0.8h, v3.8b - sxtl2 v1.8h, v3.16b - sxtl v8.4s, v0.4h - sxtl2 v9.4s, v0.8h - sxtl v10.4s, v1.4h - sxtl2 v11.4s, v1.8h + ld1 {v3.8b}, [x13], #8 + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + sxtl2 v9.4s, v4.8h scvtf v0.4s, v8.4s scvtf v1.4s, v9.4s - mov v8.16b, v14.16b - mov v9.16b, v15.16b - fmla v8.4s, v0.4s, v12.4s - fmla v9.4s, v1.4s, v13.4s - scvtf v0.4s, v10.4s - scvtf v1.4s, v11.4s - mov v10.16b, v14.16b - mov v11.16b, v15.16b - fmla v10.4s, v0.4s, v12.4s - fmla v11.4s, v1.4s, v13.4s - ld1 {v0.4s, v1.4s}, [x15], x11 - fmla v16.4s, v8.4s, v0.s[0] - fmla v17.4s, v8.4s, v0.s[1] - fmla v18.4s, v8.4s, v0.s[2] - fmla v19.4s, v8.4s, v0.s[3] - - fmla v20.4s, v9.4s, v0.s[0] - fmla v21.4s, v9.4s, v0.s[1] - fmla v22.4s, v9.4s, v0.s[2] - fmla v23.4s, v9.4s, v0.s[3] - - fmla v24.4s, v8.4s, v1.s[0] - fmla v25.4s, v8.4s, v1.s[1] - fmla v26.4s, v8.4s, v1.s[2] - fmla v27.4s, v8.4s, v1.s[3] - - fmla v28.4s, v9.4s, v1.s[0] - fmla v29.4s, v9.4s, v1.s[1] - fmla v30.4s, v9.4s, v1.s[2] - fmla v31.4s, v9.4s, v1.s[3] + fmul v3.4s, v0.4s, v12.4s + fmul v4.4s, v1.4s, v13.4s + fadd v3.4s, v3.4s, v14.4s + fadd v4.4s, v4.4s, v15.4s ld1 {v0.4s, v1.4s}, [x15], x11 - fmla v16.4s, v10.4s, v0.s[0] - fmla v17.4s, v10.4s, v0.s[1] - fmla v18.4s, v10.4s, v0.s[2] - fmla v19.4s, v10.4s, v0.s[3] - - fmla v20.4s, v11.4s, v0.s[0] - fmla v21.4s, v11.4s, v0.s[1] - fmla v22.4s, v11.4s, v0.s[2] - fmla v23.4s, v11.4s, v0.s[3] - - fmla v24.4s, v10.4s, v1.s[0] - fmla v25.4s, v10.4s, v1.s[1] - fmla v26.4s, v10.4s, v1.s[2] - fmla v27.4s, v10.4s, v1.s[3] - - fmla v28.4s, v11.4s, v1.s[0] - fmla v29.4s, v11.4s, v1.s[1] - fmla v30.4s, v11.4s, v1.s[2] - fmla v31.4s, v11.4s, v1.s[3] - + fmla v16.4s, v3.4s, v0.s[0] + fmla v17.4s, v3.4s, v0.s[1] + fmla v18.4s, v3.4s, v0.s[2] + fmla v19.4s, v3.4s, v0.s[3] + + fmla v20.4s, v4.4s, v0.s[0] + fmla v21.4s, v4.4s, v0.s[1] + fmla v22.4s, v4.4s, v0.s[2] + fmla v23.4s, v4.4s, v0.s[3] + + fmla v24.4s, v3.4s, v1.s[0] + fmla v25.4s, v3.4s, v1.s[1] + fmla v26.4s, v3.4s, v1.s[2] + fmla v27.4s, v3.4s, v1.s[3] + + fmla v28.4s, v4.4s, v1.s[0] + fmla v29.4s, v4.4s, v1.s[1] + fmla v30.4s, v4.4s, v1.s[2] + fmla v31.4s, v4.4s, v1.s[3] + + subs x12, x12, #1 bne LoopL LoopLEnd: @@ -199,6 +142,7 @@ LoopE8: add x13, x13, x19 sub x8, x8, #2 cmp x8, #2 + cbz x5, StoreLH8 AddBiasLH8: ld1 {v0.4s, v1.4s}, [x20], #32 @@ -257,7 +201,7 @@ LoopE8: fmin v29.4s, v29.4s, v7.4s fmin v30.4s, v30.4s, v7.4s fmin v31.4s, v31.4s, v7.4s - + StoreLH8: stp q16, q17, [x0] stp q18, q19, [x0, #(32 * 1)] @@ -282,165 +226,57 @@ LoopE8: cbz x8, E8End LoopHRemain: mov x15, x1 - ld1 {v4.4s}, [x14], #16 // alpha - ld1 {v14.4s}, [x16], #16 // bias - subs x12, x9, #4 - // load 16xint4 to 4xfloat - ld1 {v3.4s}, [x13] - uzp1 v0.4s, v3.4s, v3.4s - sxtl v11.8h, v0.8b - sxtl2 v12.8h, v0.16b - sxtl v8.4s, v11.4h - sxtl2 v9.4s, v11.8h - sxtl v10.4s, v12.4h - sxtl2 v11.4s, v12.8h - scvtf v12.4s, v8.4s - scvtf v13.4s, v9.4s - mov v8.16b, v14.16b - mov v9.16b, v14.16b - fmla v8.4s, v12.4s, v4.4s - fmla v9.4s, v13.4s, v4.4s - scvtf v12.4s, v10.4s - scvtf v13.4s, v11.4s - mov v10.16b, v14.16b - mov v11.16b, v14.16b - fmla v10.4s, v12.4s, v4.4s - fmla v11.4s, v13.4s, v4.4s - - ld1 {v0.4s}, [x15], #16 - fmul v16.4s, v8.4s, v0.s[0] - fmul v17.4s, v8.4s, v0.s[1] - ld1 {v1.4s}, [x15] - fmul v18.4s, v8.4s, v0.s[2] - sub x15, x15, #16 - fmul v19.4s, v8.4s, v0.s[3] - add x15, x15, x11 - fmul v20.4s, v8.4s, v1.s[0] - fmul v21.4s, v8.4s, v1.s[1] - fmul v22.4s, v8.4s, v1.s[2] - fmul v23.4s, v8.4s, v1.s[3] - - ld1 {v0.4s}, [x15], #16 - fmla v16.4s, v9.4s, v0.s[0] - fmla v17.4s, v9.4s, v0.s[1] - ld1 {v1.4s}, [x15] - fmla v18.4s, v9.4s, v0.s[2] - sub x15, x15, #16 - fmla v19.4s, v9.4s, v0.s[3] - add x15, x15, x11 - fmla v20.4s, v9.4s, v1.s[0] - fmla v21.4s, v9.4s, v1.s[1] - fmla v22.4s, v9.4s, v1.s[2] - fmla v23.4s, v9.4s, v1.s[3] - - ld1 {v0.4s}, [x15], #16 - fmla v16.4s, v10.4s, v0.s[0] - fmla v17.4s, v10.4s, v0.s[1] - ld1 {v1.4s}, [x15] - fmla v18.4s, v10.4s, v0.s[2] - sub x15, x15, #16 - fmla v19.4s, v10.4s, v0.s[3] - add x15, x15, x11 - fmla v20.4s, v10.4s, v1.s[0] - fmla v21.4s, v10.4s, v1.s[1] - fmla v22.4s, v10.4s, v1.s[2] - fmla v23.4s, v10.4s, v1.s[3] + subs x12, x9, #1 + ld1 {v12.4s}, [x14] // alpha + ld1 {v14.4s}, [x24] // bias + ld1 {v3.s}[0], [x13] + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + scvtf v0.4s, v8.4s + fmul v3.4s, v0.4s, v12.4s + fadd v3.4s, v3.4s, v14.4s + add x13, x13, #8 ld1 {v0.4s}, [x15], #16 - fmla v16.4s, v11.4s, v0.s[0] - fmla v17.4s, v11.4s, v0.s[1] + fmul v16.4s, v3.4s, v0.s[0] + fmul v17.4s, v3.4s, v0.s[1] ld1 {v1.4s}, [x15] - fmla v18.4s, v11.4s, v0.s[2] + fmul v18.4s, v3.4s, v0.s[2] sub x15, x15, #16 - fmla v19.4s, v11.4s, v0.s[3] + fmul v19.4s, v3.4s, v0.s[3] add x15, x15, x11 - fmla v20.4s, v11.4s, v1.s[0] - fmla v21.4s, v11.4s, v1.s[1] - fmla v22.4s, v11.4s, v1.s[2] - fmla v23.4s, v11.4s, v1.s[3] - - add x13, x13, #32 + fmul v20.4s, v3.4s, v1.s[0] + fmul v21.4s, v3.4s, v1.s[1] + fmul v22.4s, v3.4s, v1.s[2] + fmul v23.4s, v3.4s, v1.s[3] beq LoopLREnd LoopLR: - ld1 {v3.4s}, [x13] - uzp1 v0.4s, v3.4s, v3.4s - sxtl v11.8h, v0.8b - sxtl2 v12.8h, v0.16b - sxtl v8.4s, v11.4h - sxtl2 v9.4s, v11.8h - sxtl v10.4s, v12.4h - sxtl2 v11.4s, v12.8h - scvtf v12.4s, v8.4s - scvtf v13.4s, v9.4s - mov v8.16b, v14.16b - mov v9.16b, v14.16b - fmla v8.4s, v12.4s, v4.4s - fmla v9.4s, v13.4s, v4.4s - scvtf v12.4s, v10.4s - scvtf v13.4s, v11.4s - mov v10.16b, v14.16b - mov v11.16b, v14.16b - fmla v10.4s, v12.4s, v4.4s - fmla v11.4s, v13.4s, v4.4s - - ld1 {v0.4s}, [x15], #16 - fmla v16.4s, v8.4s, v0.s[0] - fmla v17.4s, v8.4s, v0.s[1] - ld1 {v1.4s}, [x15] - fmla v18.4s, v8.4s, v0.s[2] - sub x15, x15, #16 - fmla v19.4s, v8.4s, v0.s[3] - add x15, x15, x11 - fmla v20.4s, v8.4s, v1.s[0] - fmla v21.4s, v8.4s, v1.s[1] - fmla v22.4s, v8.4s, v1.s[2] - fmla v23.4s, v8.4s, v1.s[3] - - ld1 {v0.4s}, [x15], #16 - fmla v16.4s, v9.4s, v0.s[0] - fmla v17.4s, v9.4s, v0.s[1] - ld1 {v1.4s}, [x15] - fmla v18.4s, v9.4s, v0.s[2] - sub x15, x15, #16 - fmla v19.4s, v9.4s, v0.s[3] - add x15, x15, x11 - fmla v20.4s, v9.4s, v1.s[0] - fmla v21.4s, v9.4s, v1.s[1] - fmla v22.4s, v9.4s, v1.s[2] - fmla v23.4s, v9.4s, v1.s[3] - + ld1 {v3.s}[0], [x13] + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + scvtf v0.4s, v8.4s + fmul v3.4s, v0.4s, v12.4s + fadd v3.4s, v3.4s, v14.4s ld1 {v0.4s}, [x15], #16 - fmla v16.4s, v10.4s, v0.s[0] - fmla v17.4s, v10.4s, v0.s[1] + fmla v16.4s, v3.4s, v0.s[0] + fmla v17.4s, v3.4s, v0.s[1] + add x13, x13, #8 ld1 {v1.4s}, [x15] - fmla v18.4s, v10.4s, v0.s[2] + fmla v18.4s, v3.4s, v0.s[2] sub x15, x15, #16 - fmla v19.4s, v10.4s, v0.s[3] + fmla v19.4s, v3.4s, v0.s[3] add x15, x15, x11 - fmla v20.4s, v10.4s, v1.s[0] - fmla v21.4s, v10.4s, v1.s[1] - fmla v22.4s, v10.4s, v1.s[2] - fmla v23.4s, v10.4s, v1.s[3] - ld1 {v0.4s}, [x15], #16 - fmla v16.4s, v11.4s, v0.s[0] - fmla v17.4s, v11.4s, v0.s[1] - ld1 {v1.4s}, [x15] - fmla v18.4s, v11.4s, v0.s[2] - sub x15, x15, #16 - fmla v19.4s, v11.4s, v0.s[3] - add x15, x15, x11 - fmla v20.4s, v11.4s, v1.s[0] - fmla v21.4s, v11.4s, v1.s[1] - fmla v22.4s, v11.4s, v1.s[2] - fmla v23.4s, v11.4s, v1.s[3] + fmla v20.4s, v3.4s, v1.s[0] + fmla v21.4s, v3.4s, v1.s[1] + fmla v22.4s, v3.4s, v1.s[2] + fmla v23.4s, v3.4s, v1.s[3] - add x13, x13, #32 - subs x12, x12, #4 + subs x12, x12, #1 bne LoopLR LoopLREnd: - + cbz x5, StoreLH8x4 AddBiasLH8x4: ld1 {v0.4s}, [x20] @@ -473,7 +309,7 @@ LoopE8: fmin v21.4s, v21.4s, v7.4s fmin v22.4s, v22.4s, v7.4s fmin v23.4s, v23.4s, v7.4s - + StoreLH8x4: stp q16, q17, [x0] @@ -501,7 +337,7 @@ blt E1 mov x21, x0 mov x13, x2 mov x14, x22 - mov x16, x23 + mov x24, x23 cmp x8, #2 blt E4LH4 @@ -509,98 +345,89 @@ blt E1 E4LH8: E4LoopH8: mov x15, x1 - ld1 {v24.4s, v25.4s}, [x14], #32 // alpha - ld1 {v26.4s, v27.4s}, [x16], #32 // bias - subs x12, x9, #2 - // ld1 {v3.4s, v4.4s}, [x13], #32 - ld1 {v0.16b}, [x13], #16 - sxtl v11.8h, v0.8b - sxtl2 v12.8h, v0.16b - sxtl v8.4s, v11.4h - sxtl2 v9.4s, v11.8h - sxtl v10.4s, v12.4h - sxtl2 v11.4s, v12.8h - scvtf v12.4s, v8.4s - scvtf v13.4s, v9.4s - mov v8.16b, v26.16b - mov v9.16b, v27.16b - fmla v8.4s, v12.4s, v24.4s - fmla v9.4s, v13.4s, v25.4s - scvtf v12.4s, v10.4s - scvtf v13.4s, v11.4s - mov v10.16b, v26.16b - mov v11.16b, v27.16b - fmla v10.4s, v12.4s, v24.4s - fmla v11.4s, v13.4s, v25.4s - // st1 {v8.4s, v9.4s, v10.4s, v11.4s}, [x0] - // b End + subs x12, x9, #1 + + ld1 {v12.4s, v13.4s}, [x14], #32 // alpha + ld1 {v14.4s, v15.4s}, [x24], #32 // bias + + ld1 {v3.8b}, [x13], #8 + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + sxtl2 v9.4s, v4.8h + scvtf v0.4s, v8.4s + scvtf v1.4s, v9.4s + fmul v3.4s, v0.4s, v12.4s + fmul v4.4s, v1.4s, v13.4s + fadd v3.4s, v3.4s, v14.4s + fadd v4.4s, v4.4s, v15.4s ld1 {v0.4s}, [x15], x11 - ld1 {v1.4s}, [x15], x11 - fmul v16.4s, v8.4s, v0.s[0] - fmul v17.4s, v8.4s, v0.s[1] - fmul v18.4s, v8.4s, v0.s[2] - fmul v19.4s, v8.4s, v0.s[3] - - fmul v20.4s, v9.4s, v0.s[0] - fmul v21.4s, v9.4s, v0.s[1] - fmul v22.4s, v9.4s, v0.s[2] - fmul v23.4s, v9.4s, v0.s[3] - - fmla v16.4s, v10.4s, v1.s[0] - fmla v17.4s, v10.4s, v1.s[1] - fmla v18.4s, v10.4s, v1.s[2] - fmla v19.4s, v10.4s, v1.s[3] - - fmla v20.4s, v11.4s, v1.s[0] - fmla v21.4s, v11.4s, v1.s[1] - fmla v22.4s, v11.4s, v1.s[2] - fmla v23.4s, v11.4s, v1.s[3] + fmul v16.4s, v3.4s, v0.s[0] + fmul v17.4s, v3.4s, v0.s[1] + fmul v18.4s, v3.4s, v0.s[2] + fmul v19.4s, v3.4s, v0.s[3] + + fmul v20.4s, v4.4s, v0.s[0] + fmul v21.4s, v4.4s, v0.s[1] + fmul v22.4s, v4.4s, v0.s[2] + fmul v23.4s, v4.4s, v0.s[3] + beq E4LoopLEnd + subs x12, x12, #1 + + ld1 {v3.8b}, [x13], #8 + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + sxtl2 v9.4s, v4.8h + scvtf v0.4s, v8.4s + scvtf v1.4s, v9.4s + fmul v3.4s, v0.4s, v12.4s + fmul v4.4s, v1.4s, v13.4s + fadd v3.4s, v3.4s, v14.4s + fadd v4.4s, v4.4s, v15.4s + + ld1 {v0.4s}, [x15], x11 + fmla v16.4s, v3.4s, v0.s[0] + fmla v17.4s, v3.4s, v0.s[1] + + beq E4LoopLComputeEnd + E4LoopL: - subs x12, x12, #2 - ld1 {v0.16b}, [x13], #16 - sxtl v11.8h, v0.8b - sxtl2 v12.8h, v0.16b - sxtl v8.4s, v11.4h - sxtl2 v9.4s, v11.8h - sxtl v10.4s, v12.4h - sxtl2 v11.4s, v12.8h - scvtf v12.4s, v8.4s - scvtf v13.4s, v9.4s - mov v8.16b, v26.16b - mov v9.16b, v27.16b - fmla v8.4s, v12.4s, v24.4s - fmla v9.4s, v13.4s, v25.4s - scvtf v12.4s, v10.4s - scvtf v13.4s, v11.4s - mov v10.16b, v26.16b - mov v11.16b, v27.16b - fmla v10.4s, v12.4s, v24.4s - fmla v11.4s, v13.4s, v25.4s + fmla v18.4s, v3.4s, v0.s[2] + fmla v19.4s, v3.4s, v0.s[3] + + fmla v20.4s, v4.4s, v0.s[0] + fmla v21.4s, v4.4s, v0.s[1] + fmla v22.4s, v4.4s, v0.s[2] + fmla v23.4s, v4.4s, v0.s[3] + + ld1 {v3.8b}, [x13], #8 + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + sxtl2 v9.4s, v4.8h + scvtf v0.4s, v8.4s + scvtf v1.4s, v9.4s + fmul v3.4s, v0.4s, v12.4s + fmul v4.4s, v1.4s, v13.4s + fadd v3.4s, v3.4s, v14.4s + fadd v4.4s, v4.4s, v15.4s + ld1 {v0.4s}, [x15], x11 - ld1 {v1.4s}, [x15], x11 - fmla v16.4s, v8.4s, v0.s[0] - fmla v17.4s, v8.4s, v0.s[1] - fmla v18.4s, v8.4s, v0.s[2] - fmla v19.4s, v8.4s, v0.s[3] - - fmla v20.4s, v9.4s, v0.s[0] - fmla v21.4s, v9.4s, v0.s[1] - fmla v22.4s, v9.4s, v0.s[2] - fmla v23.4s, v9.4s, v0.s[3] - - fmla v16.4s, v10.4s, v1.s[0] - fmla v17.4s, v10.4s, v1.s[1] - fmla v18.4s, v10.4s, v1.s[2] - fmla v19.4s, v10.4s, v1.s[3] - - fmla v20.4s, v11.4s, v1.s[0] - fmla v21.4s, v11.4s, v1.s[1] - fmla v22.4s, v11.4s, v1.s[2] - fmla v23.4s, v11.4s, v1.s[3] + fmla v16.4s, v3.4s, v0.s[0] + fmla v17.4s, v3.4s, v0.s[1] + + subs x12, x12, #1 bne E4LoopL + E4LoopLComputeEnd: + fmla v18.4s, v3.4s, v0.s[2] + fmla v19.4s, v3.4s, v0.s[3] + + fmla v20.4s, v4.4s, v0.s[0] + fmla v21.4s, v4.4s, v0.s[1] + fmla v22.4s, v4.4s, v0.s[2] + fmla v23.4s, v4.4s, v0.s[3] + E4LoopLEnd: add x13, x13, x19 sub x8, x8, #2 @@ -656,106 +483,44 @@ blt E1 E4LH4: cbz x8, E4End mov x15, x1 - ld1 {v4.4s}, [x14], #16 // alpha - ld1 {v14.4s}, [x16], #16 // bias - subs x12, x9, #4 - // load 16xint4 to 16xfloat - ld1 {v3.4s}, [x13] - uzp1 v0.4s, v3.4s, v3.4s - sxtl v11.8h, v0.8b - sxtl2 v12.8h, v0.16b - sxtl v8.4s, v11.4h - sxtl2 v9.4s, v11.8h - sxtl v10.4s, v12.4h - sxtl2 v11.4s, v12.8h + subs x12, x9, #1 + + ld1 {v12.4s}, [x14] // alpha + ld1 {v14.4s}, [x24] // bias + ld1 {v3.s}[0], [x13] + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + scvtf v0.4s, v8.4s + fmul v3.4s, v0.4s, v12.4s + fadd v3.4s, v3.4s, v14.4s + add x13, x13, #8 + ld1 {v0.4s}, [x15], x11 - scvtf v12.4s, v8.4s - scvtf v13.4s, v9.4s - mov v8.16b, v14.16b - mov v9.16b, v14.16b - fmla v8.4s, v12.4s, v4.4s - ld1 {v1.4s}, [x15], x11 - fmla v9.4s, v13.4s, v4.4s - scvtf v12.4s, v10.4s - ld1 {v2.4s}, [x15], x11 - scvtf v13.4s, v11.4s - mov v10.16b, v14.16b - mov v11.16b, v14.16b - ld1 {v3.4s}, [x15], x11 - fmla v10.4s, v12.4s, v4.4s - fmla v11.4s, v13.4s, v4.4s - - // ld1 {v0.4s, v1.4s, v2.4s, v3.4s}, [x15], x11 - fmul v16.4s, v8.4s, v0.s[0] - fmul v17.4s, v8.4s, v0.s[1] - fmul v18.4s, v8.4s, v0.s[2] - fmul v19.4s, v8.4s, v0.s[3] - - fmla v16.4s, v9.4s, v1.s[0] - fmla v17.4s, v9.4s, v1.s[1] - fmla v18.4s, v9.4s, v1.s[2] - fmla v19.4s, v9.4s, v1.s[3] - - fmla v16.4s, v10.4s, v2.s[0] - fmla v17.4s, v10.4s, v2.s[1] - fmla v18.4s, v10.4s, v2.s[2] - fmla v19.4s, v10.4s, v2.s[3] - - fmla v16.4s, v11.4s, v3.s[0] - fmla v17.4s, v11.4s, v3.s[1] - fmla v18.4s, v11.4s, v3.s[2] - fmla v19.4s, v11.4s, v3.s[3] - add x13, x13, #32 + fmul v16.4s, v3.4s, v0.s[0] + fmul v17.4s, v3.4s, v0.s[1] + fmul v18.4s, v3.4s, v0.s[2] + fmul v19.4s, v3.4s, v0.s[3] + beq E4LoopLREnd E4LoopLR: - ld1 {v3.4s}, [x13] - uzp1 v0.4s, v3.4s, v3.4s - sxtl v11.8h, v0.8b - sxtl2 v12.8h, v0.16b - sxtl v8.4s, v11.4h - sxtl2 v9.4s, v11.8h - sxtl v10.4s, v12.4h - sxtl2 v11.4s, v12.8h - scvtf v12.4s, v8.4s - scvtf v13.4s, v9.4s - mov v8.16b, v14.16b - mov v9.16b, v14.16b - fmla v8.4s, v12.4s, v4.4s - fmla v9.4s, v13.4s, v4.4s - scvtf v12.4s, v10.4s - scvtf v13.4s, v11.4s - mov v10.16b, v14.16b - mov v11.16b, v14.16b - fmla v10.4s, v12.4s, v4.4s - fmla v11.4s, v13.4s, v4.4s - // ld1 {v0.4s, v1.4s, v2.4s, v3.4s}, [x15], x11 + + ld1 {v3.s}[0], [x13] + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + scvtf v0.4s, v8.4s + fmul v3.4s, v0.4s, v12.4s + fadd v3.4s, v3.4s, v14.4s + add x13, x13, #8 + ld1 {v0.4s}, [x15], x11 - ld1 {v1.4s}, [x15], x11 - ld1 {v2.4s}, [x15], x11 - ld1 {v3.4s}, [x15], x11 - fmla v16.4s, v8.4s, v0.s[0] - fmla v17.4s, v8.4s, v0.s[1] - fmla v18.4s, v8.4s, v0.s[2] - fmla v19.4s, v8.4s, v0.s[3] - - fmla v16.4s, v9.4s, v1.s[0] - fmla v17.4s, v9.4s, v1.s[1] - fmla v18.4s, v9.4s, v1.s[2] - fmla v19.4s, v9.4s, v1.s[3] - - fmla v16.4s, v10.4s, v2.s[0] - fmla v17.4s, v10.4s, v2.s[1] - fmla v18.4s, v10.4s, v2.s[2] - fmla v19.4s, v10.4s, v2.s[3] - - fmla v16.4s, v11.4s, v3.s[0] - fmla v17.4s, v11.4s, v3.s[1] - fmla v18.4s, v11.4s, v3.s[2] - fmla v19.4s, v11.4s, v3.s[3] - add x13, x13, #32 - subs x12, x12, #4 - bne E4LoopLR + fmla v16.4s, v3.4s, v0.s[0] + fmla v17.4s, v3.4s, v0.s[1] + fmla v18.4s, v3.4s, v0.s[2] + fmla v19.4s, v3.4s, v0.s[3] + + subs x12, x12, #1 + bne E4LoopLR E4LoopLREnd: cbz x5, StoreLH4x4 @@ -800,201 +565,114 @@ LoopE1: mov x21, x0 mov x13, x2 mov x14, x22 - mov x16, x23 - - E1H16: - cmp x8, #4 - blt E1LH8 - E1LoopH16: - mov x15, x1 - add x24, x13, x25 - ld1 {v24.4s, v25.4s, v26.4s, v27.4s}, [x14], #64 // Weight dequantize scale - mov x12, x9 - ld1 {v28.4s, v29.4s, v30.4s, v31.4s}, [x20], #64 // Bias - - E1LoopH16L: - ld1 {v0.s}[0], [x15], x11 // Input Float - ld1 {v0.s}[1], [x15], x11 - ld1 {v1.16b}, [x13], #16 // Weight Int8 - ld1 {v2.16b}, [x24], #16 - ld1 {v20.4s, v21.4s, v22.4s, v23.4s}, [x16] // bias for dequantizing weight. - ld1 {v16.4s, v17.4s, v18.4s, v19.4s}, [x16] - subs x12, x12, #2 // Compute 2 point along L. - - // Dequantize Int8 weight. - sxtl v3.8h, v1.8b - sxtl2 v4.8h, v1.16b - sxtl v5.8h, v2.8b - sxtl2 v15.8h, v2.16b - - sxtl2 v8.4s, v3.8h - sxtl v9.4s, v4.4h - sxtl2 v10.4s, v4.8h - sxtl v11.4s, v5.4h - sxtl2 v12.4s, v5.8h - sxtl v13.4s, v15.4h - sxtl2 v14.4s, v15.8h - sxtl v1.4s, v3.4h - - - scvtf v8.4s, v8.4s - scvtf v9.4s, v9.4s - scvtf v10.4s, v10.4s - scvtf v11.4s, v11.4s - scvtf v12.4s, v12.4s - scvtf v13.4s, v13.4s - scvtf v14.4s, v14.4s - scvtf v1.4s, v1.4s - - fmla v17.4s, v8.4s, v25.4s - fmla v20.4s, v9.4s, v24.4s - fmla v21.4s, v10.4s, v25.4s - fmla v18.4s, v11.4s, v26.4s - fmla v19.4s, v12.4s, v27.4s - fmla v22.4s, v13.4s, v26.4s - fmla v23.4s, v14.4s, v27.4s - fmla v16.4s, v1.4s, v24.4s - - fmla v28.4s, v16.4s, v0.s[0] - fmla v29.4s, v17.4s, v0.s[0] - fmla v28.4s, v20.4s, v0.s[1] - fmla v29.4s, v21.4s, v0.s[1] - fmla v30.4s, v18.4s, v0.s[0] - fmla v31.4s, v19.4s, v0.s[0] - fmla v30.4s, v22.4s, v0.s[1] - fmla v31.4s, v23.4s, v0.s[1] - - bne E1LoopH16L - E1LoopH16LEnd: - sub x8, x8, #4 - add x13, x24, x19 - add x16, x16, #64 - - cbz x5, StoreE1H16 - - PostTreatE1H16: - fmax v28.4s, v28.4s, v6.4s - fmax v29.4s, v29.4s, v6.4s - fmin v30.4s, v30.4s, v7.4s - fmin v31.4s, v31.4s, v7.4s - - StoreE1H16: - cmp x8, #4 - st1 {v28.4s}, [x0], x7 - st1 {v29.4s}, [x0], x7 - st1 {v30.4s}, [x0], x7 - st1 {v31.4s}, [x0], x7 - bge E1LoopH16 + mov x24, x23 - E1LH8: cmp x8, #2 blt E1LH4 + + E1LH8: E1LoopH8: mov x15, x1 - ld1 {v24.4s, v25.4s}, [x14], #32 // alpha - mov x12, x9 - ld1 {v27.4s, v28.4s}, [x20], #32 // Bias - - E1LoopH8L: - ld1 {v0.16b}, [x13], #16 - ld1 {v29.s}[0], [x15], x11 // Input Float - ld1 {v29.s}[1], [x15], x11 - ld1 {v8.4s, v9.4s},[x16] // bias for dequantizing weight. - ld1 {v10.4s, v11.4s}, [x16] - - subs x12, x12, #2 - // Weight Int8->Int32. - sxtl v30.8h, v0.8b - sxtl2 v31.8h, v0.16b - sxtl v1.4s, v30.4h - sxtl2 v2.4s, v30.8h - sxtl v3.4s, v31.4h - sxtl2 v4.4s, v31.8h - scvtf v1.4s, v1.4s - scvtf v2.4s, v2.4s - scvtf v3.4s, v3.4s - scvtf v4.4s, v4.4s - - // Dequantize Weight. - fmla v8.4s, v1.4s, v24.4s - fmla v9.4s, v2.4s, v25.4s - fmla v10.4s, v3.4s, v24.4s - fmla v11.4s, v4.4s, v25.4s - - fmla v27.4s, v8.4s, v29.s[0] - fmla v28.4s, v9.4s, v29.s[0] - fmla v27.4s, v10.4s, v29.s[1] - fmla v28.4s, v11.4s, v29.s[1] - - bne E1LoopH8L - - E1LoopH8LEnd: + subs x12, x9, #1 + + ld1 {v12.4s, v13.4s}, [x14], #32 // alpha + ld1 {v14.4s, v15.4s}, [x24], #32 // bias + + ld1 {v3.8b}, [x13], #8 + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + sxtl2 v9.4s, v4.8h + scvtf v0.4s, v8.4s + scvtf v1.4s, v9.4s + fmul v3.4s, v0.4s, v12.4s + fmul v4.4s, v1.4s, v13.4s + fadd v3.4s, v3.4s, v14.4s + fadd v4.4s, v4.4s, v15.4s + + ld1 {v0.s}[0], [x15], x11 + fmul v16.4s, v3.4s, v0.s[0] + fmul v20.4s, v4.4s, v0.s[0] + + beq E1LoopLEnd + + E1LoopL: + + ld1 {v3.8b}, [x13], #8 + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + sxtl2 v9.4s, v4.8h + scvtf v0.4s, v8.4s + scvtf v1.4s, v9.4s + fmul v3.4s, v0.4s, v12.4s + fmul v4.4s, v1.4s, v13.4s + fadd v3.4s, v3.4s, v14.4s + fadd v4.4s, v4.4s, v15.4s + ld1 {v0.s}[0], [x15], x11 + fmla v16.4s, v3.4s, v0.s[0] + fmla v20.4s, v4.4s, v0.s[0] + + subs x12, x12, #1 + bne E1LoopL + + E1LoopLEnd: add x13, x13, x19 - add x16, x16, #32 sub x8, x8, #2 cmp x8, #2 cbz x5, StoreLH1x8 + AddBiasLH1x8: + ld1 {v0.4s, v1.4s}, [x20], #32 + + fmla v16.4s, v0.4s, v5.s[1] + fmla v20.4s, v1.4s, v5.s[1] PostTreatLH1x8: - fmax v27.4s, v27.4s, v6.4s - fmax v28.4s, v28.4s, v6.4s - fmin v27.4s, v27.4s, v7.4s - fmin v28.4s, v28.4s, v7.4s + fmax v16.4s, v16.4s, v6.4s + fmax v20.4s, v20.4s, v6.4s + fmin v16.4s, v16.4s, v7.4s + fmin v20.4s, v20.4s, v7.4s StoreLH1x8: - st1 {v27.4s}, [x0], x7 - st1 {v28.4s}, [x0], x7 + st1 {v16.4s}, [x0], x7 + st1 {v20.4s}, [x0], x7 bge E1LoopH8 E1LH4: cbz x8, E1End mov x15, x1 - ld1 {v4.4s}, [x14], #16 // alpha - ld1 {v14.4s}, [x16], #16 // bias - subs x12, x9, #2 - ld1 {v3.4s}, [x13], #16 - uzp1 v0.4s, v3.4s, v3.4s - sxtl v11.8h, v0.8b - sxtl v8.4s, v11.4h - sxtl2 v9.4s, v11.8h - scvtf v12.4s, v8.4s - scvtf v13.4s, v9.4s - mov v8.16b, v14.16b - mov v9.16b, v14.16b - fmla v8.4s, v12.4s, v4.4s - fmla v9.4s, v13.4s, v4.4s + subs x12, x9, #1 + + ld1 {v12.4s}, [x14] // alpha + ld1 {v14.4s}, [x24] // bias + ld1 {v3.s}[0], [x13] + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + scvtf v0.4s, v8.4s + fmul v3.4s, v0.4s, v12.4s + fadd v3.4s, v3.4s, v14.4s + add x13, x13, #8 + ld1 {v0.s}[0], [x15], x11 - ld1 {v0.s}[1], [x15], x11 - fmul v16.4s, v8.4s, v0.s[0] - fmla v16.4s, v9.4s, v0.s[1] + fmul v16.4s, v3.4s, v0.s[0] beq E1LoopLREnd E1LoopLR: - // weight: load 8 x int8 to 8 x float - ld1 {v3.4s}, [x13], #16 - uzp1 v0.4s, v3.4s, v3.4s - sxtl v11.8h, v0.8b - sxtl v8.4s, v11.4h - sxtl2 v9.4s, v11.8h - scvtf v12.4s, v8.4s - scvtf v13.4s, v9.4s - mov v8.16b, v15.16b - mov v9.16b, v15.16b - fmla v8.4s, v12.4s, v4.4s - fmla v9.4s, v13.4s, v4.4s - - // input: load 4 x float + + ld1 {v3.s}[0], [x13] + sxtl v4.8h, v3.8b + sxtl v8.4s, v4.4h + scvtf v0.4s, v8.4s + fmul v3.4s, v0.4s, v12.4s + fadd v3.4s, v3.4s, v14.4s + add x13, x13, #8 ld1 {v0.s}[0], [x15], x11 - ld1 {v0.s}[1], [x15], x11 - // compute - fmla v16.4s, v8.4s, v0.s[0] - fmla v16.4s, v9.4s, v0.s[1] - subs x12, x12, #2 + fmla v16.4s, v3.4s, v0.s[0] + + subs x12, x12, #1 bne E1LoopLR E1LoopLREnd: @@ -1007,7 +685,6 @@ LoopE1: fmax v16.4s, v16.4s, v6.4s fmin v16.4s, v16.4s, v7.4s - StoreLH1x4: st1 {v16.4s}, [x0] diff --git a/source/backend/cpu/arm/arm64/low_memory/MNNPackedMatMul_int4.S b/source/backend/cpu/arm/arm64/low_memory/MNNPackedMatMul_int4.S index b178eecc7..17566bc4f 100644 --- a/source/backend/cpu/arm/arm64/low_memory/MNNPackedMatMul_int4.S +++ b/source/backend/cpu/arm/arm64/low_memory/MNNPackedMatMul_int4.S @@ -2,7 +2,7 @@ // MNNPackedMatMul_int4.S // MNN // -// Created by MNN on 2023/05/29. +// Created by MNN on 2023/06/06. // Copyright © 2018, Alibaba Group Holding Limited // #ifdef __aarch64__ @@ -38,32 +38,28 @@ cbz x4, Start Start: +mov x19, x6 +mov x20, x7 cmp x10, #2 blt LH4 LH8: // sub x14, x13, #160 -mov x19, x6 -mov x20, x7 LoopH: + mov x15, x1 ld1 {v4.4s, v5.4s}, [x19], #32 // alpha ld1 {v6.4s, v7.4s}, [x20], #32 // bias - subs x12, x9, #2 - // ld1 {v3.4s, v4.4s}, [x2], #32 - ld1 {v0.4h}, [x2], #8 + subs x12, x9, #1 + + ld1 {v0.s}[0], [x2], #4 ushr v1.8b, v0.8b, #4 - mov w17, #0x0f - dup v3.8b, w17 + movi v3.8b, #0x0f and v2.8b, v0.8b, v3.8b - mov w17, #8 - dup v3.8b, w17 - sub v0.8b, v1.8b, v3.8b - sub v1.8b, v2.8b, v3.8b - zip1 v2.8b, v0.8b, v1.8b - zip2 v3.8b, v0.8b, v1.8b - sxtl v0.8h, v2.8b + zip1 v3.8b, v1.8b, v2.8b + + sxtl v0.8h, v3.8b sxtl v1.4s, v0.4h sxtl2 v2.4s, v0.8h scvtf v0.4s, v1.4s @@ -103,101 +99,16 @@ LoopH: fmul v30.4s, v2.4s, v0.s[2] fmul v31.4s, v2.4s, v0.s[3] - sxtl v0.8h, v3.8b - sxtl v1.4s, v0.4h - sxtl2 v2.4s, v0.8h - scvtf v0.4s, v1.4s - scvtf v1.4s, v2.4s - mov v2.16b, v7.16b - fmla v2.4s, v1.4s, v5.4s - mov v1.16b, v6.16b - fmla v1.4s, v0.4s, v4.4s - - ld1 {v0.4s}, [x15], #16 - fmla v8.4s, v1.4s, v0.s[0] - fmla v9.4s, v1.4s, v0.s[1] - fmla v10.4s, v1.4s, v0.s[2] - fmla v11.4s, v1.4s, v0.s[3] - fmla v20.4s, v2.4s, v0.s[0] - fmla v21.4s, v2.4s, v0.s[1] - fmla v22.4s, v2.4s, v0.s[2] - fmla v23.4s, v2.4s, v0.s[3] - - ld1 {v0.4s}, [x15], #16 - fmla v12.4s, v1.4s, v0.s[0] - fmla v13.4s, v1.4s, v0.s[1] - fmla v14.4s, v1.4s, v0.s[2] - fmla v15.4s, v1.4s, v0.s[3] - fmla v24.4s, v2.4s, v0.s[0] - fmla v25.4s, v2.4s, v0.s[1] - fmla v26.4s, v2.4s, v0.s[2] - fmla v27.4s, v2.4s, v0.s[3] - - ld1 {v0.4s}, [x15], #16 - fmla v16.4s, v1.4s, v0.s[0] - fmla v17.4s, v1.4s, v0.s[1] - fmla v18.4s, v1.4s, v0.s[2] - fmla v19.4s, v1.4s, v0.s[3] - fmla v28.4s, v2.4s, v0.s[0] - fmla v29.4s, v2.4s, v0.s[1] - fmla v30.4s, v2.4s, v0.s[2] - fmla v31.4s, v2.4s, v0.s[3] - beq LoopLEnd - LoopL2: - subs x12, x12, #2 - // ld1 {v3.4s, v4.4s}, [x2], #32 - ld1 {v0.4h}, [x2], #8 + LoopL1: + subs x12, x12, #1 + + ld1 {v0.s}[0], [x2], #4 ushr v1.8b, v0.8b, #4 - mov w17, #0x0f - dup v3.8b, w17 + movi v3.8b, #0x0f and v2.8b, v0.8b, v3.8b - mov w17, #8 - dup v3.8b, w17 - sub v0.8b, v1.8b, v3.8b - sub v1.8b, v2.8b, v3.8b - zip1 v2.8b, v0.8b, v1.8b - zip2 v3.8b, v0.8b, v1.8b - sxtl v0.8h, v2.8b - sxtl v1.4s, v0.4h - sxtl2 v2.4s, v0.8h - scvtf v0.4s, v1.4s - scvtf v1.4s, v2.4s - mov v2.16b, v7.16b - fmla v2.4s, v1.4s, v5.4s - mov v1.16b, v6.16b - fmla v1.4s, v0.4s, v4.4s - - ld1 {v0.4s}, [x15], #16 - fmla v8.4s, v1.4s, v0.s[0] - fmla v9.4s, v1.4s, v0.s[1] - fmla v10.4s, v1.4s, v0.s[2] - fmla v11.4s, v1.4s, v0.s[3] - fmla v20.4s, v2.4s, v0.s[0] - fmla v21.4s, v2.4s, v0.s[1] - fmla v22.4s, v2.4s, v0.s[2] - fmla v23.4s, v2.4s, v0.s[3] - - ld1 {v0.4s}, [x15], #16 - fmla v12.4s, v1.4s, v0.s[0] - fmla v13.4s, v1.4s, v0.s[1] - fmla v14.4s, v1.4s, v0.s[2] - fmla v15.4s, v1.4s, v0.s[3] - fmla v24.4s, v2.4s, v0.s[0] - fmla v25.4s, v2.4s, v0.s[1] - fmla v26.4s, v2.4s, v0.s[2] - fmla v27.4s, v2.4s, v0.s[3] - - ld1 {v0.4s}, [x15], #16 - fmla v16.4s, v1.4s, v0.s[0] - fmla v17.4s, v1.4s, v0.s[1] - fmla v18.4s, v1.4s, v0.s[2] - fmla v19.4s, v1.4s, v0.s[3] - fmla v28.4s, v2.4s, v0.s[0] - fmla v29.4s, v2.4s, v0.s[1] - fmla v30.4s, v2.4s, v0.s[2] - fmla v31.4s, v2.4s, v0.s[3] + zip1 v3.8b, v1.8b, v2.8b sxtl v0.8h, v3.8b sxtl v1.4s, v0.4h @@ -238,7 +149,8 @@ LoopH: fmla v29.4s, v2.4s, v0.s[1] fmla v30.4s, v2.4s, v0.s[2] fmla v31.4s, v2.4s, v0.s[3] - bne LoopL2 + + bne LoopL1 LoopLEnd: @@ -365,31 +277,22 @@ LH4: cbz x10, End LoopHRemain: mov x15, x1 - subs x12, x9, #4 + subs x12, x9, #1 + ld1 {v20.4s}, [x19], #16 // alpha ld1 {v21.4s}, [x20], #16 // bias - mov w17, #0x0f - dup v22.16b, w17 - mov w17, #8 - dup v23.16b, w17 - // ld1 {v3.4s}, [x2] - ld1 {v3.8h}, [x2], #16 - uzp1 v0.4s, v3.4s, v3.4s + + ld1 {v0.s}[0], [x2], #4 ushr v1.8b, v0.8b, #4 - and v2.8b, v0.8b, v22.8b - sub v1.8b, v1.8b, v23.8b - sub v2.8b, v2.8b, v23.8b - zip1 v6.8b, v1.8b, v2.8b - zip2 v7.8b, v1.8b, v2.8b - sxtl v0.8h, v6.8b + movi v3.8b, #0x0f + and v2.8b, v0.8b, v3.8b + zip1 v0.8b, v1.8b, v2.8b + + sxtl v0.8h, v0.8b sxtl v1.4s, v0.4h - sxtl2 v2.4s, v0.8h scvtf v1.4s, v1.4s - scvtf v2.4s, v2.4s mov v3.16b, v21.16b - mov v4.16b, v21.16b fmla v3.4s, v1.4s, v20.4s - fmla v4.4s, v2.4s, v20.4s ld1 {v0.4s}, [x15], #16 fmul v8.4s, v3.4s, v0.s[0] @@ -407,123 +310,25 @@ LoopHRemain: fmul v18.4s, v3.4s, v2.s[2] fmul v19.4s, v3.4s, v2.s[3] - ld1 {v0.4s}, [x15], #16 - fmla v8.4s, v4.4s, v0.s[0] - fmla v9.4s, v4.4s, v0.s[1] - ld1 {v1.4s}, [x15], #16 - fmla v10.4s, v4.4s, v0.s[2] - fmla v11.4s, v4.4s, v0.s[3] - fmla v12.4s, v4.4s, v1.s[0] - ld1 {v2.4s}, [x15], #16 - fmla v13.4s, v4.4s, v1.s[1] - fmla v14.4s, v4.4s, v1.s[2] - fmla v15.4s, v4.4s, v1.s[3] - fmla v16.4s, v4.4s, v2.s[0] - fmla v17.4s, v4.4s, v2.s[1] - fmla v18.4s, v4.4s, v2.s[2] - fmla v19.4s, v4.4s, v2.s[3] - - sxtl v0.8h, v7.8b - sxtl v1.4s, v0.4h - sxtl2 v2.4s, v0.8h - scvtf v1.4s, v1.4s - scvtf v2.4s, v2.4s - mov v3.16b, v21.16b - mov v4.16b, v21.16b - fmla v3.4s, v1.4s, v20.4s - fmla v4.4s, v2.4s, v20.4s - - ld1 {v0.4s}, [x15], #16 - fmla v8.4s, v3.4s, v0.s[0] - fmla v9.4s, v3.4s, v0.s[1] - ld1 {v1.4s}, [x15], #16 - fmla v10.4s, v3.4s, v0.s[2] - fmla v11.4s, v3.4s, v0.s[3] - fmla v12.4s, v3.4s, v1.s[0] - ld1 {v2.4s}, [x15], #16 - fmla v13.4s, v3.4s, v1.s[1] - fmla v14.4s, v3.4s, v1.s[2] - fmla v15.4s, v3.4s, v1.s[3] - fmla v16.4s, v3.4s, v2.s[0] - fmla v17.4s, v3.4s, v2.s[1] - fmla v18.4s, v3.4s, v2.s[2] - fmla v19.4s, v3.4s, v2.s[3] - - ld1 {v0.4s}, [x15], #16 - fmla v8.4s, v4.4s, v0.s[0] - fmla v9.4s, v4.4s, v0.s[1] - ld1 {v1.4s}, [x15], #16 - fmla v10.4s, v4.4s, v0.s[2] - fmla v11.4s, v4.4s, v0.s[3] - fmla v12.4s, v4.4s, v1.s[0] - ld1 {v2.4s}, [x15], #16 - fmla v13.4s, v4.4s, v1.s[1] - fmla v14.4s, v4.4s, v1.s[2] - fmla v15.4s, v4.4s, v1.s[3] - fmla v16.4s, v4.4s, v2.s[0] - fmla v17.4s, v4.4s, v2.s[1] - fmla v18.4s, v4.4s, v2.s[2] - fmla v19.4s, v4.4s, v2.s[3] - beq LoopLREnd LoopLR: - subs x12, x12, #4 - // ld1 {v3.4s}, [x2] - ld1 {v3.8h}, [x2], #16 - uzp1 v0.4s, v3.4s, v3.4s + subs x12, x12, #1 + + ld1 {v0.s}[0], [x2], #4 ushr v1.8b, v0.8b, #4 - and v2.8b, v0.8b, v22.8b - sub v1.8b, v1.8b, v23.8b - sub v2.8b, v2.8b, v23.8b - zip1 v6.8b, v1.8b, v2.8b - zip2 v7.8b, v1.8b, v2.8b - sxtl v0.8h, v6.8b - sxtl v1.4s, v0.4h - sxtl2 v2.4s, v0.8h - scvtf v1.4s, v1.4s - scvtf v2.4s, v2.4s - mov v3.16b, v21.16b - mov v4.16b, v21.16b - fmla v3.4s, v1.4s, v20.4s - fmla v4.4s, v2.4s, v20.4s - ld1 {v0.4s, v1.4s, v2.4s}, [x15], #48 - fmla v8.4s, v3.4s, v0.s[0] - fmla v9.4s, v3.4s, v0.s[1] - fmla v10.4s, v3.4s, v0.s[2] - fmla v11.4s, v3.4s, v0.s[3] - fmla v12.4s, v3.4s, v1.s[0] - fmla v13.4s, v3.4s, v1.s[1] - fmla v14.4s, v3.4s, v1.s[2] - fmla v15.4s, v3.4s, v1.s[3] - fmla v16.4s, v3.4s, v2.s[0] - fmla v17.4s, v3.4s, v2.s[1] - fmla v18.4s, v3.4s, v2.s[2] - fmla v19.4s, v3.4s, v2.s[3] + movi v3.8b, #0x0f + and v2.8b, v0.8b, v3.8b + zip1 v3.8b, v1.8b, v2.8b - ld1 {v0.4s, v1.4s, v2.4s}, [x15], #48 - fmla v8.4s, v4.4s, v0.s[0] - fmla v9.4s, v4.4s, v0.s[1] - fmla v10.4s, v4.4s, v0.s[2] - fmla v11.4s, v4.4s, v0.s[3] - fmla v12.4s, v4.4s, v1.s[0] - fmla v13.4s, v4.4s, v1.s[1] - fmla v14.4s, v4.4s, v1.s[2] - fmla v15.4s, v4.4s, v1.s[3] - fmla v16.4s, v4.4s, v2.s[0] - fmla v17.4s, v4.4s, v2.s[1] - fmla v18.4s, v4.4s, v2.s[2] - fmla v19.4s, v4.4s, v2.s[3] - - sxtl v0.8h, v7.8b + sxtl v0.8h, v3.8b + sxtl2 v2.8h, v3.16b sxtl v1.4s, v0.4h - sxtl2 v2.4s, v0.8h + sxtl v2.4s, v2.4h scvtf v1.4s, v1.4s scvtf v2.4s, v2.4s mov v3.16b, v21.16b - mov v4.16b, v21.16b fmla v3.4s, v1.4s, v20.4s - fmla v4.4s, v2.4s, v20.4s ld1 {v0.4s, v1.4s, v2.4s}, [x15], #48 fmla v8.4s, v3.4s, v0.s[0] @@ -539,20 +344,8 @@ LoopHRemain: fmla v18.4s, v3.4s, v2.s[2] fmla v19.4s, v3.4s, v2.s[3] - ld1 {v0.4s, v1.4s, v2.4s}, [x15], #48 - fmla v8.4s, v4.4s, v0.s[0] - fmla v9.4s, v4.4s, v0.s[1] - fmla v10.4s, v4.4s, v0.s[2] - fmla v11.4s, v4.4s, v0.s[3] - fmla v12.4s, v4.4s, v1.s[0] - fmla v13.4s, v4.4s, v1.s[1] - fmla v14.4s, v4.4s, v1.s[2] - fmla v15.4s, v4.4s, v1.s[3] - fmla v16.4s, v4.4s, v2.s[0] - fmla v17.4s, v4.4s, v2.s[1] - fmla v18.4s, v4.4s, v2.s[2] - fmla v19.4s, v4.4s, v2.s[3] bne LoopLR + LoopLREnd: cbz x4, StoreLH4 @@ -612,11 +405,6 @@ LoopHRemain: stp q16, q17, [x0, #(32 * 4)] stp q18, q19, [x0, #(32 * 5)] - // st1 {v8.4s, v9.4s, v10.4s, v11.4s}, [x0], #64 - // st1 {v12.4s, v13.4s, v14.4s, v15.4s}, [x0], #64 - // st1 {v16.4s, v17.4s, v18.4s, v19.4s}, [x0] - sub x10, x10, #1 - End: ldp x19, x20, [sp, #64] diff --git a/source/backend/cpu/arm/arm64/low_memory/MNNPackedMatMul_int8.S b/source/backend/cpu/arm/arm64/low_memory/MNNPackedMatMul_int8.S index cbebda551..346cba3c5 100644 --- a/source/backend/cpu/arm/arm64/low_memory/MNNPackedMatMul_int8.S +++ b/source/backend/cpu/arm/arm64/low_memory/MNNPackedMatMul_int8.S @@ -38,22 +38,22 @@ cbz x4, Start Start: +mov x19, x6 +mov x20, x7 cmp x10, #2 blt LH4 LH8: // sub x14, x13, #160 -mov x19, x6 -mov x20, x7 LoopH: mov x15, x1 ld1 {v4.4s, v5.4s}, [x19], #32 // alpha ld1 {v6.4s, v7.4s}, [x20], #32 // bias - subs x12, x9, #2 - // ld1 {v3.4s, v4.4s}, [x2], #32 - ld1 {v3.16b}, [x2], #16 + subs x12, x9, #1 + + ld1 {v3.8b}, [x2], #8 sxtl v0.8h, v3.8b sxtl v1.4s, v0.4h sxtl2 v2.4s, v0.8h @@ -94,50 +94,13 @@ LoopH: fmul v30.4s, v2.4s, v0.s[2] fmul v31.4s, v2.4s, v0.s[3] - sxtl2 v0.8h, v3.16b - sxtl v1.4s, v0.4h - sxtl2 v2.4s, v0.8h - scvtf v0.4s, v1.4s - scvtf v1.4s, v2.4s - mov v2.16b, v7.16b - fmla v2.4s, v1.4s, v5.4s - mov v1.16b, v6.16b - fmla v1.4s, v0.4s, v4.4s - - ld1 {v0.4s}, [x15], #16 - fmla v8.4s, v1.4s, v0.s[0] - fmla v9.4s, v1.4s, v0.s[1] - fmla v10.4s, v1.4s, v0.s[2] - fmla v11.4s, v1.4s, v0.s[3] - fmla v20.4s, v2.4s, v0.s[0] - fmla v21.4s, v2.4s, v0.s[1] - fmla v22.4s, v2.4s, v0.s[2] - fmla v23.4s, v2.4s, v0.s[3] - - ld1 {v0.4s}, [x15], #16 - fmla v12.4s, v1.4s, v0.s[0] - fmla v13.4s, v1.4s, v0.s[1] - fmla v14.4s, v1.4s, v0.s[2] - fmla v15.4s, v1.4s, v0.s[3] - fmla v24.4s, v2.4s, v0.s[0] - fmla v25.4s, v2.4s, v0.s[1] - fmla v26.4s, v2.4s, v0.s[2] - fmla v27.4s, v2.4s, v0.s[3] - - ld1 {v0.4s}, [x15], #16 - fmla v16.4s, v1.4s, v0.s[0] - fmla v17.4s, v1.4s, v0.s[1] - fmla v18.4s, v1.4s, v0.s[2] - fmla v19.4s, v1.4s, v0.s[3] - fmla v28.4s, v2.4s, v0.s[0] - fmla v29.4s, v2.4s, v0.s[1] - fmla v30.4s, v2.4s, v0.s[2] - fmla v31.4s, v2.4s, v0.s[3] - beq LoopLEnd + cmp x12, #2 + blt LH8L1 + LoopL2: - subs x12, x12, #2 + sub x12, x12, #2 // ld1 {v3.4s, v4.4s}, [x2], #32 ld1 {v3.16b}, [x2], #16 sxtl v0.8h, v3.8b @@ -219,7 +182,54 @@ LoopH: fmla v29.4s, v2.4s, v0.s[1] fmla v30.4s, v2.4s, v0.s[2] fmla v31.4s, v2.4s, v0.s[3] - bne LoopL2 + + cmp x12, #2 + bge LoopL2 + + LH8L1: + cmp x12, #0 + beq LoopLEnd + + ld1 {v3.8b}, [x2], #8 + sxtl v0.8h, v3.8b + sxtl v1.4s, v0.4h + sxtl2 v2.4s, v0.8h + scvtf v0.4s, v1.4s + scvtf v1.4s, v2.4s + mov v2.16b, v7.16b + fmla v2.4s, v1.4s, v5.4s + mov v1.16b, v6.16b + fmla v1.4s, v0.4s, v4.4s + + ld1 {v0.4s}, [x15], #16 + fmla v8.4s, v1.4s, v0.s[0] + fmla v9.4s, v1.4s, v0.s[1] + fmla v10.4s, v1.4s, v0.s[2] + fmla v11.4s, v1.4s, v0.s[3] + fmla v20.4s, v2.4s, v0.s[0] + fmla v21.4s, v2.4s, v0.s[1] + fmla v22.4s, v2.4s, v0.s[2] + fmla v23.4s, v2.4s, v0.s[3] + + ld1 {v0.4s}, [x15], #16 + fmla v12.4s, v1.4s, v0.s[0] + fmla v13.4s, v1.4s, v0.s[1] + fmla v14.4s, v1.4s, v0.s[2] + fmla v15.4s, v1.4s, v0.s[3] + fmla v24.4s, v2.4s, v0.s[0] + fmla v25.4s, v2.4s, v0.s[1] + fmla v26.4s, v2.4s, v0.s[2] + fmla v27.4s, v2.4s, v0.s[3] + + ld1 {v0.4s}, [x15], #16 + fmla v16.4s, v1.4s, v0.s[0] + fmla v17.4s, v1.4s, v0.s[1] + fmla v18.4s, v1.4s, v0.s[2] + fmla v19.4s, v1.4s, v0.s[3] + fmla v28.4s, v2.4s, v0.s[0] + fmla v29.4s, v2.4s, v0.s[1] + fmla v30.4s, v2.4s, v0.s[2] + fmla v31.4s, v2.4s, v0.s[3] LoopLEnd: @@ -346,21 +356,17 @@ LH4: cbz x10, End LoopHRemain: mov x15, x1 - subs x12, x9, #4 + subs x12, x9, #1 + ld1 {v20.4s}, [x19], #16 // alpha ld1 {v21.4s}, [x20], #16 // bias // ld1 {v3.4s}, [x2] - ld1 {v0.4s}, [x2], #16 - uzp1 v7.4s, v0.4s, v0.4s - sxtl v0.8h, v7.8b + ld1 {v0.8b}, [x2], #8 + sxtl v0.8h, v0.8b sxtl v1.4s, v0.4h - sxtl2 v2.4s, v0.8h scvtf v1.4s, v1.4s - scvtf v2.4s, v2.4s mov v3.16b, v21.16b - mov v4.16b, v21.16b fmla v3.4s, v1.4s, v20.4s - fmla v4.4s, v2.4s, v20.4s ld1 {v0.4s}, [x15], #16 fmul v8.4s, v3.4s, v0.s[0] @@ -378,74 +384,19 @@ LoopHRemain: fmul v18.4s, v3.4s, v2.s[2] fmul v19.4s, v3.4s, v2.s[3] - ld1 {v0.4s}, [x15], #16 - fmla v8.4s, v4.4s, v0.s[0] - fmla v9.4s, v4.4s, v0.s[1] - ld1 {v1.4s}, [x15], #16 - fmla v10.4s, v4.4s, v0.s[2] - fmla v11.4s, v4.4s, v0.s[3] - fmla v12.4s, v4.4s, v1.s[0] - ld1 {v2.4s}, [x15], #16 - fmla v13.4s, v4.4s, v1.s[1] - fmla v14.4s, v4.4s, v1.s[2] - fmla v15.4s, v4.4s, v1.s[3] - fmla v16.4s, v4.4s, v2.s[0] - fmla v17.4s, v4.4s, v2.s[1] - fmla v18.4s, v4.4s, v2.s[2] - fmla v19.4s, v4.4s, v2.s[3] - - sxtl2 v0.8h, v7.16b - sxtl v1.4s, v0.4h - sxtl2 v2.4s, v0.8h - scvtf v1.4s, v1.4s - scvtf v2.4s, v2.4s - mov v3.16b, v21.16b - mov v4.16b, v21.16b - fmla v3.4s, v1.4s, v20.4s - fmla v4.4s, v2.4s, v20.4s - - ld1 {v0.4s}, [x15], #16 - fmla v8.4s, v3.4s, v0.s[0] - fmla v9.4s, v3.4s, v0.s[1] - ld1 {v1.4s}, [x15], #16 - fmla v10.4s, v3.4s, v0.s[2] - fmla v11.4s, v3.4s, v0.s[3] - fmla v12.4s, v3.4s, v1.s[0] - ld1 {v2.4s}, [x15], #16 - fmla v13.4s, v3.4s, v1.s[1] - fmla v14.4s, v3.4s, v1.s[2] - fmla v15.4s, v3.4s, v1.s[3] - fmla v16.4s, v3.4s, v2.s[0] - fmla v17.4s, v3.4s, v2.s[1] - fmla v18.4s, v3.4s, v2.s[2] - fmla v19.4s, v3.4s, v2.s[3] - - ld1 {v0.4s}, [x15], #16 - fmla v8.4s, v4.4s, v0.s[0] - fmla v9.4s, v4.4s, v0.s[1] - ld1 {v1.4s}, [x15], #16 - fmla v10.4s, v4.4s, v0.s[2] - fmla v11.4s, v4.4s, v0.s[3] - fmla v12.4s, v4.4s, v1.s[0] - ld1 {v2.4s}, [x15], #16 - fmla v13.4s, v4.4s, v1.s[1] - fmla v14.4s, v4.4s, v1.s[2] - fmla v15.4s, v4.4s, v1.s[3] - fmla v16.4s, v4.4s, v2.s[0] - fmla v17.4s, v4.4s, v2.s[1] - fmla v18.4s, v4.4s, v2.s[2] - fmla v19.4s, v4.4s, v2.s[3] - beq LoopLREnd + cmp x12, #2 + blt LH4L1 + LoopLR: - subs x12, x12, #4 + sub x12, x12, #2 // ld1 {v3.4s}, [x2] ld1 {v3.4s}, [x2], #16 - uzp1 v7.4s, v3.4s, v3.4s - sxtl v0.8h, v7.8b + sxtl v0.8h, v3.8b + sxtl2 v2.8h, v3.16b sxtl v1.4s, v0.4h - sxtl2 v2.4s, v0.8h + sxtl v2.4s, v2.4h scvtf v1.4s, v1.4s scvtf v2.4s, v2.4s mov v3.16b, v21.16b @@ -480,16 +431,18 @@ LoopHRemain: fmla v18.4s, v4.4s, v2.s[2] fmla v19.4s, v4.4s, v2.s[3] - sxtl2 v0.8h, v7.16b + cmp x12, #2 + bge LoopLR + LH4L1: + cmp x12, #0 + beq LoopLREnd + + ld1 {v3.8b}, [x2], #8 + sxtl v0.8h, v3.8b sxtl v1.4s, v0.4h - sxtl2 v2.4s, v0.8h scvtf v1.4s, v1.4s - scvtf v2.4s, v2.4s mov v3.16b, v21.16b - mov v4.16b, v21.16b fmla v3.4s, v1.4s, v20.4s - fmla v4.4s, v2.4s, v20.4s - ld1 {v0.4s, v1.4s, v2.4s}, [x15], #48 fmla v8.4s, v3.4s, v0.s[0] fmla v9.4s, v3.4s, v0.s[1] @@ -504,20 +457,7 @@ LoopHRemain: fmla v18.4s, v3.4s, v2.s[2] fmla v19.4s, v3.4s, v2.s[3] - ld1 {v0.4s, v1.4s, v2.4s}, [x15], #48 - fmla v8.4s, v4.4s, v0.s[0] - fmla v9.4s, v4.4s, v0.s[1] - fmla v10.4s, v4.4s, v0.s[2] - fmla v11.4s, v4.4s, v0.s[3] - fmla v12.4s, v4.4s, v1.s[0] - fmla v13.4s, v4.4s, v1.s[1] - fmla v14.4s, v4.4s, v1.s[2] - fmla v15.4s, v4.4s, v1.s[3] - fmla v16.4s, v4.4s, v2.s[0] - fmla v17.4s, v4.4s, v2.s[1] - fmla v18.4s, v4.4s, v2.s[2] - fmla v19.4s, v4.4s, v2.s[3] - bne LoopLR + LoopLREnd: cbz x4, StoreLH4 diff --git a/source/backend/cpu/bf16/BF16Backend.cpp b/source/backend/cpu/bf16/BF16Backend.cpp index 81f3b8305..1061b2705 100644 --- a/source/backend/cpu/bf16/BF16Backend.cpp +++ b/source/backend/cpu/bf16/BF16Backend.cpp @@ -41,7 +41,7 @@ Execution* BF16Backend::onCreate(const std::vector& inputs, const std:: return nullptr; } } - bool originCreate = OpCommonUtils::opCompabilityForLowp(op); + bool originCreate = OpCommonUtils::opCompabilityForLowp(op, 2); if (originCreate) { return CPUBackend::onCreate(inputs, outputs, op); } diff --git a/source/backend/cpu/compute/CommonOptFunction.cpp b/source/backend/cpu/compute/CommonOptFunction.cpp index a1a80856a..ef5b63130 100644 --- a/source/backend/cpu/compute/CommonOptFunction.cpp +++ b/source/backend/cpu/compute/CommonOptFunction.cpp @@ -448,6 +448,26 @@ void MNNAccumulateSequenceNumber (float* dst, const float* src, int size) { *dst = sum; } +void MNNCountMaxMinValue(float* source, float* minVal, float* maxVal, size_t size) { + int pack = 4; + float max_ = source[0], min_ = source[0]; + for (int i = 1; i < size; ++i) { + if (max_ < source[i]) { + max_ = source[i]; + } + if (min_ > source[i]) { + min_ = source[i]; + } + } + *minVal = min_; + *maxVal = max_; + // float range = max_ - min_; + // MNN_ASSERT(range != 0); + // *quantScale = 255.0f / range; + // *dequantScale = range / 255.0f; + // *zeroPoint = std::min(255.f, std::max(roundf(-(min_ * 255.f) / range), 0.f)) - 128.0f; +} + #ifndef MNN_USE_NEON void MNNGetMatMulPackMode(int* eP, int *lP, int* hP) { *eP = 16; @@ -612,10 +632,10 @@ static void _MNNPackedMatMulRemain_int4(float* C, const float* A, const float* f auto w23 = i4wZ[1]; int iw01 = w01; int iw23 = w23; - int iw0 = iw01 / 16 - 8; - int iw1 = iw01 % 16 - 8; - int iw2 = iw23 / 16 - 8; - int iw3 = iw23 % 16 - 8; + int iw0 = iw01 / 16; + int iw1 = iw01 % 16; + int iw2 = iw23 / 16; + int iw3 = iw23 % 16; wZ[0] = iw0 * alpha[0] + qbias[0]; wZ[1] = iw1 * alpha[1] + qbias[1]; wZ[2] = iw2 * alpha[2] + qbias[2]; @@ -2126,12 +2146,15 @@ void MNNGridSampleComputeCord3D(float* dst, const float* src, size_t inD, size_t } #ifndef MNN_USE_SSE -void MNNNorm(float *dst, const float *src, const float *gamma, const float *beta, float epsilon, size_t size) { - float sum = 0.f; - for (int j = 0; j < size; ++j) { - sum += src[j]; +void MNNNorm(float *dst, const float *src, const float *gamma, const float *beta, float epsilon, size_t size, bool RMSNorm) { + float mean = 0; + if(false == RMSNorm){ + float sum = 0.f; + for (int j = 0; j < size; ++j) { + sum += src[j]; + } + mean = sum / size; } - float mean = sum / size; float square_sum = 0.f; for (int j = 0; j < size; ++j) { square_sum += (src[j] - mean) * (src[j] - mean); @@ -2151,23 +2174,6 @@ void MNNNorm(float *dst, const float *src, const float *gamma, const float *beta } #endif -int MNNGridSampleComputeOffset3D(int d, int h, int w, int depth, int height, int width, bool padMode) { - if (padMode == true) { //padMode == BorderMode_ZEROS - if (h < 0 || h >= height || w < 0 || w >= width || d < 0 || d >= depth) { - return -1; - } - } else { - // Clearly, CLAMP is the right way to go for GridSamplePaddingMode_BORDER - // For GridSamplePaddingMode_REFLECTION, since we have reflected the values into (-1, 1), - // the leftover reflections degrade to GridSamplePaddingMode_BORDER - d = d < 0 ? 0 : (d > (depth - 1) ? (depth - 1) : d); - h = h < 0 ? 0 : ( h > (height - 1) ? (height - 1) : h); - w = w < 0 ? 0 : ( w > (width - 1) ? (width - 1) : w); - } - return ((d * height + h) * width + w) * 4; -} - - void MNNRoiPoolingMax(float* dst, const float* src, int hLen, int wLen, int iw) { Vec4 max = Vec4(-FLT_MAX); for (int h = 0; h < hLen; h++, src += iw * UNIT) { @@ -2231,71 +2237,6 @@ void MNNRoiAlignAvg(float* dst, const float* src, const std::vectorMNNQuantScale = MNNQuantScaleFP32; gCoreFunction->MNNQuantSum = MNNQuantSumFP32; #endif - + gCoreFunction->MNNCountMaxMinValue = MNNCountMaxMinValue; gCoreFunction->MNNGetSparseMatMulPackMode = MNNGetSparseMatMulPackMode; gCoreFunction->MNNAdjustOptimalSparseKernel = _MNNAdjustOptimalSparseKernel; diff --git a/source/backend/cpu/compute/CommonOptFunction.h b/source/backend/cpu/compute/CommonOptFunction.h index 9e67d37f7..55601ec39 100644 --- a/source/backend/cpu/compute/CommonOptFunction.h +++ b/source/backend/cpu/compute/CommonOptFunction.h @@ -91,7 +91,7 @@ void MNNHardSwishCommon(float* dst, const float* src, size_t size); void MNNGeluCommon(float* dst, const float* src, size_t size); void MNNGeluStandardCommon(float* dst, const float* src, size_t size); void MNNSoftmax(float* dest, const float* source, size_t size); -void MNNNorm(float* dest, const float* source, const float *gamma, const float *beta, float epsilon, size_t size); +void MNNNorm(float* dest, const float* source, const float *gamma, const float *beta, float epsilon, size_t size, bool RMSNorm = false); // Get Pack for MatMul's e , l , h , the pack number must be 1 or 4 * n void MNNGetMatMulPackMode(int* eP, int *lP, int* hP); @@ -205,6 +205,7 @@ struct CoreFunctions { void(*MNNPackedMatMulRemain_int8)(float* C, const float* A, const float* B, size_t eSize, const size_t* parameter, const float* postParameters, const float* bias, const float* k, const float* b); void(*MNNComputeMatMulForH_1)(const float* A, const float* B, float* C, const float* biasPtr, const MatMulParam* param, size_t tId); void(*MNNComputeMatMulForE_1)(const float* A, const float* B, float* C, const float* biasPtr, const MatMulParam* param, size_t tId); + void(*MNNCountMaxMinValue)(float* source, float* minVal, float* maxVal, size_t size); typedef void(*MNNPackedMatMulKernel)(float* C, const float* A, const float* B, const size_t* parameter, const float* postParameters, const float* bias); @@ -267,7 +268,7 @@ struct CoreFunctions { void (*MNNGridSampleInterpGrad)(float* outputPtr, float* inputPtr, const float* cordPtr, size_t inH, size_t inW, size_t outW, size_t channelCUnit, size_t inOffset, size_t outOffset, bool sampleMode, bool padMode); void(*MNNGridSampleComputeCord3D)(float* dst, const float* src, size_t inD, size_t inH, size_t inW, size_t outD, size_t outH, size_t outW, size_t stride1, size_t stride2, bool alignCorners); - void(*MNNGridSampleInterp3D)(float* outputPtr, const float* inputPtr, const float* cordPtr, size_t inD, size_t inH, size_t inW, size_t outW, size_t channelCUnit, size_t inOffset, size_t outOffset, bool sampleMode, bool padMode); + void(*MNNGridSampleInterp3D)(float* outputPtr, const float* inputPtr, const float* cordPtr, size_t inD, size_t inH, size_t inW, size_t outW, size_t channelCUnit, size_t inOffset, size_t outOffset, bool sampleMode, bool padMode) = nullptr; void(*MNNRoiPoolingMax)(float* dst, const float* src, int hLen, int wLen, int iw); void(*MNNRoiAlignMax)(float* dst, const float* src, const std::vector> &vecPos, const std::vector> &vecArea, int samplingRatioArea, int pooledHeight, int pooledWidth); void(*MNNRoiAlignAvg)(float* dst, const float* src, const std::vector> &vecPos, const std::vector> &vecArea, int samplingRatioArea, int pooledHeight, int pooledWidth); diff --git a/source/backend/cpu/compute/ConvInt8Winograd.cpp b/source/backend/cpu/compute/ConvInt8Winograd.cpp index 1591c3ac1..180320e58 100644 --- a/source/backend/cpu/compute/ConvInt8Winograd.cpp +++ b/source/backend/cpu/compute/ConvInt8Winograd.cpp @@ -193,9 +193,9 @@ ErrorCode ConvInt8Winograd::onResize(const std::vector &inputs, const } for (auto& unit : mUnits) { int sy = ALIMAX(unit.kyStart - mPadY, 0), sx = ALIMAX(unit.kxStart - mPadX, 0); - auto srcChunk = TensorUtils::getDescribe(input)->mem->chunk() + (sy * iw + sx) * UNIT; + auto srcChunk = TensorUtils::getDescribeOrigin(input)->mem->chunk() + (sy * iw + sx) * UNIT; unit.input.reset(Tensor::createDevice({batch, ic, ih - sy, iw - sx}, Tensor::CAFFE_C4)); - TensorUtils::getDescribe(unit.input.get())->mem.reset(new CPUMemObj(nullptr, srcChunk, 0)); + TensorUtils::getDescribeOrigin(unit.input.get())->mem = (new CPUMemObj(nullptr, srcChunk, 0)); for (int i = 0; i < input->dimensions(); ++i) { unit.input->setStride(i, input->stride(i)); } @@ -297,7 +297,7 @@ ErrorCode ConvInt8Winograd::onExecute(const std::vector &inputs, const core->MNNInt8ScaleToFloat(mInputFloat->host(), inputs[0]->host(), scale.data(), size / UNIT, inputQuant[1]); std::vector tmp_outputs; for (auto& unit : mUnits) { - unit.input->buffer().host = TensorUtils::getDescribe(unit.input.get())->mem->chunk().ptr(); + unit.input->buffer().host = TensorUtils::getDescribeOrigin(unit.input.get())->mem->chunk().ptr(); auto ret = unit.runner->onExecute({unit.input.get()}, {unit.output.get()}); if (ret != NO_ERROR) { return ret; diff --git a/source/backend/cpu/compute/Convolution1x1Strassen.cpp b/source/backend/cpu/compute/Convolution1x1Strassen.cpp index ba9d16852..deeec58e4 100644 --- a/source/backend/cpu/compute/Convolution1x1Strassen.cpp +++ b/source/backend/cpu/compute/Convolution1x1Strassen.cpp @@ -155,9 +155,9 @@ ErrorCode Convolution1x1Strassen::onResize(const std::vector &inputs, int l = ic; int h = oc; uint8_t* aPtr = nullptr; - auto bPtr = TensorUtils::getDescribe(weightTensor)->mem->chunk();; + auto bPtr = TensorUtils::getDescribeOrigin(weightTensor)->mem->chunk();; uint8_t* cPtr = nullptr; - auto biasPtr = TensorUtils::getDescribe(mResource->mBias.get())->mem->chunk(); + auto biasPtr = TensorUtils::getDescribeOrigin(mResource->mBias.get())->mem->chunk(); memoryPool->beginGroup(); auto code = unit.mStracssenComputor->onEncode(e, l, h, matrixSizeE * core->pack, UP_DIV(l, lPack) * lPack * hPack, matrixSizeE * core->pack, aPtr, bPtr, cPtr, true, biasPtr, postParameters); if (NO_ERROR != code) { @@ -199,9 +199,9 @@ ErrorCode Convolution1x1Strassen::onResize(const std::vector &inputs, int l = ic; int h = std::min(ocSize * core->pack, ocWeightSize * hPack); uint8_t* aPtr = nullptr; - auto bPtr = TensorUtils::getDescribe(mResource->mWeight.get())->mem->chunk() + hPack * icAlign * ocStartWeight * mWeightBytes; + auto bPtr = TensorUtils::getDescribeOrigin(mResource->mWeight.get())->mem->chunk() + hPack * icAlign * ocStartWeight * mWeightBytes; uint8_t* cPtr = nullptr; - auto biasPtr = TensorUtils::getDescribe(mResource->mBias.get())->mem->chunk() + core->pack * ocStart * bytes; + auto biasPtr = TensorUtils::getDescribeOrigin(mResource->mBias.get())->mem->chunk() + core->pack * ocStart * bytes; memoryPool->beginGroup(); auto code = unit.mStracssenComputor->onEncode(e, l, h, matrixSizeE * core->pack, UP_DIV(l, lPack) * lPack * hPack, matrixSizeE * core->pack, aPtr, bPtr, cPtr, true, biasPtr, postParameters); if (NO_ERROR != code) { diff --git a/source/backend/cpu/compute/ConvolutionFloatFactory.cpp b/source/backend/cpu/compute/ConvolutionFloatFactory.cpp index 9b0e741d4..5e85a184c 100644 --- a/source/backend/cpu/compute/ConvolutionFloatFactory.cpp +++ b/source/backend/cpu/compute/ConvolutionFloatFactory.cpp @@ -26,13 +26,8 @@ namespace MNN { static Execution* _createUnit(const Tensor* input, const Tensor* output, Backend* backend, - const Convolution2D* conv2d, const float* originWeight, size_t originWeightSize, const float* bias, size_t biasSize, std::shared_ptr weightQuantInfo, bool supportSparse) { + const Convolution2D* conv2d, const float* originWeight, size_t originWeightSize, const float* bias, size_t biasSize, std::shared_ptr weightQuantInfo, bool supportSparse, bool lowMemory) { auto cpuBackend = (CPUBackend*)backend; -#ifdef MNN_LOW_MEMORY - bool lowMemory = true; -#else - bool lowMemory = false; -#endif auto common = conv2d->common(); #ifdef MNN_USE_ONEDNN return OneDNN::createConvolution(common, backend, originWeight, originWeightSize, bias, biasSize); @@ -83,7 +78,7 @@ Execution* ConvolutionFloatFactory::create(const std::vector& inputs, c return new ConvolutionTiledExecutorMultiInput(conv2d->common(), backend); } #ifdef MNN_LOW_MEMORY - bool lowMemory = true; + bool lowMemory = static_cast(backend)->memoryMode() != BackendConfig::Memory_High; #else bool lowMemory = false; #endif @@ -126,14 +121,6 @@ Execution* ConvolutionFloatFactory::create(const std::vector& inputs, c // Back to float originWeight = quanCommon->weightFloat.get(); originWeightSize = quanCommon->weightFloat.size(); - } else if (USE_EXTERNAL_DATA(conv2d)) { - bool res = OpCommonUtils::loadConvData(backend, op, externalWeightTensor, externalBiasTensor, originWeightSize, originBiasSize); - if (!res) { - MNN_ERROR("%s load external weight or bias failed.", op->name()->c_str()); - return nullptr; - } - originWeight = externalWeightTensor->host(); - originBias = externalBiasTensor->host(); } else if (nullptr == conv2d->weight() || nullptr == conv2d->bias()) { MNN_ERROR("%s has no weight or bias. The model may be benchmark model, please revert the weight/bias firstly\n", op->name()->c_str()); return nullptr; @@ -155,7 +142,7 @@ Execution* ConvolutionFloatFactory::create(const std::vector& inputs, c MNN_ASSERT(group > 0); if (1 == group) { return _createUnit(inputs[0], outputs[0], backend, conv2d, originWeight, originWeightSize, - originBias, originBiasSize, quanCommon, supportSparse); + originBias, originBiasSize, quanCommon, supportSparse, lowMemory); } // TODO: Use Geometry to split // Split @@ -169,7 +156,7 @@ Execution* ConvolutionFloatFactory::create(const std::vector& inputs, c for (int i = 0; i < group; ++i) { auto newConvolution = _createUnit(emptyInput.get(), emptyOutput.get(), backend, conv2d, originWeight + groupWeightSize * i, - groupWeightSize, conv2d->bias()->data() + groupOutputCount * i, groupOutputCount, quanCommon, supportSparse); + groupWeightSize, conv2d->bias()->data() + groupOutputCount * i, groupOutputCount, quanCommon, supportSparse, lowMemory); subConvolution.push_back(std::shared_ptr(newConvolution)); } return new ConvolutionGroup(backend, subConvolution); diff --git a/source/backend/cpu/compute/ConvolutionHybrid.cpp b/source/backend/cpu/compute/ConvolutionHybrid.cpp index 4233e33bf..0c63ab728 100644 --- a/source/backend/cpu/compute/ConvolutionHybrid.cpp +++ b/source/backend/cpu/compute/ConvolutionHybrid.cpp @@ -86,7 +86,6 @@ bool ConvolutionHybrid::initQuantizeResource(std::shared_ptrmDequantize.bits = 4; - resource->mDequantize.mLowBitWeightMap = int8Info->weightMap; std::shared_ptr weightLow(Tensor::createDevice( {weightLength})); auto res = resource->backend->onAcquireBuffer(weightLow.get(), Backend::STATIC); diff --git a/source/backend/cpu/compute/ConvolutionPackWinograd.cpp b/source/backend/cpu/compute/ConvolutionPackWinograd.cpp index 7a59b869b..ecf1c0510 100644 --- a/source/backend/cpu/compute/ConvolutionPackWinograd.cpp +++ b/source/backend/cpu/compute/ConvolutionPackWinograd.cpp @@ -143,15 +143,20 @@ WinogradConfig ConvolutionPackWinograd::bestWinogradUnit(const Convolution2DComm auto core = static_cast(b)->functions(); + auto winogradMemoryLevel = static_cast(b)->getRuntime()->getWinogradMemoryLevel(); int ow = outputTensor->width(); int oh = outputTensor->height(); int oc = outputTensor->channel(); int ePack, hPack, lPack; core->MNNGetMatMulPackMode(&ePack, &lPack, &hPack); int unit2 = UP_DIV(ow * oh, threadNumber); + int maxUnit = (int)::sqrtf((float)unit2); maxUnit = std::min(maxUnit, CONVOLUTION_WINOGRAD_MAX_UNIT); maxUnit = std::max(maxUnit, CONVOLUTION_WINOGRAD_MIN_UNIT); + if (winogradMemoryLevel != 3) { + maxUnit = CONVOLUTION_WINOGRAD_MIN_UNIT; + } int ic = inputTensor->channel(); auto kernelSize = common->kernelY(); diff --git a/source/backend/cpu/compute/DenseConvolutionTiledExecutor.cpp b/source/backend/cpu/compute/DenseConvolutionTiledExecutor.cpp index b527167d1..40da39e3d 100644 --- a/source/backend/cpu/compute/DenseConvolutionTiledExecutor.cpp +++ b/source/backend/cpu/compute/DenseConvolutionTiledExecutor.cpp @@ -45,6 +45,7 @@ bool DenseConvolutionTiledExecutor::initQuantizeResource(std::shared_ptrmWeight->host(); auto srcWInt8 = int8Info->weight.get(); + ::memset(dstWInt8, 0, resource->mWeight->usize()); for (int y=0; ycanUseInt4) { + MNN_ASSERT(weightLength % 2 == 0); + weightLength = UP_DIV(weightLength, 2); + resource->mDequantize.bits = 4; + std::shared_ptr weightLow(Tensor::createDevice( + {weightLength})); + auto res = resource->backend->onAcquireBuffer(weightLow.get(), Backend::STATIC); + if (!res) { + return false; + } + auto srcPtr = resource->mWeight->host(); + auto dstPtr = weightLow->host(); + for (int i=0; imWeight = weightLow; + } auto alphaPtr = resource->mDequantize.mScaleBias->host(); auto biasPtr = reinterpret_cast(reinterpret_cast(alphaPtr) + hU * hP * bytes); ::memset(alphaPtr, 0, 2 * hU * hP * bytes); int h = int8Info->alpha.size(); if (bytes == 2) { auto core = static_cast(resource->backend)->functions(); + std::vector tmpAlpha(hU*hP*2, 0.0f); if (int8Info->asymmetric) { - std::unique_ptr tmp(new int16_t[h]); - core->MNNFp32ToLowp(int8Info->alpha.get(), tmp.get(), h); - for (int i=0; i< h/2; ++i) { - reinterpret_cast(alphaPtr)[i] = tmp[2 * i + 1]; - reinterpret_cast(biasPtr)[i] = tmp[2 * i]; + int hh = h / 2; + for (int i=0; ialpha.get()[2 * i + 1]; + tmpAlpha[i+hU*hP] = int8Info->alpha.get()[2 * i] + (float)originOffset * int8Info->alpha.get()[2 * i + 1]; } } else { - core->MNNFp32ToLowp(int8Info->alpha.get(), reinterpret_cast(alphaPtr), h); + for (int i=0; ialpha.get()[i]; + tmpAlpha[i+hU*hP] = (float)originOffset * int8Info->alpha.get()[i]; + } } + core->MNNFp32ToLowp(tmpAlpha.data(), reinterpret_cast(alphaPtr), hU*hP*2); } else { if (int8Info->asymmetric) { - h = h / 2; - for (int i=0; ialpha.get()[2 * i + 1]; - biasPtr[i] = int8Info->alpha.get()[2 * i]; + biasPtr[i] = int8Info->alpha.get()[2 * i] + (float)originOffset * alphaPtr[i]; } } else { for (int i=0; ialpha.get()[i]; - biasPtr[i] = 0.f; + biasPtr[i] = 0.f + (float)originOffset * alphaPtr[i]; } } } - if (int8Info->canUseInt4) { - MNN_ASSERT(weightLength % 2 == 0); - weightLength = UP_DIV(weightLength, 2); - resource->mDequantize.bits = 4; - resource->mDequantize.mLowBitWeightMap = int8Info->weightMap; - std::shared_ptr weightLow(Tensor::createDevice( - {weightLength})); - auto res = resource->backend->onAcquireBuffer(weightLow.get(), Backend::STATIC); - if (!res) { - return false; - } - auto srcPtr = resource->mWeight->host(); - auto dstPtr = weightLow->host(); - for (int i=0; imWeight = weightLow; - } return true; } diff --git a/source/backend/cpu/compute/Int8FunctionsOpt.cpp b/source/backend/cpu/compute/Int8FunctionsOpt.cpp index 73e399628..b8502ff40 100644 --- a/source/backend/cpu/compute/Int8FunctionsOpt.cpp +++ b/source/backend/cpu/compute/Int8FunctionsOpt.cpp @@ -142,7 +142,7 @@ static void _MNNPackC4Int8ForMatMul_ASparse(int8_t* destOrigin, int8_t const** s } } -void MNNNormInt8(int8_t* dst, const int8_t* src, const float* gamma, const float* beta, float epsilon, size_t size, QuanPrePostParameters* params) { +void MNNNormInt8(int8_t* dst, const int8_t* src, const float* gamma, const float* beta, float epsilon, size_t size, QuanPrePostParameters* params, bool RMSNorm) { #ifdef MNN_USE_SSE uint8_t* srcPtr = (uint8_t*)src; uint8_t* dstPtr = (uint8_t*)dst; @@ -159,11 +159,14 @@ void MNNNormInt8(int8_t* dst, const int8_t* src, const float* gamma, const float float sum = 0.f; int max_ = static_cast(params->maxValue); int min_ = static_cast(params->minValue); - for (int j = 0; j < size; ++j) { - float fx = (srcPtr[j] - inpZero - offset) * inpScale; - sum += fx; + float mean = 0; + if(false == RMSNorm){ + for (int j = 0; j < size; ++j) { + float fx = (srcPtr[j] - inpZero - offset) * inpScale; + sum += fx; + } + mean = sum / size; } - float mean = sum / size; float square_sum = 0.f; for (int j = 0; j < size; ++j) { float fx = (srcPtr[j] - inpZero - offset) * inpScale; @@ -1453,9 +1456,7 @@ static void MNNGemmInt8AddBiasScale_16x4_Unit(int8_t* dst, const int8_t* src, co for (int j = 0; j < GEMM_INT8_UNIT; ++j) { const auto weight_j = weight_sz + j * GEMM_INT8_SRC_UNIT; for (int i = 0; i < GEMM_INT8_SRC_UNIT; ++i) { -// if (j == 2) printf("%d, %d\n", (int32_t)src_z[i], (int32_t)weight_j[i]); dstTemp[j] += (int32_t)src_z[i] * (int32_t)weight_j[i]; -// if (j == 0) printf("%d\n", dstTemp[j]); } } } diff --git a/source/backend/cpu/compute/Int8FunctionsOpt.h b/source/backend/cpu/compute/Int8FunctionsOpt.h index 609f5826a..b23bd44b8 100644 --- a/source/backend/cpu/compute/Int8FunctionsOpt.h +++ b/source/backend/cpu/compute/Int8FunctionsOpt.h @@ -67,7 +67,7 @@ void MNNBinarySqdInt8(int8_t* outputRaw, const int8_t* inputRaw0, const int8_t* void MNNBinaryMaxInt8(int8_t* outputRaw, const int8_t* inputRaw0, const int8_t* inputRaw1, ssize_t* inputScalesInt32, float* inputScalesFp32, const QuanPrePostParameters* params, size_t elementSize, size_t needBroadcast); void MNNBinaryMinInt8(int8_t* outputRaw, const int8_t* inputRaw0, const int8_t* inputRaw1, ssize_t* inputScalesInt32, float* inputScalesFp32, const QuanPrePostParameters* params, size_t elementSize, size_t needBroadcast); void MNNScaleAndAddBiasInt8(int8_t* dst, const int8_t* src, const int32_t* bias, const int32_t* alpha, int32_t mShiftBits, ssize_t minValue, ssize_t maxValue, int8_t* inputZeroPoint, int8_t* outputZeroPoint, ssize_t planeNumber, ssize_t biasNumber, ssize_t pack = 4); -void MNNNormInt8(int8_t* dst, const int8_t* src, const float* gamma, const float* beta, float epsilon, size_t size, QuanPrePostParameters* params); +void MNNNormInt8(int8_t* dst, const int8_t* src, const float* gamma, const float* beta, float epsilon, size_t size, QuanPrePostParameters* params, bool RMSNorm = false); #ifdef __cplusplus } #endif @@ -103,7 +103,7 @@ struct CoreInt8Functions { void (*MNNAvgPoolInt8)(int8_t* dst, int8_t* src, size_t outputWidth, size_t inputWidth, size_t kernelx, size_t kernely, size_t stridesx, ssize_t paddingx, ssize_t factor); // Norm - void (*MNNNormInt8)(int8_t* dst, const int8_t* src, const float* gamma, const float* beta, float epsilon, size_t size, QuanPrePostParameters* params); + void (*MNNNormInt8)(int8_t* dst, const int8_t* src, const float* gamma, const float* beta, float epsilon, size_t size, QuanPrePostParameters* params, bool RMSNorm); // Relu void (*MNNReluWithSlopeChannelInt8)(int8_t* dst, const int8_t* src, const float* slope, size_t planeNumber, size_t depthQuad, QuanPrePostParameters *params); diff --git a/source/backend/cpu/compute/StrassenMatmulComputor.cpp b/source/backend/cpu/compute/StrassenMatmulComputor.cpp index c57717ad0..04407b60c 100644 --- a/source/backend/cpu/compute/StrassenMatmulComputor.cpp +++ b/source/backend/cpu/compute/StrassenMatmulComputor.cpp @@ -526,10 +526,10 @@ ErrorCode StrassenMatrixComputor::onEncode(const std::vector& inputs, c MemChunk bias; bool useBias = false; if (inputs.size() > 2) { - bias = TensorUtils::getDescribe(inputs[2])->mem->chunk(); + bias = TensorUtils::getDescribeOrigin(inputs[2])->mem->chunk(); useBias = true; } - return onEncode(e, l, h, as, bs, cs, TensorUtils::getDescribe(A)->mem->chunk(), TensorUtils::getDescribe(B)->mem->chunk(), TensorUtils::getDescribe(C)->mem->chunk(), useBias, bias, postParameters); + return onEncode(e, l, h, as, bs, cs, TensorUtils::getDescribeOrigin(A)->mem->chunk(), TensorUtils::getDescribeOrigin(B)->mem->chunk(), TensorUtils::getDescribeOrigin(C)->mem->chunk(), useBias, bias, postParameters); } ErrorCode StrassenMatrixComputor::onEncode(int e, int l, int h, int as, int bs, int cs, const MemChunk AT, const MemChunk BT, MemChunk CT, bool useBias, const MemChunk Bias, const std::vector& postParameters) { diff --git a/source/backend/cpu/x86_x64/AVX2Backend.cpp b/source/backend/cpu/x86_x64/AVX2Backend.cpp index 9cdf2efe4..167a5f984 100644 --- a/source/backend/cpu/x86_x64/AVX2Backend.cpp +++ b/source/backend/cpu/x86_x64/AVX2Backend.cpp @@ -331,7 +331,7 @@ Execution* AVX2Backend::onCreate(const std::vector& inputs, const std:: return nullptr; } } - bool originCreate = OpCommonUtils::opCompabilityForLowp(op); + bool originCreate = OpCommonUtils::opCompabilityForLowp(op, 4); if (originCreate || op->type() == OpType_Softmax || op->type() == OpType_Reduction || op->type() == OpType_ConvInt8 || op->type() == OpType_DepthwiseConvInt8 || op->type() == OpType_FloatToInt8 || op->type() == OpType_Int8ToFloat) { return CPUBackend::onCreate(inputs, outputs, op); } diff --git a/source/backend/cpu/x86_x64/AVX2Functions.cpp b/source/backend/cpu/x86_x64/AVX2Functions.cpp index d345d1f9d..0f1db20d4 100644 --- a/source/backend/cpu/x86_x64/AVX2Functions.cpp +++ b/source/backend/cpu/x86_x64/AVX2Functions.cpp @@ -46,11 +46,15 @@ bool AVX2Functions::init(int cpuFlags) { coreFunction->MNNPackedMatMulRemain_int8 = _AVX_MNNPackedMatMulRemain_int8; coreFunction->MNNGemmHybridInt4 = _AVX_MNNGemmHybridInt4; coreFunction->MNNGemmHybridInt8 = _AVX_MNNGemmHybridInt8; + coreFunction->MNNAbsMax = _AVX_MNNAbsMaxFP32; + coreFunction->MNNDynamicQuant = _AVX_MNNDynamicQuantFP32; #endif coreFunction->MNNPackC4ForMatMul_A = _AVX_MNNPackC4ForMatMul_A; coreFunction->MNNPackForMatMul_B = _AVX_MNNPackForMatMul_B; coreFunction->MNNComputeMatMulForE_1 = _AVX_MNNComputeMatMulForE_1; coreFunction->MNNComputeMatMulForH_1 = _AVX_MNNComputeMatMulForH_1; + // Dynamic Quant + coreFunction->MNNCountMaxMinValue = _AVX_MNNComputeScaleZeroScalar; // For Packed Functions coreFunction->pack = 8; diff --git a/source/backend/cpu/x86_x64/FunctionDispatcher.cpp b/source/backend/cpu/x86_x64/FunctionDispatcher.cpp index b63d5f596..044d0f0e3 100644 --- a/source/backend/cpu/x86_x64/FunctionDispatcher.cpp +++ b/source/backend/cpu/x86_x64/FunctionDispatcher.cpp @@ -33,7 +33,7 @@ struct FunctionGroup { void (*MNNReluInt8)(int8_t* dst, const int8_t* src, size_t size, ssize_t zeroPoint) = _SSE_MNNReluInt8; void (*MNNHardSwish)(float* dst, const float* src, size_t size) = _SSE_MNNHardSwish; void (*MNNGelu)(float* dst, const float* src, size_t size, float* parameters) = _SSE_MNNGelu; - void (*MNNNorm)(float *dst, const float *src, const float *gamma, const float *beta, float epsilon, size_t size) = _SSE_MNNNorm; + void (*MNNNorm)(float *dst, const float *src, const float *gamma, const float *beta, float epsilon, size_t size, bool RMSNorm) = _SSE_MNNNorm; }; static FunctionGroup gFunc; @@ -57,9 +57,13 @@ void MNNFunctionInit() { coreFunction->MNNPackedMatMulRemain_int8 = _SSE_MNNPackedMatMulRemain_int8; coreFunction->MNNGemmHybridInt4 = _SSE_MNNGemmHybridInt4; coreFunction->MNNGemmHybridInt8 = _SSE_MNNGemmHybridInt8; + coreFunction->MNNAbsMax = _SSE_MNNAbsMaxFP32; + coreFunction->MNNDynamicQuant = _SSE_MNNDynamicQuantFP32; #endif coreFunction->MNNPackC4ForMatMul_A = _SSE_MNNPackC4ForMatMul_A; coreFunction->MNNPackForMatMul_B = _SSE_MNNPackForMatMul_B; + // Dynamic Quant + coreFunction->MNNCountMaxMinValue = _SSE_MNNComputeScaleZeroScalar; } if (cpuFlags & libyuv::kCpuHasAVX2) { MNN::AVX2Functions::init(cpuFlags); @@ -193,6 +197,6 @@ void MNNSoftmax(float* dest, const float* source, size_t size) { gFunc.MNNSoftmax(dest, source, size); } -void MNNNorm(float* dest, const float* source, const float *gamma, const float *beta, float epsilon, size_t size) { - gFunc.MNNNorm(dest, source, gamma, beta, epsilon, size); +void MNNNorm(float* dest, const float* source, const float *gamma, const float *beta, float epsilon, size_t size, bool RMSNorm) { + gFunc.MNNNorm(dest, source, gamma, beta, epsilon, size, RMSNorm); } diff --git a/source/backend/cpu/x86_x64/avx/FunctionSummary.hpp b/source/backend/cpu/x86_x64/avx/FunctionSummary.hpp index e2614f9ad..5efad49af 100644 --- a/source/backend/cpu/x86_x64/avx/FunctionSummary.hpp +++ b/source/backend/cpu/x86_x64/avx/FunctionSummary.hpp @@ -50,6 +50,8 @@ void _AVX_MNNGemmHybridInt4(float* C, const int8_t* A, const int8_t* B, size_t s size_t dst_depth_quad, size_t realSize, const float** param); void _AVX_MNNGemmHybridInt8(float* C, const int8_t* A, const int8_t* B, size_t src_depth_quad, size_t dst_step, size_t dst_depth_quad, size_t realSize, const float** param); +void _AVX_MNNAbsMaxFP32(const float* source, float* absmax, size_t src_depth_quad, size_t realSize, int pack); +void _AVX_MNNDynamicQuantFP32(const float* src, int8_t* dst, const float* scale, float* sum, size_t src_depth_quad, size_t realSize, int pack); #endif void _AVX_MNNPackC4ForMatMul_A(float* destOrigin, float const** sourceGroup, const int32_t* info, const int32_t* el); @@ -60,6 +62,7 @@ void _AVX_MNNInt8ScaleToFloat(float* dst, const int8_t* src, const float* scale, void _AVX_MNNLineDepthWiseInt8AddBiasScaleUnit(int8_t* dstO, const int8_t* srcO, const int8_t* weightO, const QuanPostTreatParameters* parameters, size_t width, size_t src_w_step, size_t fw, size_t fh, size_t dilateX_step, size_t dilateY_step, int8_t* idxOrder); void _AVX_MNNComputeMatMulForE_1(const float* A, const float* B, float* C, const float* biasPtr, const MatMulParam* param, size_t tId); void _AVX_MNNPackC4ForMatMul_A_BF16(float* destOrigin, float const** sourceGroup, const int32_t* info, const int32_t* el); +void _AVX_MNNComputeScaleZeroScalar(float* source, float* minVal, float* maxVal, size_t size); void _AVX_MNNGetMatMulPackMode_BF16(int* eP, int *lP, int* hP); void _AVX_MNNPackForMatMul_B_BF16(float* dest, const float* source, size_t h, size_t l, bool transpose); @@ -78,8 +81,8 @@ void _AVX_ExtraInit(void* functions); void _AVX_WinogradInit(void* functions); void _AVX_MNNGelu(float *dst, const float *src, size_t size, float* parameters); -void _AVX_MNNNorm(float *dst, const float *src, const float *gamma, const float *beta, float epsilon, size_t size); -void _AVX_MNNNormInt8(int8_t* dst, const int8_t* src, const float* gamma, const float* beta, float epsilon, size_t size, QuanPrePostParameters* params); +void _AVX_MNNNorm(float *dst, const float *src, const float *gamma, const float *beta, float epsilon, size_t size, bool RMSNorm); +void _AVX_MNNNormInt8(int8_t* dst, const int8_t* src, const float* gamma, const float* beta, float epsilon, size_t size, QuanPrePostParameters* params, bool RMSNorm); void _AVX_MNNGetSparseMatMulPackMode(int* eP, int *lP, int* hP); void _AVX_MNNPackedSparseMatMulEpx1EFMA(float* C, const float* A, const float* B, size_t eSize, const size_t* parameter, const float* postParameters, const float* bias, unsigned int* NNZMap, int* dataOffsetMap); diff --git a/source/backend/cpu/x86_x64/avx/GemmAVX2.cpp b/source/backend/cpu/x86_x64/avx/GemmAVX2.cpp index cf92cc831..8a8407a47 100644 --- a/source/backend/cpu/x86_x64/avx/GemmAVX2.cpp +++ b/source/backend/cpu/x86_x64/avx/GemmAVX2.cpp @@ -204,6 +204,66 @@ void _AVX_MNNGemmHybridInt8(float* C, const int8_t* A, const int8_t* B, size_t s } } } + +void _AVX_MNNAbsMaxFP32(const float* source, float* absmax, size_t src_depth_quad, size_t realSize, int pack) { + // source: (ic/8, N, 8) + auto srcStep = pack * realSize; + auto constant = _mm256_castsi256_ps(_mm256_set1_epi32(0x7FFFFFFF)); + float temp[8]; + for (int i = 0; i < realSize; ++i) { + __m256 res = _mm256_setzero_ps(); + for (int c = 0; c < src_depth_quad; ++c) { + auto src0 = source + c * srcStep + i * pack; + __m256 vecA = _mm256_loadu_ps(src0); + __m256 absVecA = _mm256_and_ps(vecA, constant); + __m256 mask = _mm256_cmp_ps(absVecA, res, 1); + res = _mm256_blendv_ps(absVecA, res, mask); + } + _mm256_storeu_ps(temp, res); + float absmaxVal = temp[0]; + for (int k = 1; k < pack; ++k) { + if (absmaxVal < temp[k]) { + absmaxVal = temp[k]; + } + } + absmax[i] = absmaxVal; + } +} + +void _AVX_MNNDynamicQuantFP32(const float* src, int8_t* dst, const float* scale, float* sum, size_t src_depth_quad, size_t realSize, int pack) { + // AVX: pack=8 + __m256 zero = _mm256_setzero_ps(); + __m256 plus = _mm256_set1_ps(0.5f); + __m256 minus = _mm256_set1_ps(-0.5f); + auto offset = _mm256_set1_epi32(128); + uint8_t* dstPtr = reinterpret_cast(dst); + float temp[8]; + for (int i = 0; i < realSize; ++i) { + __m256 scaleVal = _mm256_set1_ps(scale[i]); + __m256 acc = _mm256_setzero_ps(); + for (int c = 0; c < src_depth_quad; ++c) { + auto srcZ = src + c * pack * realSize + i * pack; + auto dstZ = dstPtr + c * pack * realSize + i * pack; + __m256 f0 = _mm256_loadu_ps(srcZ); + __m256 m0 = _mm256_mul_ps(f0, scaleVal); + __m256 mask = _mm256_cmp_ps(m0, zero, 1); + __m256 d0 = _mm256_blendv_ps(plus, minus, mask); + d0 = _mm256_add_ps(d0, m0); + __m256 round0 = _mm256_round_ps(d0, 3); + auto d0_epi32 = _mm256_cvtps_epi32(round0); // int32x8 + auto d0_epi16 = _mm256_packs_epi32(d0_epi32, _mm256_castps_si256(_mm256_permute2f128_ps(_mm256_castsi256_ps(d0_epi32), _mm256_castsi256_ps(d0_epi32), 1))); + // d0_epi32 = _mm256_packs_epi32(d0_epi32, d0_epi32); // int16x8 + d0_epi32 = _mm256_packs_epi16(d0_epi16, d0_epi16); // int8x8 + auto D0 = _mm_castsi128_ps(_mm256_extracti128_si256(d0_epi32, 0)); + _mm_storeu_ps(temp, D0); + ::memcpy(dstZ, temp, pack * sizeof(int8_t)); + acc = _mm256_add_ps(acc, round0); + } + _mm256_storeu_ps(temp, acc); + int sumVal = static_cast(temp[0] + temp[1] + temp[2] + temp[3] + temp[4] + temp[5] + temp[6] + temp[7]); + ((int32_t*)sum)[i] = sumVal; + } +} #endif void _AVX_MNNComputeMatMulForE_1(const float* A, const float* B, float* C, const float* biasPtr, const MatMulParam* param, size_t tId) { @@ -409,3 +469,4 @@ void _AVX_MNNComputeMatMulForH_1(const float* A, const float* B, float* C, const C[y] = sumSingle; } } + diff --git a/source/backend/cpu/x86_x64/avx/GemmCommon.cpp b/source/backend/cpu/x86_x64/avx/GemmCommon.cpp index 3cb918123..0753e7f8d 100644 --- a/source/backend/cpu/x86_x64/avx/GemmCommon.cpp +++ b/source/backend/cpu/x86_x64/avx/GemmCommon.cpp @@ -417,3 +417,39 @@ void _AVX_MNNPackedSparseMatMul(float* C, const float* A, const float* B, unsign MNN_ASSERT(false); return; } + +void _AVX_MNNComputeScaleZeroScalar(float* source, float* min, float* max, size_t size) { + int pack = 8; + int sizeDiv8 = UP_DIV(size, pack); + __m256 minVal = _mm256_loadu_ps(source); + __m256 maxVal = minVal; + float maxArr[8], minArr[8]; + for (int i = 1; i < sizeDiv8; ++i) { + auto src0 = source + pack * i; + __m256 vecA = _mm256_loadu_ps(src0); + __m256 maskMax = _mm256_cmp_ps(vecA, maxVal, 14); + __m256 maskMin = _mm256_cmp_ps(vecA, minVal, 1); + maxVal = _mm256_blendv_ps(maxVal, vecA, maskMax); + minVal = _mm256_blendv_ps(minVal, vecA, maskMin); + } + + _mm256_storeu_ps(maxArr, maxVal); + _mm256_storeu_ps(minArr, minVal); + float max_ = maxArr[0], min_ = minArr[0]; + for (int k = 1; k < pack; ++k) { + if (max_ < maxArr[k]) { + max_ = maxArr[k]; + } + if (min_ > minArr[k]) { + min_ = minArr[k]; + } + } + min[0] = min_; + max[0] = max_; + // float range = max_ - min_; + // MNN_ASSERT(range != 0); + // *quantScale = 255.0f / range; + // *dequantScale = range / 255.0f; + // *zeroPoint = std::min(255.f, std::max(roundf(-(min_ * 255.f) / range), 0.f)) - 128.f; + +} diff --git a/source/backend/cpu/x86_x64/avx/GemmFunction.hpp b/source/backend/cpu/x86_x64/avx/GemmFunction.hpp index 7c255c095..08dfdfef9 100644 --- a/source/backend/cpu/x86_x64/avx/GemmFunction.hpp +++ b/source/backend/cpu/x86_x64/avx/GemmFunction.hpp @@ -832,7 +832,6 @@ static inline __m128 _load_int4x4(const uint8_t* src, __m128 alpha, __m128 bias) int iw2 = iw23 / 16; int iw3 = iw23 % 16; auto ws = _mm_set_ps(iw3, iw2, iw1, iw0); - ws = _mm_sub_ps(ws, _mm_set1_ps(8)); ws = _mm_add_ps(_mm_mul_ps(ws, alpha), bias); return ws; } @@ -843,8 +842,8 @@ static inline __m256 _load_int4x8(const uint8_t* src, __m256 alpha, __m256 bias) int x = src[i]; int a = x / 16; int b = x % 16; - w[i * 2] = a - 8; - w[i * 2 + 1] = b - 8; + w[i * 2] = a; + w[i * 2 + 1] = b; } auto w8 = LOAD8(w); return _mm256_add_ps(_mm256_mul_ps(w8, alpha), bias); @@ -2174,7 +2173,7 @@ static void _AVX_MNNPackedMatMul_int8_3(TYPE* C, const TYPE* A, const int8_t* B, } for (int y = hR; y < hC4; ++y) { - auto weight = B + y * bStride / 2; + auto weight = B + y * bStride; auto dst = C + (y / 2) * cStride + 4 * (y % 2); auto alpha = _mm_loadu_ps(k + y * 4); auto bias = _mm_loadu_ps(b + y * 4); diff --git a/source/backend/cpu/x86_x64/avx/MathFunctions.cpp b/source/backend/cpu/x86_x64/avx/MathFunctions.cpp index 816f123c4..7ada7603e 100644 --- a/source/backend/cpu/x86_x64/avx/MathFunctions.cpp +++ b/source/backend/cpu/x86_x64/avx/MathFunctions.cpp @@ -204,27 +204,30 @@ void _AVX_MNNSoftmax(float* dest, const float* source, size_t size) { } } -void _AVX_MNNNorm(float *dst, const float *src, const float *gamma, const float *beta, float epsilon, size_t size) { +void _AVX_MNNNorm(float *dst, const float *src, const float *gamma, const float *beta, float epsilon, size_t size, bool RMSNorm) { float tmpfloat8[8]; int count = static_cast(size / 8); int remain = count * 8; // step 1: get sum - float sum = 0.f; - if (count > 0) { - auto sumVal = _mm256_set1_ps(0.f); - for (int i = 0; i < count; i++) { - sumVal = _mm256_add_ps(sumVal, _mm256_loadu_ps(src + i * 8)); + float mean = 0; + if(!RMSNorm){ + float sum = 0.f; + if (count > 0) { + auto sumVal = _mm256_set1_ps(0.f); + for (int i = 0; i < count; i++) { + sumVal = _mm256_add_ps(sumVal, _mm256_loadu_ps(src + i * 8)); + } + _mm256_storeu_ps(tmpfloat8, sumVal); + for (int i = 0; i < 8; i++) { + sum += tmpfloat8[i]; + } } - _mm256_storeu_ps(tmpfloat8, sumVal); - for (int i = 0; i < 8; i++) { - sum += tmpfloat8[i]; + for (int i = remain; i < size; i++) { + sum += src[i]; } - } - for (int i = remain; i < size; i++) { - sum += src[i]; + mean = sum / size; } // step 2: get square_sum - float mean = sum / size; float square_sum = 0.f; auto meanVal = _mm256_set1_ps(mean); if (count > 0) { @@ -269,7 +272,7 @@ void _AVX_MNNNorm(float *dst, const float *src, const float *gamma, const float } } -void _AVX_MNNNormInt8(int8_t* dst, const int8_t* src, const float* gamma, const float* beta, float epsilon, size_t size, QuanPrePostParameters* params) { +void _AVX_MNNNormInt8(int8_t* dst, const int8_t* src, const float* gamma, const float* beta, float epsilon, size_t size, QuanPrePostParameters* params, bool RMSNorm) { float tmpfloat8[8]; int count = static_cast(size / 8); int remain = count * 8; @@ -281,23 +284,26 @@ void _AVX_MNNNormInt8(int8_t* dst, const int8_t* src, const float* gamma, const float* dstf = outf.data(); // step 0: Int8 -> Float _AVX_MNNInt8ScaleToFloat(inpf.data(), src, inpScale.data(), size / 4, params->inputZeroPoint[0]); + float mean = 0; // step 1: get sum - float sum = 0.f; - if (count > 0) { - auto sumVal = _mm256_set1_ps(0.f); - for (int i = 0; i < count; i++) { - sumVal = _mm256_add_ps(sumVal, _mm256_loadu_ps(srcf + i * 8)); + if(!RMSNorm){ + float sum = 0.f; + if (count > 0) { + auto sumVal = _mm256_set1_ps(0.f); + for (int i = 0; i < count; i++) { + sumVal = _mm256_add_ps(sumVal, _mm256_loadu_ps(srcf + i * 8)); + } + _mm256_storeu_ps(tmpfloat8, sumVal); + for (int i = 0; i < 8; i++) { + sum += tmpfloat8[i]; + } } - _mm256_storeu_ps(tmpfloat8, sumVal); - for (int i = 0; i < 8; i++) { - sum += tmpfloat8[i]; + for (int i = remain; i < size; i++) { + sum += srcf[i]; } - } - for (int i = remain; i < size; i++) { - sum += srcf[i]; + mean = sum / size; } // step 2: get square_sum - float mean = sum / size; float square_sum = 0.f; auto meanVal = _mm256_set1_ps(mean); if (count > 0) { @@ -342,4 +348,4 @@ void _AVX_MNNNormInt8(int8_t* dst, const int8_t* src, const float* gamma, const } // step 4: Float -> Int8 _AVX_MNNFloat2Int8(dstf, dst, size / 4, outScale.data(), params->minValue, params->maxValue, params->outputZeroPoint[0]); -} \ No newline at end of file +} diff --git a/source/backend/cpu/x86_x64/avx512/FunctionSummary.hpp b/source/backend/cpu/x86_x64/avx512/FunctionSummary.hpp index b7e776da3..9c6968840 100644 --- a/source/backend/cpu/x86_x64/avx512/FunctionSummary.hpp +++ b/source/backend/cpu/x86_x64/avx512/FunctionSummary.hpp @@ -50,7 +50,6 @@ void _AVX512_MNNPackedSparseMatMulEpx1(float* C, const float* A, const float* B, const float* postParameters, const float* bias, unsigned int* NNZMap, int* dataOffsetMap); - void _AVX512_ReorderInit(void* functions); void _AVX512_ExtraInit(void* functions); void _AVX512_WinogradInit(void* functions); diff --git a/source/backend/cpu/x86_x64/avx512/GemmInt8.cpp b/source/backend/cpu/x86_x64/avx512/GemmInt8.cpp index 9a3b6d137..1dc73cbab 100644 --- a/source/backend/cpu/x86_x64/avx512/GemmInt8.cpp +++ b/source/backend/cpu/x86_x64/avx512/GemmInt8.cpp @@ -201,53 +201,32 @@ void _AVX512_MNNLineDepthWiseInt8AddBiasScaleUnit(int8_t* dstO, const int8_t* sr } } void _AVX512_MNNFloat2Int8(const float* src, int8_t* dst, size_t sizeQuad, const float* scalep, ssize_t minV, ssize_t maxV, ssize_t zeroPoint) { - auto zero = _mm256_set1_epi32(0); - auto minValue = _mm256_set1_ps(minV); - auto maxValue = _mm256_set1_ps(maxV); - auto zeroPointValue = _mm256_set1_ps(zeroPoint); - auto offset = _mm256_set1_epi32(128); - auto plus = _mm256_set1_ps(0.5f); - auto minus = _mm256_set1_ps(-0.5f); - auto scaleValue0 = _mm256_loadu_ps(scalep); - auto scaleValue1 = _mm256_loadu_ps(scalep + 8); + auto zero = _mm512_setzero_ps(); + auto minValue = _mm512_set1_ps(minV); + auto maxValue = _mm512_set1_ps(maxV); + auto zeroPointValue = _mm512_set1_ps(zeroPoint); + auto offset = _mm512_set1_ps(128.f); + auto plus = _mm512_set1_ps(0.5f); + auto minus = _mm512_set1_ps(-0.5f); + auto scaleValue0 = _mm512_loadu_ps(scalep); for (int i = 0; i < sizeQuad; ++i) { - auto f0 = _mm256_loadu_ps(src + PACK_UNIT * i); - auto f1 = _mm256_loadu_ps(src + PACK_UNIT * i + 8); - f0 = _mm256_mul_ps(f0, scaleValue0); - f1 = _mm256_mul_ps(f1, scaleValue1); - f0 = _mm256_add_ps(f0, zeroPointValue); - f1 = _mm256_add_ps(f1, zeroPointValue); - f0 = _mm256_min_ps(f0, maxValue); - f1 = _mm256_min_ps(f1, maxValue); - f0 = _mm256_max_ps(f0, minValue); - f1 = _mm256_max_ps(f1, minValue); - auto m0 = _mm256_cmp_ps(f0, _mm256_castsi256_ps(zero), 1); - auto m1 = _mm256_cmp_ps(f1, _mm256_castsi256_ps(zero), 1); - m0 = _mm256_blendv_ps(plus, minus, m0); - m1 = _mm256_blendv_ps(plus, minus, m1); - f0 = _mm256_add_ps(f0, m0); - f1 = _mm256_add_ps(f1, m1); - // 3: _MM_FROUND_TO_ZERO - auto d0 = _mm256_cvtps_epi32(_mm256_round_ps(f0, 3)); - auto d1 = _mm256_cvtps_epi32(_mm256_round_ps(f1, 3)); - d0 = _mm256_add_epi32(d0, offset); - d1 = _mm256_add_epi32(d1, offset); - d0 = _mm256_packs_epi32(d0, _mm256_setzero_si256()); - d1 = _mm256_packs_epi32(d1, _mm256_setzero_si256()); - d0 = _mm256_permute4x64_epi64(d0, 0xD8); - d1 = _mm256_permute4x64_epi64(d1, 0xD8); -#if defined(_MSC_VER) - __m256i x = static_cast<__m256i>(_mm256_packus_epi16(d0, _mm256_setzero_si256())); - __m256i y = static_cast<__m256i>(_mm256_packus_epi16(d1, _mm256_setzero_si256())); - *((int64_t*)dst + 2 * i + 0) = x.m256i_i64[0]; - *((int64_t*)dst + 2 * i + 1) = y.m256i_i64[0]; -#else - __v4di x = static_cast<__v4di>(_mm256_packus_epi16(d0, _mm256_setzero_si256())); - __v4di y = static_cast<__v4di>(_mm256_packus_epi16(d1, _mm256_setzero_si256())); - *((int64_t*)dst + 2 * i + 0) = x[0]; - *((int64_t*)dst + 2 * i + 1) = y[0]; -#endif + auto f0 = _mm512_loadu_ps(src + PACK_UNIT * i); + f0 = _mm512_mul_ps(f0, scaleValue0); + f0 = _mm512_add_ps(f0, zeroPointValue); + f0 = _mm512_min_ps(f0, maxValue); + f0 = _mm512_max_ps(f0, minValue); + auto m0 = _mm512_cmp_ps_mask(f0, zero, 1); + auto r0 = _mm512_mask_blend_ps(m0, plus, minus); + f0 = _mm512_add_ps(f0, r0); + __m512 round0 = _mm512_roundscale_ps(f0, 3); + round0 = _mm512_add_ps(round0, offset); + auto i0_int32 = _mm512_cvtps_epi32(round0); + auto i0_int16 = _mm512_cvtsepi32_epi16(i0_int32); + auto h0_int16 = _mm256_extracti128_si256(i0_int16, 0); + auto h1_int16 = _mm256_extracti128_si256(i0_int16, 1); + h0_int16 = _mm_packus_epi16(h0_int16, h1_int16); + _mm_storeu_si128((__m128i*)(dst + i * PACK_UNIT), h0_int16); } } diff --git a/source/backend/cpu/x86_x64/avx512/PackedFunction.cpp b/source/backend/cpu/x86_x64/avx512/PackedFunction.cpp index 634d7b4a8..6dbc438d7 100644 --- a/source/backend/cpu/x86_x64/avx512/PackedFunction.cpp +++ b/source/backend/cpu/x86_x64/avx512/PackedFunction.cpp @@ -37,6 +37,41 @@ void _AVX512_MNNAddC4WithStride(const float* source, float* dest, size_t srcStri } } +void _AVX512_MNNComputeScaleZeroScalar(float* source, float* min, float* max, size_t size) { + int pack = 16; + int sizeDiv16 = UP_DIV(size, pack); + __m512 minVal = _mm512_loadu_ps(source); + __m512 maxVal = minVal; + float maxArr[16], minArr[16]; + for (int i = 1; i < sizeDiv16; ++i) { + auto src0 = source + pack * i; + __m512 vecA = _mm512_loadu_ps(src0); + auto maskMax = _mm512_cmp_ps_mask(vecA, maxVal, 14); + auto maskMin = _mm512_cmp_ps_mask(vecA, minVal, 1); + maxVal = _mm512_mask_blend_ps(maskMax, maxVal, vecA); + minVal = _mm512_mask_blend_ps(maskMin, minVal, vecA); + } + _mm512_storeu_ps(maxArr, maxVal); + _mm512_storeu_ps(minArr, minVal); + float max_ = maxArr[0], min_ = minArr[0]; + for (int k = 1; k < pack; ++k) { + if (max_ < maxArr[k]) { + max_ = maxArr[k]; + } + if (min_ > minArr[k]) { + min_ = minArr[k]; + } + } + min[0] = min_; + max[0] = max_; + // float range = max_ - min_; + // MNN_ASSERT(range != 0); + // *quantScale = 255.0f / range; + // *dequantScale = range / 255.0f; + // *zeroPoint = std::min(255.f, std::max(roundf(-(min_ * 255.f) / range), 0.f)) - 128.f; + +} + void _AVX512_MNNReluWithSlopeChannel(float* dst, const float* src, const float* slope, size_t sizeQuad, size_t depthQuad) { auto zero = _mm_set1_ps(0.0f); auto zero2 = _mm512_set1_ps(0.0f); @@ -701,6 +736,7 @@ void _AVX512_ExtraInit(void* functions) { coreFunction->MNNScaleAndAddBias = _AVX512_MNNScaleAndAddBias; coreFunction->MNNMatrixAdd = _AVX512_MNNMatrixAdd; coreFunction->MNNMatrixSub = _AVX512_MNNMatrixSub; + coreFunction->MNNCountMaxMinValue = _AVX512_MNNComputeScaleZeroScalar; coreFunction->MNNConvRunForUnitDepthWise = _AVX512_MNNConvRunForUnitDepthWise; coreFunction->MNNConvRunForLineDepthwise = _AVX512_MNNConvRunForLineDepthwise; diff --git a/source/backend/cpu/x86_x64/sse/FunctionSummary.hpp b/source/backend/cpu/x86_x64/sse/FunctionSummary.hpp index 509955c0b..7225618d8 100644 --- a/source/backend/cpu/x86_x64/sse/FunctionSummary.hpp +++ b/source/backend/cpu/x86_x64/sse/FunctionSummary.hpp @@ -63,6 +63,8 @@ void _SSE_MNNGemmHybridInt4(float* C, const int8_t* A, const int8_t* B, size_t s size_t dst_depth_quad, size_t realSize, const float** param); void _SSE_MNNGemmHybridInt8(float* C, const int8_t* A, const int8_t* B, size_t src_depth_quad, size_t dst_step, size_t dst_depth_quad, size_t realSize, const float** param); +void _SSE_MNNAbsMaxFP32(const float* source, float* absmax, size_t src_depth_quad, size_t realSize, int pack); +void _SSE_MNNDynamicQuantFP32(const float* src, int8_t* dst, const float* scale, float* sum, size_t src_depth_quad, size_t realSize, int pack); #endif void _SSE_MNNPackC4ForMatMul_A(float* destOrigin, float const** sourceGroup, const int32_t* info, const int32_t* el); void _SSE_MNNConvRunForLineDepthwise(float* dst, const float* src, const float* weight, size_t width, size_t src_w_setup, @@ -82,9 +84,9 @@ void _SSE_MNNPackForMatMul_B_BF16(float* dest, const float* source, size_t h, si void _SSE_MNNReluInt8(int8_t* dst, const int8_t* src, size_t size, ssize_t zeroPoint); void _SSE_MNNSoftmax(float* dest, const float* source, size_t size); void _SSE_ExtraInit(void* functions); -void _SSE_MNNNorm(float *dst, const float *src, const float *gamma, const float *beta, float epsilon, size_t size); +void _SSE_MNNNorm(float *dst, const float *src, const float *gamma, const float *beta, float epsilon, size_t size, bool RMSNorm); void _SSE_ImageProcessInit(void* functions, int cpuFlags); -void _SSE_MNNNormInt8(int8_t* dst, const int8_t* src, const float* gamma, const float* beta, float epsilon, size_t size, QuanPrePostParameters* params); +void _SSE_MNNNormInt8(int8_t* dst, const int8_t* src, const float* gamma, const float* beta, float epsilon, size_t size, QuanPrePostParameters* params, bool RMSNorm); /* Image process functions */ void _SSE_MNNRGBAToBGRA(const unsigned char* source, unsigned char* dest, size_t count); @@ -103,3 +105,6 @@ void _SSE_MNNSampleC4Bilinear(const unsigned char* source, unsigned char* dest, size_t count, size_t capacity, size_t iw, size_t ih, size_t yStride); void _SSE_MNNSampleBilinear(const unsigned char* source, unsigned char* dest, MNN::CV::Point* points, size_t count, size_t iw, size_t ih, size_t yStride, size_t bpp); + +// Dynamic Quant +void _SSE_MNNComputeScaleZeroScalar(float* source, float* minVal, float* maxVal, size_t size); \ No newline at end of file diff --git a/source/backend/cpu/x86_x64/sse/GemmCommon.cpp b/source/backend/cpu/x86_x64/sse/GemmCommon.cpp index d3f97d2d0..53e21f0c7 100644 --- a/source/backend/cpu/x86_x64/sse/GemmCommon.cpp +++ b/source/backend/cpu/x86_x64/sse/GemmCommon.cpp @@ -182,3 +182,39 @@ void _SSE_MNNPackedSparseMatMul(float* C, const float* A, const float* B, unsign MNN_ASSERT(false); return; } + +void _SSE_MNNComputeScaleZeroScalar(float* source, float* min, float* max, size_t size) { + int pack = 4; + int sizeDiv4 = UP_DIV(size, pack); + __m128 minVal = _mm_loadu_ps(source); + __m128 maxVal = minVal; + float maxArr[4], minArr[4]; + for (int i = 1; i < sizeDiv4; ++i) { + auto src0 = source + pack * i; + __m128 vecA = _mm_loadu_ps(src0); + __m128 maskMax = _mm_cmpgt_ps(maxVal, vecA); + __m128 maskMin = _mm_cmplt_ps(minVal, vecA); + maxVal = _mm_blendv_ps(vecA, maxVal, maskMax); + minVal = _mm_blendv_ps(vecA, minVal, maskMin); + } + _mm_storeu_ps(maxArr, maxVal); + _mm_storeu_ps(minArr, minVal); + float max_ = maxArr[0], min_ = minArr[0]; + for (int k = 1; k < 4; ++k) { + if (max_ < maxArr[k]) { + max_ = maxArr[k]; + } + if (min_ > minArr[k]) { + min_ = minArr[k]; + } + } + min[0] = min_; + max[0] = max_; + // float range = max_ - min_; + // MNN_ASSERT(range != 0); + // *quantScale = 255.0f / range; + // *dequantScale = range / 255.0f; + // *zeroPoint = std::min(255.f, std::max(roundf(-(min_ * 255.f) / range), 0.f)) - 128.0f; + +} + diff --git a/source/backend/cpu/x86_x64/sse/GemmFunction.hpp b/source/backend/cpu/x86_x64/sse/GemmFunction.hpp index 538f2775b..5c94843b0 100644 --- a/source/backend/cpu/x86_x64/sse/GemmFunction.hpp +++ b/source/backend/cpu/x86_x64/sse/GemmFunction.hpp @@ -213,7 +213,6 @@ static inline __m128 _load_int4x4(const uint8_t* src, __m128 alpha, __m128 bias) int iw2 = iw23 / 16; int iw3 = iw23 % 16; auto ws = _mm_set_ps(iw3, iw2, iw1, iw0); - ws = _mm_sub_ps(ws, _mm_set1_ps(8)); ws = _mm_add_ps(_mm_mul_ps(ws, alpha), bias); return ws; } diff --git a/source/backend/cpu/x86_x64/sse/GemmSSE.cpp b/source/backend/cpu/x86_x64/sse/GemmSSE.cpp index 5fa53793e..accd3f8dd 100644 --- a/source/backend/cpu/x86_x64/sse/GemmSSE.cpp +++ b/source/backend/cpu/x86_x64/sse/GemmSSE.cpp @@ -65,4 +65,62 @@ void _SSE_MNNGemmHybridInt4(float* C, const int8_t* A, const int8_t* B, size_t s void _SSE_MNNGemmHybridInt8(float* C, const int8_t* A, const int8_t* B, size_t src_depth_quad, size_t dst_step, size_t dst_depth_quad, size_t realSize, const float** param) { _SSE_MNNGemmHybrid_int8(C, A, B, src_depth_quad, dst_step, dst_depth_quad, realSize, param); } +// Dynamic quant +void _SSE_MNNAbsMaxFP32(const float* source, float* absmax, size_t src_depth_quad, size_t realSize, int pack) { + // source: (ic/4, N, 4) + auto srcStep = pack * realSize; + auto constant = _mm_castsi128_ps(_mm_set1_epi32(0x7FFFFFFF)); + float temp[4]; + for (int i = 0; i < realSize; ++i) { + __m128 res = _mm_setzero_ps(); + for (int c = 0; c < src_depth_quad; ++c) { + auto src0 = source + c * srcStep + i * pack; + __m128 vecA = _mm_loadu_ps(src0); + __m128 absVecA = _mm_and_ps(vecA, constant); + __m128 mask = _mm_cmpgt_ps(res, absVecA); + res = _mm_blendv_ps(absVecA, res, mask); + + } + _mm_storeu_ps(temp, res); + float absmaxVal = temp[0]; + for (int k = 1; k < pack; ++k) { + if (absmaxVal < temp[k]) { + absmaxVal = temp[k]; + } + } + absmax[i] = absmaxVal; + } +} + +void _SSE_MNNDynamicQuantFP32(const float* src, int8_t* dst, const float* scale, float* sum, size_t src_depth_quad, size_t realSize, int pack) { + // SSE: pack=4 + __m128 zero = _mm_setzero_ps(); + __m128 plus = _mm_set1_ps(0.5f); + __m128 minus = _mm_set1_ps(-0.5f); + auto offset = _mm_set1_epi32(128); + uint8_t* dstPtr = reinterpret_cast(dst); + float temp[4]; + for (int i = 0; i < realSize; ++i) { + __m128 scaleVal = _mm_load_ps1(scale + i); + __m128 acc = _mm_setzero_ps(); + for (int c = 0; c < src_depth_quad; ++c) { + auto srcZ = src + c * pack * realSize + i * pack; + auto dstZ = dstPtr + c * pack * realSize + i * pack; + __m128 f0 = _mm_loadu_ps(srcZ); + __m128 m0 = _mm_mul_ps(f0, scaleVal); + __m128 mask = _mm_cmplt_ps(m0, zero); + __m128 d0 = _mm_blendv_ps(plus, minus, mask); + d0 = _mm_add_ps(d0, m0); + __m128 round0 = _mm_round_ps(d0, 3); + auto d0_epi32 = _mm_cvtps_epi32(round0); + d0_epi32 = _mm_packs_epi32(d0_epi32, d0_epi32); + d0_epi32 = _mm_packs_epi16(d0_epi32, d0_epi32); + *((int*)dstZ) = _mm_cvtsi128_si32(d0_epi32); + acc = _mm_add_ps(acc, round0); + } + _mm_storeu_ps(temp, acc); + int sumVal = static_cast(temp[0] + temp[1] + temp[2] + temp[3]); + ((int32_t*)sum)[i] = sumVal; + } +} #endif diff --git a/source/backend/cpu/x86_x64/sse/MathFunctions.cpp b/source/backend/cpu/x86_x64/sse/MathFunctions.cpp index 3af6c1a0d..26381b16b 100644 --- a/source/backend/cpu/x86_x64/sse/MathFunctions.cpp +++ b/source/backend/cpu/x86_x64/sse/MathFunctions.cpp @@ -214,25 +214,28 @@ void _SSE_MNNHardSwish(float* dst, const float* src, size_t size) { } } -void _SSE_MNNNorm(float *dst, const float *src, const float *gamma, const float *beta, float epsilon, size_t size) { +void _SSE_MNNNorm(float *dst, const float *src, const float *gamma, const float *beta, float epsilon, size_t size, bool RMSNorm) { float tmpfloat4[4]; int count = static_cast(size / 4); int remain = count * 4; - // step 1: get sum - float sum = 0.f; - if (count > 0) { - auto sumVal = _mm_set1_ps(0.f); - for (int i = 0; i < count; i++) { - sumVal = _mm_add_ps(sumVal, _mm_loadu_ps(src + i * 4)); + float mean = 0; + if(!RMSNorm){ + // step 1: get sum + float sum = 0.f; + if (count > 0) { + auto sumVal = _mm_set1_ps(0.f); + for (int i = 0; i < count; i++) { + sumVal = _mm_add_ps(sumVal, _mm_loadu_ps(src + i * 4)); + } + _mm_storeu_ps(tmpfloat4, sumVal); + sum += (tmpfloat4[0] + tmpfloat4[1] + tmpfloat4[2] + tmpfloat4[3]); } - _mm_storeu_ps(tmpfloat4, sumVal); - sum += (tmpfloat4[0] + tmpfloat4[1] + tmpfloat4[2] + tmpfloat4[3]); - } - for (int i = remain; i < size; i++) { - sum += src[i]; + for (int i = remain; i < size; i++) { + sum += src[i]; + } + mean = sum / size; } // step 2: get square_sum - float mean = sum / size; float square_sum = 0.f; auto meanVal = _mm_set1_ps(mean); if (count > 0) { @@ -274,7 +277,7 @@ void _SSE_MNNNorm(float *dst, const float *src, const float *gamma, const float } } } -void _SSE_MNNNormInt8(int8_t* dst, const int8_t* src, const float* gamma, const float* beta, float epsilon, size_t size, QuanPrePostParameters* params) { +void _SSE_MNNNormInt8(int8_t* dst, const int8_t* src, const float* gamma, const float* beta, float epsilon, size_t size, QuanPrePostParameters* params, bool RMSNorm) { float tmpfloat4[4]; int count = static_cast(size / 4); int remain = count * 4; @@ -287,20 +290,23 @@ void _SSE_MNNNormInt8(int8_t* dst, const int8_t* src, const float* gamma, const float* dstf = outf.data(); // step 0: Int8 -> Float _SSE_MNNInt8ScaleToFloat(inpf.data(), src, inpScale.data(), size / 4, params->inputZeroPoint[0]); - // step 1: get sum - if (count > 0) { - auto sumVal = _mm_set1_ps(0.f); - for (int i = 0; i < count; i++) { - sumVal = _mm_add_ps(sumVal, _mm_loadu_ps(srcf + i * 4)); + float mean = 0; + if(!RMSNorm){ + // step 1: get sum + if (count > 0) { + auto sumVal = _mm_set1_ps(0.f); + for (int i = 0; i < count; i++) { + sumVal = _mm_add_ps(sumVal, _mm_loadu_ps(srcf + i * 4)); + } + _mm_storeu_ps(tmpfloat4, sumVal); + sum += (tmpfloat4[0] + tmpfloat4[1] + tmpfloat4[2] + tmpfloat4[3]); } - _mm_storeu_ps(tmpfloat4, sumVal); - sum += (tmpfloat4[0] + tmpfloat4[1] + tmpfloat4[2] + tmpfloat4[3]); - } - for (int i = remain; i < size; i++) { - sum += srcf[i]; + for (int i = remain; i < size; i++) { + sum += srcf[i]; + } + mean = sum / size; } // step 2: get square_sum - float mean = sum / size; float square_sum = 0.f; auto meanVal = _mm_set1_ps(mean); if (count > 0) { diff --git a/source/backend/cuda/CMakeLists.txt b/source/backend/cuda/CMakeLists.txt index fb1a1a8c5..3c95095df 100644 --- a/source/backend/cuda/CMakeLists.txt +++ b/source/backend/cuda/CMakeLists.txt @@ -58,7 +58,7 @@ if(CUDA_FOUND) # Limit minimum cuda version for each archs IF (${arch_count} EQUAL 1) - IF ((CUDA_ARCH_FLAGS_readable_code VERSION_GREATER "80") OR (CUDA_ARCH_FLAGS_readable_code VERSION_EQUAL "80")) + IF (MNN_SUPPORT_TRANSFORMER_FUSE OR (CUDA_ARCH_FLAGS_readable_code VERSION_GREATER "80") OR (CUDA_ARCH_FLAGS_readable_code VERSION_EQUAL "80")) IF (CUDA_VERSION VERSION_LESS "11.2") message(FATAL_ERROR "Please update cuda version to 11.2 or higher!") ENDIF() @@ -101,6 +101,10 @@ IF (MNN_CUDA_TUNE_PARAM) add_definitions(-DENABLE_CUDA_TUNE_PARAM) ENDIF() +IF (MNN_LOW_MEMORY) + add_definitions(-DMNN_LOW_MEMORY) +ENDIF() + file(GLOB_RECURSE MNN_CUDA_SRC ${CMAKE_CURRENT_LIST_DIR}/core/* ${CMAKE_CURRENT_SOURCE_DIR}/execution/*) if(NOT MNN_SUPPORT_TRANSFORMER_FUSE) file(GLOB_RECURSE MNN_CUDA_TRANSFORMER_FUSE_SRC ${CMAKE_CURRENT_SOURCE_DIR}/execution/plugin/*) @@ -111,6 +115,11 @@ if(NOT MNN_SUPPORT_RENDER) file(GLOB_RECURSE MNN_CUDA_RENDER_SRC ${CMAKE_CURRENT_SOURCE_DIR}/execution/render/*) list(REMOVE_ITEM MNN_CUDA_SRC ${MNN_CUDA_RENDER_SRC}) endif() + +if(NOT MNN_LOW_MEMORY) + file(GLOB_RECURSE MNN_CUDA_LOW_MEM_SRC ${CMAKE_CURRENT_SOURCE_DIR}/execution/weight_only_quant/*) + list(REMOVE_ITEM MNN_CUDA_SRC ${MNN_CUDA_LOW_MEM_SRC}) +endif() message(STATUS "message ${CUDA_NVCC_FLAGS} !!!!!!!!!!! ${CUDA_INCLUDE_DIRS}") if(WIN32) diff --git a/source/backend/cuda/Register.cpp b/source/backend/cuda/Register.cpp index 015d8299e..e06fc6f5a 100644 --- a/source/backend/cuda/Register.cpp +++ b/source/backend/cuda/Register.cpp @@ -14,17 +14,18 @@ class CUDARuntimeCreator : public RuntimeCreator { virtual Runtime* onCreate(const Backend::Info& info) const override { BackendConfig::PrecisionMode precision = BackendConfig::Precision_Normal; BackendConfig::PowerMode power = BackendConfig::Power_Normal; + BackendConfig::MemoryMode memory = BackendConfig::Memory_Normal; int device_id = 0; if (nullptr != info.user) { precision = info.user->precision; power = info.user->power; - + memory = info.user->memory; if (info.user->sharedContext != nullptr) { device_id = ((MNNDeviceContext *)info.user->sharedContext)->deviceId; } } - auto backend = new CUDARuntimeWrapper(precision, power, device_id); + auto backend = new CUDARuntimeWrapper(precision, power, memory, device_id); if (backend != nullptr) { if (!backend->isCreateError()) { return backend; @@ -35,8 +36,12 @@ class CUDARuntimeCreator : public RuntimeCreator { return nullptr; } }; -static const auto __cuda_global_initializer = []() { - MNNInsertExtraRuntimeCreator(MNN_FORWARD_CUDA, new CUDARuntimeCreator, false); + +bool placeholder = []() { + static std::once_flag createOnce; + std::call_once(createOnce, []() { + MNNInsertExtraRuntimeCreator(MNN_FORWARD_CUDA, new CUDARuntimeCreator, false); + }); return true; }(); diff --git a/source/backend/cuda/core/CUDABackend.cpp b/source/backend/cuda/core/CUDABackend.cpp index af6c8011e..1cefb8a2b 100644 --- a/source/backend/cuda/core/CUDABackend.cpp +++ b/source/backend/cuda/core/CUDABackend.cpp @@ -46,7 +46,7 @@ class CUDARuntimeAllocator : public BufferAllocator::Allocator { private: CUDARuntime* mRuntime; }; -CUDARuntimeWrapper::CUDARuntimeWrapper(BackendConfig::PrecisionMode precision, BackendConfig::PowerMode power, int deviceId) { +CUDARuntimeWrapper::CUDARuntimeWrapper(BackendConfig::PrecisionMode precision, BackendConfig::PowerMode power, BackendConfig::MemoryMode memory, int deviceId) { // TODO: Search CUDA Device info and use best one mCUDARuntime.reset(new CUDARuntime(deviceId)); #ifdef LOG_VERBOSE @@ -61,6 +61,7 @@ CUDARuntimeWrapper::CUDARuntimeWrapper(BackendConfig::PrecisionMode precision, B mBufferPool.reset(new EagerBufferAllocator(allocator)); } mDefaultPrecision = precision; + mDefaultMemory = memory; } CUDARuntimeWrapper::~CUDARuntimeWrapper() { // Do nothing @@ -82,22 +83,24 @@ Backend* CUDARuntimeWrapper::onCreate(const BackendConfig* config) const { #ifdef LOG_VERBOSE MNN_PRINT("cudaruntime:%p, create CUDABackend\n", this); #endif - auto mode = mDefaultPrecision; + auto precision_mode = mDefaultPrecision; + auto memory_mode = mDefaultMemory; if (nullptr != config) { - mode = config->precision; + precision_mode = config->precision; + memory_mode = config->memory; } int precision = 0; - if(mode == BackendConfig::Precision_Low) { + if(precision_mode == BackendConfig::Precision_Low) { precision = 2; - } else if(mode == BackendConfig::Precision_Normal) { + } else if(precision_mode == BackendConfig::Precision_Normal) { precision = 0; - } else if(mode == BackendConfig::Precision_Low_BF16) { + } else if(precision_mode == BackendConfig::Precision_Low_BF16) { precision = 3; } else { precision = 1; } - return new CUDABackend(mBufferPool, mCUDARuntime, precision); + return new CUDABackend(mBufferPool, mCUDARuntime, precision, memory_mode); } void CUDARuntimeWrapper::onGabageCollect(int level) { @@ -106,7 +109,8 @@ void CUDARuntimeWrapper::onGabageCollect(int level) { CUDABackend::CUDABackend(std::shared_ptr st, - std::shared_ptr rt, int precision) + std::shared_ptr rt, + int precision, BackendConfig::MemoryMode memory) : Backend(MNN_FORWARD_CUDA) { #ifdef LOG_VERBOSE MNN_PRINT("cuda backend create\n"); @@ -116,6 +120,7 @@ CUDABackend::CUDABackend(std::shared_ptr st, mCUDARuntime = rt; mUseFp16AsFp32 = (precision == 2); mPrecision = precision; + mMemory = memory; } CUDABackend::~CUDABackend() { @@ -145,6 +150,9 @@ int CUDABackend::getPrecision() const { return mPrecision; } +BackendConfig::MemoryMode CUDABackend::getMemoryMode() const { + return mMemory; +} class CUDAMemObj : public Backend::MemObj { public: CUDAMemObj(BufferAllocator* allocator, MemChunk points) { diff --git a/source/backend/cuda/core/CUDABackend.hpp b/source/backend/cuda/core/CUDABackend.hpp index 32ef9d751..3c3fb2402 100644 --- a/source/backend/cuda/core/CUDABackend.hpp +++ b/source/backend/cuda/core/CUDABackend.hpp @@ -29,7 +29,7 @@ namespace MNN { namespace CUDA { class MNN_PUBLIC CUDARuntimeWrapper : public Runtime { public: - CUDARuntimeWrapper(BackendConfig::PrecisionMode precision, BackendConfig::PowerMode power, int deviceId = 0); + CUDARuntimeWrapper(BackendConfig::PrecisionMode precision, BackendConfig::PowerMode power, BackendConfig::MemoryMode memory, int deviceId = 0); virtual ~CUDARuntimeWrapper(); virtual Backend *onCreate(const BackendConfig* config) const override; virtual void onGabageCollect(int level) override; @@ -48,11 +48,12 @@ class MNN_PUBLIC CUDARuntimeWrapper : public Runtime { std::shared_ptr mCUDARuntime; bool mIsCreateError{false}; BackendConfig::PrecisionMode mDefaultPrecision; + BackendConfig::MemoryMode mDefaultMemory; }; class CUDABackend : public Backend { public: - CUDABackend(std::shared_ptr st, std::shared_ptr rt, int precisionLevel); + CUDABackend(std::shared_ptr st, std::shared_ptr rt, int precisionLevel, BackendConfig::MemoryMode memoryLevel); ~CUDABackend(); CUDARuntime *getCUDARuntime(); @@ -92,6 +93,7 @@ class CUDABackend : public Backend { CPUResizeCache* getCache(); bool useFp16() const; int getPrecision() const; + BackendConfig::MemoryMode getMemoryMode() const; #ifdef MNN_CODEGEN_CUDA std::map, CUmodule> kernelCuModuleMap(); void compile(CUmodule* dst, std::pair code, std::vector compile_params); @@ -103,6 +105,7 @@ class CUDABackend : public Backend { CPUResizeCache mCache; bool mUseFp16AsFp32 = false; int mPrecision = 0; + BackendConfig::MemoryMode mMemory; #ifdef MNN_CODEGEN_CUDA CUmodule mCuModule; std::map, CUmodule> mKernelCuModuleMap; diff --git a/source/backend/cuda/execution/ConvBaseKernel.cu b/source/backend/cuda/execution/ConvBaseKernel.cu index 71078ac7c..3e2bb190d 100644 --- a/source/backend/cuda/execution/ConvBaseKernel.cu +++ b/source/backend/cuda/execution/ConvBaseKernel.cu @@ -80,8 +80,8 @@ __global__ void Im2Col_FilterC( #define DATA_MEMSET_ZERO(precision) \ if(precision == 1) { float4 zeros; zeros.x = 0.0f; zeros.y = 0.0f; zeros.z = 0.0f; zeros.w = 0.0f; *((float4*)((float*)AP + dst_offset)) = zeros; }\ - else if(precision == 2 || precision == 0) { half2 zeros; zeros.x = (half)0.0f; zeros.y = (half)0.0f; *((half2*)((half*)AP + dst_offset)) = zeros; *((half2*)((half*)AP + dst_offset + 2)) = zeros;}\ - else if(precision == 3) { __nv_bfloat162 zeros; zeros.x = (__nv_bfloat16)0.0f; zeros.y = (__nv_bfloat16)0.0f; *((__nv_bfloat162*)((__nv_bfloat16*)AP + dst_offset)) = zeros; *((__nv_bfloat162*)((__nv_bfloat16*)AP + dst_offset + 2)) = zeros;} + else if(precision == 2 || precision == 0) { half2 zeros; zeros.x = (half)0.0f; zeros.y = (half)0.0f; *((half2*)((half*)AP + dst_offset)) = zeros; *((half2*)((half*)AP + dst_offset + 2)) = zeros;} + template __global__ void Im2Col_FilterC_Vec4( @@ -137,6 +137,11 @@ __global__ void Im2Col_FilterC_Vec4( } } DATA_MEMSET_ZERO(precision); + if(precision == 3) { + #if (defined(__CUDA_ARCH__) && (__CUDA_ARCH__ >= 800)) + __nv_bfloat162 zeros; zeros.x = (__nv_bfloat16)0.0f; zeros.y = (__nv_bfloat16)0.0f; *((__nv_bfloat162*)((__nv_bfloat16*)AP + dst_offset)) = zeros; *((__nv_bfloat162*)((__nv_bfloat16*)AP + dst_offset + 2)) = zeros; + #endif + } } } @@ -210,13 +215,19 @@ void callFloat2BFloat16(const void* input, void* output, const int count, CUDARu } #endif -void callWeightFill(const void* input, void* output, const int ic, const int l, const int h, const int lp, const int hp, const int precision, CUDARuntime* runtime) { +void callWeightFill(const void* input, void* output, const int ic, const int l, const int h, const int lp, const int hp, const int precision, CUDARuntime* runtime, int quant_int_bit) { DivModFast lpD(lp); DivModFast icD(ic); int block_num = runtime->blocks_num(lp*hp); int block_size = runtime->threads_num(); + if (quant_int_bit == 8) { + WeightPackFill<<>>((const char*)input, (char*)output, l/ic, lp*hp, l, h, lpD, icD); + checkKernelErrors; + return; + } + if(precision == 1) { WeightPackFill<<>>((const float*)input, (float*)output, l/ic, lp*hp, l, h, lpD, icD); checkKernelErrors; diff --git a/source/backend/cuda/execution/ConvBaseKernel.cuh b/source/backend/cuda/execution/ConvBaseKernel.cuh index 9effeb86a..ba14b7ec7 100644 --- a/source/backend/cuda/execution/ConvBaseKernel.cuh +++ b/source/backend/cuda/execution/ConvBaseKernel.cuh @@ -21,7 +21,7 @@ void callFloat2Half(const void* input, void* output, const int count, CUDARuntim #ifdef ENABLE_CUDA_BF16 void callFloat2BFloat16(const void* input, void* output, const int count, CUDARuntime* runtime); #endif -void callWeightFill(const void* input, void* output, const int ic, const int l, const int h, const int lp, const int hp, const int precision, CUDARuntime* runtime); +void callWeightFill(const void* input, void* output, const int ic, const int l, const int h, const int lp, const int hp, const int precision, CUDARuntime* runtime, int quant_int_bit = 0); void callIm2ColPack(const void* input, void* output, const ConvolutionCommon::Im2ColParameter* info, const int e, const int l, const int ep, const int lp, const int precision, CUDARuntime* runtime); ErrorCode callCutlassGemmCudaCoreFloat16(const std::vector &inputs, const std::vector &outputs); diff --git a/source/backend/cuda/execution/ConvSingleInputExecution.cu b/source/backend/cuda/execution/ConvSingleInputExecution.cu index 6ec05c4cf..e70850889 100644 --- a/source/backend/cuda/execution/ConvSingleInputExecution.cu +++ b/source/backend/cuda/execution/ConvSingleInputExecution.cu @@ -14,6 +14,9 @@ #ifdef ENABLE_CUDA_QUANT #include "int8/ConvInt8CutlassExecution.hpp" #endif +#ifdef MNN_LOW_MEMORY +#include "weight_only_quant/ConvFpAIntBExecution.hpp" +#endif #include "bf16/ConvCutlassBf16Execution.hpp" #include "backend/cuda/core/CUDATools.hpp" @@ -34,6 +37,17 @@ public: } } + #ifdef MNN_LOW_MEMORY + auto conv2dParams = op->main_as_Convolution2D(); + bool isMemoryLowWeightOnlyQuant = (conv2dParams->quanParameter() != nullptr && conv2dParams->quanParameter()->buffer() != nullptr); + isMemoryLowWeightOnlyQuant = isMemoryLowWeightOnlyQuant && (static_cast(backend)->getMemoryMode() == BackendConfig::Memory_Low); + isMemoryLowWeightOnlyQuant = isMemoryLowWeightOnlyQuant && ConvFpAIntBExecution::isValid(op->main_as_Convolution2D(), backend); + if (isMemoryLowWeightOnlyQuant) { + std::shared_ptr resource(new ConvFpAIntBExecution::Resource(backend, op)); + return new ConvFpAIntBExecution(backend, op, resource); + } + #endif + if (inputs.size() == 2 || inputs.size() == 3) { return new MultiInputConvExecution(op, backend); } diff --git a/source/backend/cuda/execution/LayerNormExecution.cu b/source/backend/cuda/execution/LayerNormExecution.cu index 3689ad53b..902a583bc 100644 --- a/source/backend/cuda/execution/LayerNormExecution.cu +++ b/source/backend/cuda/execution/LayerNormExecution.cu @@ -6,7 +6,7 @@ namespace CUDA { template __global__ -void input_layernorm(T* out, const T* input, const float* gamma, const float* beta, int m, int n, const float epsilon, int sumPerKnl) +void input_layernorm(T* out, const T* input, const float* gamma, const float* beta, int m, int n, const float epsilon, int sumPerKnl, bool RMSNorm) { int tid = threadIdx.x; @@ -17,18 +17,21 @@ void input_layernorm(T* out, const T* input, const float* gamma, const float* be float local_out = 0.0f; - for(int idx=0; idx(local_out); - if(threadIdx.x == 0) - s_mean = mean / n; - __syncthreads(); + mean = blockReduceSum(local_out); + if(threadIdx.x == 0) + s_mean = mean / n; + __syncthreads(); + } + mean = s_mean; float var_tmp = 0.0f; for(int idx=0; idx(var_tmp); if(threadIdx.x == 0) @@ -36,7 +39,7 @@ void input_layernorm(T* out, const T* input, const float* gamma, const float* be __syncthreads(); for(int idx=0; idx __global__ -void input_layernorm_320(T* out, const T* input, const float* gamma, const float* beta, int m, int n, const float epsilon) +void input_layernorm_320(T* out, const T* input, const float* gamma, const float* beta, int m, int n, const float epsilon, bool RMSNorm) { int tid = threadIdx.x; @@ -64,18 +67,21 @@ void input_layernorm_320(T* out, const T* input, const float* gamma, const float value_tmp[3] = input[blockIdx.x * n + 3*64 + tid]; value_tmp[4] = input[blockIdx.x * n + 4*64 + tid]; - for(int idx=0; idx<5; idx++) { - local_out += value_tmp[idx]; - } + if(!RMSNorm){ + for(int idx=0; idx<5; idx++) { + local_out += value_tmp[idx]; + } - mean = blockReduceSum(local_out); - if(threadIdx.x == 0) - s_mean = mean / n; - __syncthreads(); + mean = blockReduceSum(local_out); + if(threadIdx.x == 0) + s_mean = mean / n; + __syncthreads(); + } + mean = s_mean; float var_tmp = 0.0f; for(int idx=0; idx<5; idx++) { - var_tmp += ((value_tmp[idx] - s_mean) * (value_tmp[idx] - s_mean)); + var_tmp += ((value_tmp[idx] - mean) * (value_tmp[idx] - mean)); } variance += blockReduceSum(var_tmp); if(threadIdx.x == 0) @@ -83,7 +89,7 @@ void input_layernorm_320(T* out, const T* input, const float* gamma, const float __syncthreads(); for(int idx=0; idx<5; idx++) { - float res = ((value_tmp[idx] - s_mean) * rsqrtf(s_variance)); + float res = ((value_tmp[idx] - mean) * rsqrtf(s_variance)); if(gamma != nullptr && beta != nullptr) { res = res * (float)(__ldg(&gamma[idx*64 + tid])) + (float)(__ldg(&beta[idx*64 + tid])); } @@ -94,7 +100,7 @@ void input_layernorm_320(T* out, const T* input, const float* gamma, const float template __global__ -void input_layernorm_2048(T* out, const T* input, const float* gamma, const float* beta, int m, int n, const float epsilon) +void input_layernorm_2048(T* out, const T* input, const float* gamma, const float* beta, int m, int n, const float epsilon, bool RMSNorm) { int tid = threadIdx.x; @@ -115,21 +121,24 @@ void input_layernorm_2048(T* out, const T* input, const float* gamma, const floa value_tmp[6] = input[blockIdx.x * 2048 + 6*256 + tid]; value_tmp[7] = input[blockIdx.x * 2048 + 7*256 + tid]; - #pragma unroll(8) - for(int idx=0; idx<8; idx++) { - local_out += (float)value_tmp[idx]; - } + if(!RMSNorm){ + #pragma unroll(8) + for(int idx=0; idx<8; idx++) { + local_out += (float)value_tmp[idx]; + } - mean = blockReduceSum(local_out); - if(threadIdx.x == 0) - s_mean = mean / n; - __syncthreads(); + mean = blockReduceSum(local_out); + if(threadIdx.x == 0) + s_mean = mean / n; + __syncthreads(); + } + mean = s_mean; float var_tmp = 0.0f; #pragma unroll(8) for(int idx=0; idx<8; idx++) { - var_tmp += ((value_tmp[idx] - s_mean) * (value_tmp[idx] - s_mean)); + var_tmp += ((value_tmp[idx] - mean) * (value_tmp[idx] - mean)); } variance += blockReduceSum(var_tmp); if(threadIdx.x == 0) @@ -138,7 +147,7 @@ void input_layernorm_2048(T* out, const T* input, const float* gamma, const floa #pragma unroll(8) for(int idx=0; idx<8; idx++) { - float res = ((value_tmp[idx] - s_mean) * rsqrtf(s_variance)); + float res = ((value_tmp[idx] - mean) * rsqrtf(s_variance)); if(gamma != nullptr && beta != nullptr) { res = res * (float)(__ldg(&gamma[idx*256 + tid])) + (float)(__ldg(&beta[idx*256 + tid])); } @@ -149,7 +158,7 @@ void input_layernorm_2048(T* out, const T* input, const float* gamma, const floa template __global__ -void input_layernorm_1024(T* out, const T* input, const float* gamma, const float* beta, int m, int n, const float epsilon) +void input_layernorm_1024(T* out, const T* input, const float* gamma, const float* beta, int m, int n, const float epsilon, bool RMSNorm) { int tid = threadIdx.x; @@ -166,21 +175,24 @@ void input_layernorm_1024(T* out, const T* input, const float* gamma, const floa value_tmp[2] = input[blockIdx.x * 1024 + 2*256 + tid]; value_tmp[3] = input[blockIdx.x * 1024 + 3*256 + tid]; - #pragma unroll(4) - for(int idx=0; idx<4; idx++) { - local_out += (float)value_tmp[idx]; - } + if(!RMSNorm){ + #pragma unroll(4) + for(int idx=0; idx<4; idx++) { + local_out += (float)value_tmp[idx]; + } - mean = blockReduceSum(local_out); - if(threadIdx.x == 0) - s_mean = mean / n; - __syncthreads(); + mean = blockReduceSum(local_out); + if(threadIdx.x == 0) + s_mean = mean / n; + __syncthreads(); + } + mean = s_mean; float var_tmp = 0.0f; #pragma unroll(4) for(int idx=0; idx<4; idx++) { - var_tmp += ((value_tmp[idx] - s_mean) * (value_tmp[idx] - s_mean)); + var_tmp += ((value_tmp[idx] - mean) * (value_tmp[idx] - mean)); } variance += blockReduceSum(var_tmp); if(threadIdx.x == 0) @@ -189,7 +201,7 @@ void input_layernorm_1024(T* out, const T* input, const float* gamma, const floa #pragma unroll(4) for(int idx=0; idx<4; idx++) { - float res = ((value_tmp[idx] - s_mean) * rsqrtf(s_variance)); + float res = ((value_tmp[idx] - mean) * rsqrtf(s_variance)); if(gamma != nullptr && beta != nullptr) { res = res * (float)(__ldg(&gamma[idx*256 + tid])) + (float)(__ldg(&beta[idx*256 + tid])); } @@ -200,7 +212,7 @@ void input_layernorm_1024(T* out, const T* input, const float* gamma, const floa template __global__ -void input_layernorm_512(T* out, const T* input, const float* gamma, const float* beta, int m, int n, const float epsilon) +void input_layernorm_512(T* out, const T* input, const float* gamma, const float* beta, int m, int n, const float epsilon, bool RMSNorm) { int tid = threadIdx.x; @@ -215,25 +227,28 @@ void input_layernorm_512(T* out, const T* input, const float* gamma, const float value_tmp[0] = input[blockIdx.x * 512 + 0*256 + tid]; value_tmp[1] = input[blockIdx.x * 512 + 1*256 + tid]; - local_out += (float)value_tmp[0]; - local_out += (float)value_tmp[1]; + if(!RMSNorm){ + local_out += (float)value_tmp[0]; + local_out += (float)value_tmp[1]; - mean = blockReduceSum(local_out); - if(threadIdx.x == 0) - s_mean = mean / n; - __syncthreads(); + mean = blockReduceSum(local_out); + if(threadIdx.x == 0) + s_mean = mean / n; + __syncthreads(); + } + mean = s_mean; float var_tmp = 0.0f; - var_tmp += ((value_tmp[0] - s_mean) * (value_tmp[0] - s_mean)); - var_tmp += ((value_tmp[1] - s_mean) * (value_tmp[1] - s_mean)); + var_tmp += ((value_tmp[0] - mean) * (value_tmp[0] - mean)); + var_tmp += ((value_tmp[1] - mean) * (value_tmp[1] - mean)); variance += blockReduceSum(var_tmp); if(threadIdx.x == 0) s_variance = variance / n + epsilon; __syncthreads(); - float res0 = ((value_tmp[0] - s_mean) * rsqrtf(s_variance)); - float res1 = ((value_tmp[1] - s_mean) * rsqrtf(s_variance)); + float res0 = ((value_tmp[0] - mean) * rsqrtf(s_variance)); + float res1 = ((value_tmp[1] - mean) * rsqrtf(s_variance)); if(gamma != nullptr && beta != nullptr) { res0 = res0 * (float)(__ldg(&gamma[0*256 + tid])) + (float)(__ldg(&beta[0*256 + tid])); @@ -247,17 +262,20 @@ void input_layernorm_512(T* out, const T* input, const float* gamma, const float template __global__ void LAYERNORM(const int count, const int outside, const int inside, const float epsilon, - const T* in, T* out, const float* gamma_data, const float* beta_data) { + const T* in, T* out, const float* gamma_data, const float* beta_data, bool RMSNorm) { CUDA_KERNEL_LOOP(i, count) { const int o = i / inside; const int index = i % inside; const T* inner_input = in + o * inside; T* inner_output = out + o * inside; - float sum = 0.f; - for (int j = 0; j < inside; ++j) { + float mean = 0.0f; + if(!RMSNorm){ + float sum = 0.f; + for (int j = 0; j < inside; ++j) { sum += (float)inner_input[j]; + } + mean = sum / inside; } - float mean = sum / inside; float square_sum = 0.f; for (int j = 0; j < inside; ++j) { square_sum += ((float)inner_input[j] - mean) * ((float)inner_input[j] - mean); @@ -274,14 +292,13 @@ __global__ void LAYERNORM(const int count, const int outside, const int inside, } LayerNormExecution::LayerNormExecution(const LayerNorm* layer_norm_param, Backend *backend) : Execution(backend) { - int axis_size = layer_norm_param->axis()->size(); - mAxises.resize(axis_size); - for (int i = 0; i < axis_size; ++i) { - mAxises[i] = layer_norm_param->axis()->Get(i); + if (nullptr != layer_norm_param->axis()) { + mAxises = layer_norm_param->axis()->size(); } mEps = layer_norm_param->epsilon(); mGroup = layer_norm_param->group(); + RMSNorm = layer_norm_param->useRMSNorm(); if (layer_norm_param->gamma() && layer_norm_param->beta()) { int size = layer_norm_param->gamma()->size(); @@ -329,20 +346,12 @@ ErrorCode LayerNormExecution::onResize(const std::vector &inputs, cons mInside /= mGroup; return NO_ERROR; } - std::vector axis(mAxises.size()); - for (int i = 0; i < mAxises.size(); ++i) { - if (mAxises[i] < 0) { - mAxises[i] += rank; - } - } - std::sort(axis.begin(), axis.end()); - for (int i = 0; i < rank - axis.size(); ++i) { + for (int i = 0; i < rank - mAxises; ++i) { mOutside *= input->length(i); } - for (int i = rank - axis.size(); i < rank; ++i) { + for (int i = rank - mAxises; i < rank; ++i) { mInside *= input->length(i); } - return NO_ERROR; } @@ -358,24 +367,24 @@ ErrorCode LayerNormExecution::onExecute(const std::vector &inputs, con if (static_cast(backend())->useFp16()) { if(mInside < 128) { LAYERNORM<<>>(mOutside*mInside, mOutside, mInside, mEps, (const half *)input_addr, (half *)output_addr, - (const float *)mDeviceGamma, (const float *)mDeviceBeta); + (const float *)mDeviceGamma, (const float *)mDeviceBeta, RMSNorm); } else { if(mInside == 2048) { input_layernorm_2048<<>>((half *)output_addr, (const half *)input_addr, (const float *)mDeviceGamma, - (const float *)mDeviceBeta, mOutside, mInside, mEps); + (const float *)mDeviceBeta, mOutside, mInside, mEps, RMSNorm); } else if(mInside == 1024) { input_layernorm_1024<<>>((half *)output_addr, (const half *)input_addr, (const float *)mDeviceGamma, - (const float *)mDeviceBeta, mOutside, mInside, mEps); + (const float *)mDeviceBeta, mOutside, mInside, mEps, RMSNorm); } else if(mInside == 512) { input_layernorm_512<<>>((half *)output_addr, (const half *)input_addr, (const float *)mDeviceGamma, - (const float *)mDeviceBeta, mOutside, mInside, mEps); + (const float *)mDeviceBeta, mOutside, mInside, mEps, RMSNorm); } else if(mInside == 320) { input_layernorm_320<<>>((half *)output_addr, (const half *)input_addr, (const float *)mDeviceGamma, - (const float *)mDeviceBeta, mOutside, mInside, mEps); + (const float *)mDeviceBeta, mOutside, mInside, mEps, RMSNorm); } else { int sumPerKnl = (mInside+255) / 256; input_layernorm<<>>((half *)output_addr, (const half *)input_addr, (const float *)mDeviceGamma, - (const float *)mDeviceBeta, mOutside, mInside, mEps, sumPerKnl); + (const float *)mDeviceBeta, mOutside, mInside, mEps, sumPerKnl, RMSNorm); } } return NO_ERROR; @@ -383,24 +392,24 @@ ErrorCode LayerNormExecution::onExecute(const std::vector &inputs, con if(mInside < 128) { LAYERNORM<<>>(mOutside*mInside, mOutside, mInside, mEps, (const float *)input_addr, (float *)output_addr, - (const float *)mDeviceGamma, (const float *)mDeviceBeta); + (const float *)mDeviceGamma, (const float *)mDeviceBeta, RMSNorm); } else { if(mInside == 2048) { input_layernorm_2048<<>>((float *)output_addr, (const float *)input_addr, (const float *)mDeviceGamma, - (const float *)mDeviceBeta, mOutside, mInside, mEps); + (const float *)mDeviceBeta, mOutside, mInside, mEps, RMSNorm); } else if(mInside == 1024) { input_layernorm_1024<<>>((float *)output_addr, (const float *)input_addr, (const float *)mDeviceGamma, - (const float *)mDeviceBeta, mOutside, mInside, mEps); + (const float *)mDeviceBeta, mOutside, mInside, mEps, RMSNorm); } else if(mInside == 512) { input_layernorm_512<<>>((float *)output_addr, (const float *)input_addr, (const float *)mDeviceGamma, - (const float *)mDeviceBeta, mOutside, mInside, mEps); + (const float *)mDeviceBeta, mOutside, mInside, mEps, RMSNorm); } else if(mInside == 320) { input_layernorm_320<<>>((float *)output_addr, (const float *)input_addr, (const float *)mDeviceGamma, - (const float *)mDeviceBeta, mOutside, mInside, mEps); + (const float *)mDeviceBeta, mOutside, mInside, mEps, RMSNorm); } else { int sumPerKnl = (mInside+255) / 256; input_layernorm<<>>((float *)output_addr, (const float *)input_addr, (const float *)mDeviceGamma, - (const float *)mDeviceBeta, mOutside, mInside, mEps, sumPerKnl); + (const float *)mDeviceBeta, mOutside, mInside, mEps, sumPerKnl, RMSNorm); } } return NO_ERROR; diff --git a/source/backend/cuda/execution/LayerNormExecution.hpp b/source/backend/cuda/execution/LayerNormExecution.hpp index a741f8f82..cac6e1028 100644 --- a/source/backend/cuda/execution/LayerNormExecution.hpp +++ b/source/backend/cuda/execution/LayerNormExecution.hpp @@ -30,12 +30,13 @@ class LayerNormExecution : public Execution { void *mDeviceGamma = nullptr; void *mDeviceBeta = nullptr; - std::vector mAxises; + int mAxises = 0; int mInside = 1; int mOutside = 1; float mEps = 0.001; int mGroup = 1; + bool RMSNorm = false; std::unique_ptr mGammaTensor; std::unique_ptr mBetaTensor; diff --git a/source/backend/cuda/execution/weight_only_quant/ConvFpAIntBExecution.cu b/source/backend/cuda/execution/weight_only_quant/ConvFpAIntBExecution.cu new file mode 100644 index 000000000..a9851bb53 --- /dev/null +++ b/source/backend/cuda/execution/weight_only_quant/ConvFpAIntBExecution.cu @@ -0,0 +1,531 @@ +// +// ConvFpAIntBExecution.cpp +// MNN +// +// Created by MNN on 2024/03/11. +// Copyright © 2018, Alibaba Group Holding Limited +// + +#include "ConvFpAIntBExecution.hpp" +#include "../Raster.cuh" +#include "../ConvBaseKernel.cuh" +#include + +//#define DEBUG + +namespace MNN { +namespace CUDA { + +template +__global__ void CONV_FpAInt8B(const T* input, + const int8_t* kernel, + const T* scale, + const T* offset, + const T* bias, + T *output, + const float maxV, + const float minV, + const int ic, + const int ic_p, + const int iw, + const int ih, + const int c, + const int c_p, + const int ow, + const int oh, + const int kw, + const int kh, + const int dw, + const int dh, + const int sw, + const int sh, + const int pw, + const int ph, + const int total, + DivModFast d_oc, + DivModFast d_ow, + DivModFast d_oh +) { + + for (size_t index = blockIdx.x * blockDim.x + threadIdx.x; index < total; index += blockDim.x * gridDim.x) { + int oz_2, tmp2, oy, ox, tmp1, ob; + d_oc.divmod(index, tmp1, oz_2); + d_ow.divmod(tmp1, tmp2, ox); + d_oh.divmod(tmp2, ob, oy); + + int oz = oz_2; + int ix = ox * sw - pw; + int iy = oy * sh - ph; + float color0 = bias[oz]; + float x_scale = scale[oz]; + float x_offset = offset[oz]; + + int fxSta = max(0, (UP_DIV(-ix, dw))); + int fySta = max(0, (UP_DIV(-iy, dh))); + int fxEnd = min(kw, UP_DIV(iw - ix, dw)); + int fyEnd = min(kh, UP_DIV(ih - iy, dh)); + int fx, fy, fz; + for (fy=fySta; fy +__global__ void CONV_FpAInt4B(const T* input, + const uint8_t* kernel, + const T* scale, + const T* offset, + const T* bias, + T *output, + const float maxV, + const float minV, + const int ic, + const int ic_p, + const int iw, + const int ih, + const int c, + const int c_p, + const int ow, + const int oh, + const int kw, + const int kh, + const int dw, + const int dh, + const int sw, + const int sh, + const int pw, + const int ph, + const int total, + DivModFast d_oc, + DivModFast d_ow, + DivModFast d_oh +) { + + for (size_t index = blockIdx.x * blockDim.x + threadIdx.x; index < total; index += blockDim.x * gridDim.x) { + int oz_2, tmp2, oy, ox, tmp1, ob; + d_oc.divmod(index, tmp1, oz_2); + d_ow.divmod(tmp1, tmp2, ox); + d_oh.divmod(tmp2, ob, oy); + + int oz = oz_2; + int ix = ox * sw - pw; + int iy = oy * sh - ph; + float color0 = bias[oz]; + float x_scale = scale[oz]; + float x_offset = offset[oz]; + + int fxSta = max(0, (UP_DIV(-ix, dw))); + int fySta = max(0, (UP_DIV(-iy, dh))); + int fxEnd = min(kw, UP_DIV(iw - ix, dw)); + int fyEnd = min(kh, UP_DIV(ih - iy, dh)); + int fx, fy, fz; + for (fy=fySta; fy> 4) - 8; + int8_t ker1 = (ker & 15) - 8; + color0 = color0 + inp0 * ((float)ker0 * x_scale + x_offset); + color0 = color0 + inp1 * ((float)ker1 * x_scale + x_offset); + } + } + } + color0 = max(color0, minV); + color0 = min(color0, maxV); + + int dst_offset = ((ob * oh + oy) * ow + ox) * c_p + oz; + + output[dst_offset] = color0; + } +} + +__global__ void Rearrange_Weight_Int4(const int8_t* param, + uint8_t* output, + const int khw, + const size_t maxCount, + const int oc, + const int ic, + DivModFast d_khw, + DivModFast d_icp2 +) { + for (size_t index = blockIdx.x * blockDim.x + threadIdx.x; index < maxCount; index += blockDim.x * gridDim.x) { + int icp2Index, temp, ocpIndex, khwIndex; + d_icp2.divmod(index, temp, icp2Index); + d_khw.divmod(temp, ocpIndex, khwIndex); + if(2*icp2Index >= ic || ocpIndex >= oc) { + output[index] = 0; + continue; + } + // [Co, Ci, KhKw] -> [Cop, KhKw, Cip/2], Ci available for vectorize + output[index] = ((uint8_t)(param[(ocpIndex * ic + 2*icp2Index+0) * khw + khwIndex] + 8 )) * 16; + if(2*icp2Index+1 < ic) { + output[index] += ((uint8_t)(param[(ocpIndex * ic + 2*icp2Index+1) * khw + khwIndex] + 8 )); + } + } +} + +__global__ void Rearrange_Weight_Int8(const int8_t* param, + int8_t* output, + const int khw, + const size_t maxCount, + const int oc, + const int ic, + DivModFast d_khw, + DivModFast d_icp +) { + for (size_t index = blockIdx.x * blockDim.x + threadIdx.x; index < maxCount; index += blockDim.x * gridDim.x) { + int icpIndex, temp, ocpIndex, khwIndex; + d_icp.divmod(index, temp, icpIndex); + d_khw.divmod(temp, ocpIndex, khwIndex); + if(icpIndex >= ic || ocpIndex >= oc) { + output[index] = 0; + continue; + } + // [Co, Ci, KhKw] -> [Cop, KhKw, Cip], Ci available for vectorize + output[index] = param[(ocpIndex * ic + icpIndex) * khw + khwIndex]; + } +} + +bool ConvFpAIntBExecution::isValid(const Convolution2D* conv, Backend* backend) { + return true; +} + + +ConvFpAIntBExecution::Resource::Resource(Backend* bn, const MNN::Op* op) { + mBackend = bn; + auto runtime = static_cast(bn)->getCUDARuntime(); + + auto conv = op->main_as_Convolution2D(); + auto common = conv->common(); + + //weight host->device + std::shared_ptr quanCommon = ConvolutionCommon::load(conv, mBackend, false, true); + + auto oc = common->outputCount(); + auto weightSize = quanCommon->weight.size(); + int l = weightSize / oc; + int h = oc; + int ic = common->inputCount(); + if(ic == 0) { + ic = l / common->kernelX() / common->kernelY(); + } + + int lp = UP_DIV(l, 8) * 8; + int hp = UP_DIV(h, 8) * 8; + + // set dequant scale/offset + { + float * dequantAlpha = quanCommon->alpha.get(); + std::vector dequantScale(hp, 0.0); + std::vector dequantOffset(hp, 0.0); + + for (int o = 0; o < oc; o++) { + float min = 0.0f; + float alpha = 0.0f; + if (quanCommon->asymmetric) { + min = dequantAlpha[2*o]; + alpha = dequantAlpha[2*o+1]; + } else { + alpha = dequantAlpha[o]; + } + dequantScale[o] = alpha; + dequantOffset[o] = min; + } + + if(static_cast(bn)->useFp16()) { + + auto tempScaleStorage = static_cast(bn)->getStaticBufferPool()->alloc(hp*sizeof(float)); + auto scaleTemp = (float*)((uint8_t*)tempScaleStorage.first + tempScaleStorage.second); + cuda_check(cudaMemcpy(scaleTemp, dequantScale.data(), hp*sizeof(float), cudaMemcpyHostToDevice)); + + scaleTensor.reset(Tensor::createDevice({hp})); + bn->onAcquireBuffer(scaleTensor.get(), Backend::STATIC); + mScale = (void *)scaleTensor.get()->buffer().device; + callFloat2Half((const void*)scaleTemp, (void*)mScale, hp, runtime); + + // Reuse scaleTemp buffer + cuda_check(cudaMemcpy(scaleTemp, dequantOffset.data(), hp*sizeof(float), cudaMemcpyHostToDevice)); + + offsetTensor.reset(Tensor::createDevice({hp})); + bn->onAcquireBuffer(offsetTensor.get(), Backend::STATIC); + mOffset = (void *)offsetTensor.get()->buffer().device; + callFloat2Half((const void*)scaleTemp, (void*)mOffset, hp, runtime); + + static_cast(bn)->getStaticBufferPool()->free(tempScaleStorage); + } else { + + scaleTensor.reset(Tensor::createDevice({hp})); + bn->onAcquireBuffer(scaleTensor.get(), Backend::STATIC); + mScale = (void *)scaleTensor.get()->buffer().device; + cuda_check(cudaMemcpy(mScale, dequantScale.data(), hp*sizeof(float), cudaMemcpyHostToDevice)); + + offsetTensor.reset(Tensor::createDevice({hp})); + bn->onAcquireBuffer(offsetTensor.get(), Backend::STATIC); + mOffset = (void *)offsetTensor.get()->buffer().device; + cuda_check(cudaMemcpy(mOffset, dequantOffset.data(), hp*sizeof(float), cudaMemcpyHostToDevice)); + } + } + + // Reorder weight + { + int khw = common->kernelX() * common->kernelY(); + int icp = UP_DIV(ic, 8) * 8; + DivModFast khwD(khw); + DivModFast icp2D(icp/2); + DivModFast icpD(icp); + + if(quanCommon->canUseInt4) { + mIsWeightInt4 = true; + + auto tempCacheBuffer = static_cast(bn)->getStaticBufferPool()->alloc(weightSize * sizeof(int8_t)); + float* cacheWeight = (float*)((uint8_t*)tempCacheBuffer.first + tempCacheBuffer.second); + runtime->memcpy(cacheWeight, quanCommon->weight.get(), weightSize * sizeof(int8_t), MNNMemcpyHostToDevice); + + weightTensor.reset(Tensor::createDevice({khw * icp/2 * hp})); + bn->onAcquireBuffer(weightTensor.get(), Backend::STATIC); + mFilter = (void *)weightTensor.get()->buffer().device; + + //[Co, Ci, KhKw] -> [Cop, KhKw, Cip/2] + int block_num = runtime->blocks_num(khw*icp/2*hp); + int block_size = runtime->threads_num(); + Rearrange_Weight_Int4<<>>((const int8_t*)cacheWeight, (uint8_t*)mFilter, khw, khw*icp/2*hp, oc, ic, khwD, icp2D); + checkKernelErrors; + + static_cast(bn)->getStaticBufferPool()->free(tempCacheBuffer); + } else { + auto tempCacheBuffer = static_cast(bn)->getStaticBufferPool()->alloc(weightSize * sizeof(int8_t)); + float* cacheWeight = (float*)((uint8_t*)tempCacheBuffer.first + tempCacheBuffer.second); + runtime->memcpy(cacheWeight, quanCommon->weight.get(), weightSize * sizeof(int8_t), MNNMemcpyHostToDevice); + weightTensor.reset(Tensor::createDevice({lp * hp})); + + bn->onAcquireBuffer(weightTensor.get(), Backend::STATIC); + mFilter = (void *)weightTensor.get()->buffer().device; + + //[Co, Ci, KhKw] -> [Cop, KhKw, Cip] + int block_num = runtime->blocks_num(khw*icp*hp); + int block_size = runtime->threads_num(); + Rearrange_Weight_Int8<<>>((const int8_t*)cacheWeight, (int8_t*)mFilter, khw, khw*icp*hp, oc, ic, khwD, icpD); + checkKernelErrors; + static_cast(bn)->getStaticBufferPool()->free(tempCacheBuffer); + } + } + + // Copy Bias + { + if(static_cast(bn)->useFp16()) { + int biasSize = conv->bias()->size(); + int hp = UP_DIV(biasSize, 8) * 8; + + auto tempBiasStorage = static_cast(bn)->getStaticBufferPool()->alloc(hp*sizeof(float)); + auto biasTemp = (float*)((uint8_t*)tempBiasStorage.first + tempBiasStorage.second); + runtime->memset(biasTemp, 0, hp * sizeof(int32_t)); + cuda_check(cudaMemcpy(biasTemp, conv->bias()->data(), conv->bias()->size()*sizeof(float), cudaMemcpyHostToDevice)); + + biasTensor.reset(Tensor::createDevice({hp})); + bn->onAcquireBuffer(biasTensor.get(), Backend::STATIC); + mBias = (void *)biasTensor.get()->buffer().device; + callFloat2Half((const void*)biasTemp, (void*)mBias, hp, runtime); + + static_cast(bn)->getStaticBufferPool()->free(tempBiasStorage); + } else { + int biasSize = conv->bias()->size(); + int hp = UP_DIV(biasSize, 8) * 8; + biasTensor.reset(Tensor::createDevice({hp})); + bn->onAcquireBuffer(biasTensor.get(), Backend::STATIC); + mBias = (void *)biasTensor.get()->buffer().device; + runtime->memset(mBias, 0, hp * sizeof(int32_t)); + cuda_check(cudaMemcpy(mBias, conv->bias()->data(), conv->bias()->size()*sizeof(float), cudaMemcpyHostToDevice)); + } + } +} + +ConvFpAIntBExecution::Resource::~Resource() { + // Do nothing +} +ConvFpAIntBExecution::ConvFpAIntBExecution(Backend* backend, const MNN::Op* op, std::shared_ptr res) : CutlassConvCommonExecution(backend) { + mOp = op; + mResource = res; + auto runtime = static_cast(backend)->getCUDARuntime(); + mPrecisonLevel = static_cast(backend)->getPrecision(); + mFp16Infer = (mPrecisonLevel == 2); + mFp32Infer = (mPrecisonLevel == 1); + mFp16Fp32MixInfer = (mPrecisonLevel == 0); + mBf16Infer = (mPrecisonLevel == 3); +} + +ConvFpAIntBExecution::~ConvFpAIntBExecution() { + +} +bool ConvFpAIntBExecution::onClone(Backend* bn, const Op* op, Execution** dst) { + if (!mValid) { + return false; + } + if (nullptr == dst) { + return true; + } + auto dstExe = new ConvFpAIntBExecution(bn, op, mResource); + *dst = dstExe; + return true; +} + + +ErrorCode ConvFpAIntBExecution::onResize(const std::vector &inputs, const std::vector &outputs) { + auto runtime = static_cast(backend())->getCUDARuntime(); + auto input = inputs[0], output = outputs[0]; + const int UNIT = PACK_NUMBER; + auto convCommon = mOp->main_as_Convolution2D()->common(); + auto pads = ConvolutionCommon::convolutionPadFull(input, output, mOp->main_as_Convolution2D()->common()); + int ic = input->channel(); + auto icDiv = UP_DIV(ic, UNIT); + + mIm2ColParamter.dilateX = convCommon->dilateX(); + mIm2ColParamter.dilateY = convCommon->dilateY(); + mIm2ColParamter.strideX = convCommon->strideX(); + mIm2ColParamter.strideY = convCommon->strideY(); + mIm2ColParamter.icDiv4 = icDiv; + mIm2ColParamter.ic = ic; + mIm2ColParamter.kernelX = convCommon->kernelX(); + mIm2ColParamter.kernelY = convCommon->kernelY(); + mIm2ColParamter.padX = std::get<0>(pads); + mIm2ColParamter.padY = std::get<1>(pads); + + mIm2ColParamter.ih = input->height(); + mIm2ColParamter.iw = input->width(); + mIm2ColParamter.oh = output->height(); + mIm2ColParamter.ow = output->width(); + mIm2ColParamter.srcZStep = input->height() * input->width() * UNIT * input->batch(); + mIm2ColParamter.srcYStep = input->width() * UNIT; + mIm2ColParamter.packCUnit = UNIT; + + mActivationType = convCommon->relu() ? 1 : convCommon->relu6() ? 2 : 0; + + //MNN_PRINT("conv size:%d-%d, %d-%d-%d, %d-%d-%d\n", mIm2ColParamter.kernelX, mIm2ColParamter.strideX, input->height(), input->width(), input->channel(), output->height(), output->width(), output->channel()); + int e = output->height() * output->width() * output->batch(); + int l = ic * mIm2ColParamter.kernelX * mIm2ColParamter.kernelY; + int h = output->channel(); + mGemmInfo.elh[0] = e; + mGemmInfo.elh[1] = l; + mGemmInfo.elh[2] = h; + mGemmInfo.elhPad[0] = UP_DIV(e, 8) * 8; + mGemmInfo.elhPad[1] = UP_DIV(l, 8) * 8; + mGemmInfo.elhPad[2] = UP_DIV(h, 8) * 8; + + return NO_ERROR; +} + +ErrorCode ConvFpAIntBExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { + MNN_ASSERT(inputs.size() == 1); + MNN_ASSERT(outputs.size() == 1); + auto input = inputs[0]; + auto output = outputs[0]; + + //printf("convcutlass:%p %p\n", input->deviceId(), output->deviceId()); + //MNN_PRINT("cutlass hw:%d-%d\n", input->height(), input->width()); + auto runtime = static_cast(backend())->getCUDARuntime(); + const void *input_addr = (const void*)inputs[0]->deviceId(); + const void *filter_addr = mResource->mFilter; + const void *bias_addr = mResource->mBias; + auto bn = backend(); + void *output_addr = (void*)outputs[0]->deviceId(); + + const int sw = mIm2ColParamter.strideX; + const int sh = mIm2ColParamter.strideY; + const int kw = mIm2ColParamter.kernelX; + const int kh = mIm2ColParamter.kernelY; + const int dw = mIm2ColParamter.dilateX; + const int dh = mIm2ColParamter.dilateY; + const int pw = mIm2ColParamter.padX; + const int ph = mIm2ColParamter.padY; + const int ic = mIm2ColParamter.ic; + const int icp = UP_DIV(ic, 8) * 8; + const int iw = mIm2ColParamter.iw; + const int ih = mIm2ColParamter.ih; + + const int oc = mGemmInfo.elh[2]; + const int ocp = mGemmInfo.elhPad[2]; + const int ow = mIm2ColParamter.ow; + const int oh = mIm2ColParamter.oh; + + float maxV = FLT_MAX; + float minV = -FLT_MAX; + if (mActivationType == 1) { + minV = 0.0f; + } + if (mActivationType == 2) { + minV = 0.0f; + maxV = 6.0f; + } + + auto total = outputs[0]->batch() * oh * ow * ocp; + auto& prop = runtime->prop(); + int limitThreads = UP_DIV(total, prop.multiProcessorCount); + int threadNum = ALIMIN(prop.maxThreadsPerBlock/2, limitThreads); + int blockNum = prop.multiProcessorCount; + + DivModFast d_oc(ocp); + DivModFast d_ow(ow); + DivModFast d_oh(oh); + + if(mResource->mIsWeightInt4) { + if(mFp16Infer) { + CONV_FpAInt4B<<>>((const half*)input_addr, (const uint8_t*)mResource->mFilter, + (const half*)mResource->mScale, (const half*)mResource->mOffset, (const half*)bias_addr, (half*)output_addr, + maxV, minV, ic, icp, iw, ih, oc, ocp, ow, oh, kw, kh, dw, dh, sw, sh, pw, ph, total, + d_oc, d_ow, d_oh); + checkKernelErrors; + } else { + CONV_FpAInt4B<<>>((const float*)input_addr, (const uint8_t*)mResource->mFilter, + (const float*)mResource->mScale, (const float*)mResource->mOffset, (const float*)bias_addr, (float*)output_addr, + maxV, minV, ic, icp, iw, ih, oc, ocp, ow, oh, kw, kh, dw, dh, sw, sh, pw, ph, total, + d_oc, d_ow, d_oh); + checkKernelErrors; + } + + return NO_ERROR; + } + + if(mFp16Infer) { + CONV_FpAInt8B<<>>((const half*)input_addr, (const int8_t*)mResource->mFilter, + (const half*)mResource->mScale, (const half*)mResource->mOffset, (const half*)bias_addr, (half*)output_addr, + maxV, minV, ic, icp, iw, ih, oc, ocp, ow, oh, kw, kh, dw, dh, sw, sh, pw, ph, total, + d_oc, d_ow, d_oh); + checkKernelErrors; + } else { + CONV_FpAInt8B<<>>((const float*)input_addr, (const int8_t*)mResource->mFilter, + (const float*)mResource->mScale, (const float*)mResource->mOffset, (const float*)bias_addr, (float*)output_addr, + maxV, minV, ic, icp, iw, ih, oc, ocp, ow, oh, kw, kh, dw, dh, sw, sh, pw, ph, total, + d_oc, d_ow, d_oh); + checkKernelErrors; + } + + return NO_ERROR; +} + + +}// namespace CUDA +}// namespace MNN diff --git a/source/backend/cuda/execution/weight_only_quant/ConvFpAIntBExecution.hpp b/source/backend/cuda/execution/weight_only_quant/ConvFpAIntBExecution.hpp new file mode 100644 index 000000000..5e3937835 --- /dev/null +++ b/source/backend/cuda/execution/weight_only_quant/ConvFpAIntBExecution.hpp @@ -0,0 +1,51 @@ +// +// ConvFpAIntBExecution.hpp +// MNN +// +// Created by MNN on 2024/03/11. +// Copyright © 2018, Alibaba Group Holding Limited +// +#ifndef ConvFpAIntBExecution_hpp +#define ConvFpAIntBExecution_hpp + +#include "backend/cuda/core/CUDABackend.hpp" +#include "core/Execution.hpp" +#include "../CutlassGemmParam.hpp" +#include "../MNNCUDADefine.hpp" +#include "../MNNCUDAFunction.cuh" +#include "../cutlass_common/CutlassConvCommonExecution.hpp" + +namespace MNN { +namespace CUDA { + +class ConvFpAIntBExecution : public CutlassConvCommonExecution { +public: + struct Resource { + Resource(Backend* bn, const MNN::Op* op); + ~ Resource(); + void* mFilter; + void* mScale; + void* mOffset; + void* mBias; + std::shared_ptr weightTensor; + std::shared_ptr scaleTensor; + std::shared_ptr offsetTensor; + std::shared_ptr biasTensor; + Backend* mBackend = nullptr; + bool mIsWeightInt4 = false; + }; + static bool isValid(const Convolution2D* conv, Backend* backend); + ConvFpAIntBExecution(Backend* backend, const MNN::Op* op, std::shared_ptr res); + virtual ~ConvFpAIntBExecution(); + virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual bool onClone(Backend* bn, const Op* op, Execution** dst) override; + +private: + std::shared_ptr mResource; +}; + +} // namespace CUDA +} // namespace MNN + +#endif /* ConvFpAIntBExecution */ \ No newline at end of file diff --git a/source/backend/metal/AllShader.cpp b/source/backend/metal/AllShader.cpp index 030275a7c..2ed682837 100644 --- a/source/backend/metal/AllShader.cpp +++ b/source/backend/metal/AllShader.cpp @@ -492,102 +492,6 @@ const char* shader_MetalConvolution_metal = " if (valids) { z_out += cst.output_size; *z_out=activate(M4(result1+FLOAT4(biasTerms[uz[1]])),cst.activation); }\n" "}\n" ; -const char* shader_MetalGridSample_metal = -"struct grid_sample_params {\n" -" int batches;\n" -" int channels;\n" -" int inH;\n" -" int inW;\n" -" int outH;\n" -" int outW;\n" -" int mode; // 0-Bilinear,1-Nearest\n" -" int paddingMode; // 0-Zeros,1-Border,2-Reflection\n" -" int alignCorners;\n" -"};\n" -"static float getPosition(float x,int range,int alignCorners,int paddingMode) {\n" -" if (paddingMode == 2/*GridSamplePaddingMode_REFLECTION*/) {\n" -" // if x is on the left side of -1.0,move it to the right side of 1.0\n" -" if (x<-1.0f) {\n" -" x=x+::ceil(1-x)*4;\n" -" }\n" -" // reflect\n" -" if (x>1.0f) {\n" -" float l=x-1.0f;\n" -" int reflectionNum=::floor(l/2.0);\n" -" float offset=l-reflectionNum*2.0f;\n" -" x=(reflectionNum % 2 == 0) ? (1-offset) : (-1.0f+offset);\n" -" }\n" -" }\n" -" float a=alignCorners ? 1.0f : 0.0f;\n" -" float b=alignCorners ? 0.0f : 1.0f;\n" -" return ((1+x)*(range-a)-b)/2.0f;\n" -"}\n" -"static int CLAMP(int v,int min,int max) {\n" -" if ((v)max) {\n" -" (v)=max;\n" -" }\n" -" return v;\n" -"}\n" -"static M4 sample(int h,int w,const device M4 *buffer,int height,int width,int paddingMode) {\n" -" if (h<0 || h >= height || w<0 || w >= width) {\n" -" if (paddingMode == 0/*GridSamplePaddingMode_ZEROS*/) {\n" -" return 0.0f;\n" -" }\n" -" // Clearly,CLAMP is the right way to go for GridSamplePaddingMode_BORDER\n" -" // For GridSamplePaddingMode_REFLECTION,since we have reflected the Vs into (-1,1),\n" -" // the leftover reflections degrade to GridSamplePaddingMode_BORDER\n" -" h=CLAMP(h,0,height-1);\n" -" w=CLAMP(w,0,width-1);\n" -" }\n" -" return buffer[h*width+w];\n" -"}\n" -"static M4 interpolate(float h,float w,const device M4 *buffer,int height,int width,int mode,\n" -" int paddingMode) {\n" -" if (mode == 1/*GridSampleMode_NEAREST*/) {\n" -" int nh=::floor(h+0.5f);\n" -" int nw=::floor(w+0.5f);\n" -" return sample(nh,nw,buffer,height,width,paddingMode);\n" -" }\n" -" // mode == GridSampleMode_BILINEAR\n" -" int w0_h=::floor(h);\n" -" int w0_w=::floor(w);\n" -" int w1_h=w0_h+1;\n" -" int w1_w=w0_w+1;\n" -" M4 oneV=(M4)((M)1.0f);\n" -" M4 i00=sample(w0_h,w0_w,buffer,height,width,paddingMode);\n" -" M4 i01=sample(w0_h,w1_w,buffer,height,width,paddingMode);\n" -" M4 i10=sample(w1_h,w0_w,buffer,height,width,paddingMode);\n" -" M4 i11=sample(w1_h,w1_w,buffer,height,width,paddingMode);\n" -" \n" -" M4 f0=(M4)((M)(w1_w-w));\n" -" M4 f1=oneV-f0;\n" -" M4 h0=(M4)((M)(w1_h-h));\n" -" M4 h1=oneV-h0;\n" -" M4 i0=i00*f0+i01*f1;\n" -" M4 i1=i10*f0+i11*f1;\n" -" return i0*h0+i1*h1;\n" -"}\n" -"kernel void grid_sample(const device M4 *input [[buffer(0)]],\n" -" const device M *grid [[buffer(1)]],\n" -" device M4 *output [[buffer(2)]],\n" -" constant grid_sample_params &p [[buffer(3)]],\n" -" uint3 gid [[thread_position_in_grid]]) {\n" -" if ((int)gid.x >= p.outW || (int)gid.y >= p.outH || (int)gid.z >= p.batches)\n" -" return;\n" -" int gridPos=gid.z*p.outH*p.outW*2+gid.y*p.outW*2+gid.x*2;\n" -" auto x=getPosition(grid[gridPos+0],p.inW,p.alignCorners,p.paddingMode);\n" -" auto y=getPosition(grid[gridPos+1],p.inH,p.alignCorners,p.paddingMode);\n" -" \n" -" const int channelC4=(p.channels+3)/4;\n" -" for (int c=0; c(in,out,s,gid);\n" "}\n" -"struct SamplerInfo {\n" -" uint4 stride;//stride[3]+offset\n" -" uint4 size;//size[3]+totalSize\n" -" uint4 extent;//dstStride[3]+dstOffset\n" -"};\n" -"struct MemsetInfo {\n" -" int4 V;\n" -" uint4 size;\n" -"};\n" -"kernel void fill_intx4(device int4 *out [[buffer(0)]],\n" -" constant MemsetInfo &info [[buffer(1)]],\n" -" uint3 gid [[thread_position_in_grid]]) {\n" -" if (gid.x\n" "static inline void template_NHWC_to_NCHW(const device IType* in,\n" " device OType* out,constant tensor_shape &s,uint2 gid) {\n" @@ -1161,6 +994,63 @@ const char* shader_MetalLayerNorm_metal = " out_data[gid.x]=(M4)(norm);\n" " }\n" "}\n" +"kernel void layernorm_x1_rms(const device M *in [[buffer(0)]],\n" +" device M *out [[buffer(1)]],\n" +" constant layernorm_constants& cst [[buffer(2)]],\n" +" const device float *gamma [[buffer(3)]],\n" +" const device float *beta [[buffer(4)]],\n" +" uint2 gid [[thread_position_in_grid]]) {\n" +" if ((int)gid.x >= cst.inside || (int)gid.y >= cst.outside) {\n" +" return;\n" +" }\n" +" auto in_data=in+gid.y*cst.inside;\n" +" auto out_data=out+gid.y*cst.inside;\n" +" float square_sum=0.0f;\n" +" \n" +" for(int i=0; i= cst.inside/4 || (int)gid.y >= cst.outside) {\n" +" return;\n" +" }\n" +" auto in_data=in+gid.y*cst.inside/4;\n" +" auto out_data=out+gid.y*cst.inside/4;\n" +" float square_sum=0.0f;\n" +" for(int i=0; i)buffer { count = 50; } NSUInteger min_time = UINT_MAX; - if(rt->getTuneLevel() != Never) + if(rt->getTuneLevel() != Never && buffers.count > 0) { //get original trick time { diff --git a/source/backend/metal/MetalBackend.hpp b/source/backend/metal/MetalBackend.hpp index 93529c1ab..fe7107911 100644 --- a/source/backend/metal/MetalBackend.hpp +++ b/source/backend/metal/MetalBackend.hpp @@ -16,6 +16,7 @@ #include "MetalDefine.h" #include #include +#include //#include "MNNMetalContext.h" #include "MetalCache_generated.h" using namespace MetalCache; @@ -89,7 +90,7 @@ class MetalRuntime : public Runtime { }; -class MetalRuntimeAllocator : public EagerBufferAllocator::Allocator { +class MetalRuntimeAllocator : public BufferAllocator::Allocator { public: class MetalBufferAlloc { public: @@ -101,7 +102,7 @@ class MetalRuntimeAllocator : public EagerBufferAllocator::Allocator { } ~MetalBufferAlloc(){}; private: - id mBuffer = nil; + id mBuffer; }; MetalRuntimeAllocator(id device): mDevice(device) { @@ -139,9 +140,10 @@ class MetalBackend : public Backend { static void setTensor(MNN::Tensor* tensor, id encoder, int index); static std::pair, int> getBuffer(MNN::Tensor* tensor); size_t getTensorSizeInBytes(const Tensor* tensor) const; - + virtual bool onSelectDynamicAllocator(int index, int maxIndex) override; id getHostBuffer(size_t size) const; id getConstBuffer(size_t size) const; + void returnConstBuffer(id buffer) const; id makeComputePipelineWithSourceOption(const char* csource, const char* cname, MTLCompileOptions *options) const; public: MetalBackend(std::shared_ptr staticMem, const MetalRuntime* runtime, bool usefp16AsFp32); @@ -186,9 +188,7 @@ class MetalBackend : public Backend { bool isCommandEncoderSet(); - EagerBufferAllocator *getBufferPool() const { - return mBufferPool.get(); - } + BufferAllocator* getBufferPool() const; EagerBufferAllocator *getStaticBufferPool() const { return mStaticBufferPool.get(); } @@ -208,17 +208,18 @@ class MetalBackend : public Backend { return mUseFloatAsFp16; } private: + MetalRuntimeAllocator::MetalBufferAlloc mEmptyMem; id getCommandBufferForBufferCopy() const; id getCommandBufferForNet() const; id encoder_net() const; mutable id _commandBuffer = nil; mutable id _commandBuffer_net = nil; mutable id _waiting = nil; + mutable std::queue> mHoldBuffers; id _commandQueue; const MetalRuntime* mRuntime; - std::vector> mHoldBuffers; id mShapeH2D; id mShapeD2H; mutable NSUInteger mEncoderCount = 0; @@ -228,7 +229,8 @@ class MetalBackend : public Backend { std::vector> mOpEncoders; mutable id mComputeEncoder = nil; - std::shared_ptr mBufferPool; + std::shared_ptr mBufferPool; + std::shared_ptr mBufferPoolShapeImmutable; std::shared_ptr mStaticBufferPool; private: @@ -238,6 +240,7 @@ class MetalBackend : public Backend { void onCopyDeviceToDevice(const Tensor *src, const Tensor *dst, id encoder, id shape) const; bool mUseFloatAsFp16; bool mIsIphone = false; + BufferAllocator* mCurrentAllocator = nullptr; }; diff --git a/source/backend/metal/MetalBackend.mm b/source/backend/metal/MetalBackend.mm index 4f4616545..35636c6c3 100644 --- a/source/backend/metal/MetalBackend.mm +++ b/source/backend/metal/MetalBackend.mm @@ -8,7 +8,7 @@ #import "backend/metal/MetalBackend.hpp" #define MNN_METAL #import - +#define METAL_CONST_BUFFER_LIMIT 128 #if MNN_METAL_ENABLED #import #import "backend/metal/MNNMetalContext.h" @@ -29,6 +29,18 @@ int MNNMetalGetTensorContent(MNNMetalTensorContent* content, void* tensor) { namespace MNN { +static void _MetalApplyTensor(uint8_t* host, size_t offset, Tensor* t) { + // ptr of MetalBufferAlloc + t->buffer().device = (uint64_t)host; + auto des = TensorUtils::getDescribe(t); + des->extra.offset = offset; +} +static BufferAllocator* _createBufferAllocator(const Runtime* runtime, BufferAllocator* origin, bool secondResize) { + if (runtime->getAllocatorType() == Runtime::Allocator_Defer && secondResize) { + return new DeferBufferAllocator(BufferAllocator::Allocator::createRecurse(origin), 1024, _MetalApplyTensor); + } + return new EagerBufferAllocator(BufferAllocator::Allocator::createRecurse(origin), 1024); +} struct TunedInfo { std::vector> mInfos; }; @@ -53,14 +65,17 @@ int MNNMetalGetTensorContent(MNNMetalTensorContent* content, void* tensor) { map->insert(std::make_pair(t, c)); } -MetalBackend::MetalBackend(std::shared_ptr staticMem, const MetalRuntime* runtime, bool usefp16AsFp32) : Backend(MNN_FORWARD_METAL) { +MetalBackend::MetalBackend(std::shared_ptr staticMem, const MetalRuntime* runtime, bool usefp16AsFp32) : Backend(MNN_FORWARD_METAL), + mEmptyMem(nil) + { mRuntime = runtime; - mBufferPool.reset(new EagerBufferAllocator(EagerBufferAllocator::Allocator::createRecurse(staticMem.get()), 1024)); + auto ctx = (__bridge MNNMetalContext *)runtime->context(); + mBufferPool.reset(_createBufferAllocator(runtime, staticMem.get(), false)); + mCurrentAllocator = mBufferPool.get(); mStaticBufferPool = staticMem; mShapeH2D = getConstBuffer(4 * sizeof(int)); mShapeD2H = getConstBuffer(4 * sizeof(int)); mUseFloatAsFp16 = usefp16AsFp32; - auto ctx = (__bridge MNNMetalContext *)context(); mIsIphone = ctx.isIphone; if (runtime->getCommandQueue() == nil) { // one command queue can create only a few command buffer, so let each backend own a command queue @@ -93,7 +108,7 @@ int MNNMetalGetTensorContent(MNNMetalTensorContent* content, void* tensor) { class MetalMemRelease : public Backend::MemObj { public: - MetalMemRelease(MemChunk buffer, EagerBufferAllocator* allocator) { + MetalMemRelease(MemChunk buffer, BufferAllocator* allocator) { mBuffer = buffer; mAllocator = allocator; } @@ -105,7 +120,7 @@ MemChunk chunk() override { } private: MemChunk mBuffer; - EagerBufferAllocator* mAllocator; + BufferAllocator* mAllocator; }; size_t MetalBackend::getTensorSizeInBytes(const Tensor* tensor) const { auto format = TensorUtils::getDescribe(tensor)->dimensionFormat; @@ -153,38 +168,39 @@ MemChunk chunk() override { } // reuse if possible MemChunk buffer; - EagerBufferAllocator* allocator = nullptr; + BufferAllocator* allocator = nullptr; switch (storageType) { case Backend::STATIC: { buffer = mStaticBufferPool->alloc(size, false); allocator = mStaticBufferPool.get(); } break; case Backend::DYNAMIC: { - buffer = mBufferPool->alloc(size, false); - allocator = mBufferPool.get(); + buffer = mCurrentAllocator->alloc(size, false); + allocator = mCurrentAllocator; } break; case Backend::DYNAMIC_SEPERATE: { - buffer = mBufferPool->alloc(size, true); - allocator = mBufferPool.get(); + buffer = mCurrentAllocator->alloc(size, true); + allocator = mCurrentAllocator; } break; } - - if(nullptr == buffer.first) { - MNN_ERROR("onAcquireBuffer error!\n"); - return nullptr; - }; - - // ptr of MetalBufferAlloc - auto host = buffer.first; - ((Tensor*)_tensor)->buffer().device = (uint64_t)host; - auto des = TensorUtils::getDescribe(_tensor); - des->extra.offset = buffer.second; - + if (storageType == Backend::STATIC) { + if(nullptr == buffer.first) { + MNN_ERROR("onAcquireBuffer error!\n"); + return nullptr; + } + } else { + buffer.attach(tensor); + } + if (nullptr == buffer.first) { + _MetalApplyTensor((uint8_t*)(&mEmptyMem), 0, (Tensor*)_tensor); + } else { + _MetalApplyTensor((uint8_t*)buffer.first, buffer.second, (Tensor*)_tensor); + } return new MetalMemRelease(buffer, allocator); } bool MetalBackend::onClearBuffer() { - mBufferPool->release(true); + mCurrentAllocator->release(true); return true; } @@ -232,6 +248,26 @@ MemChunk chunk() override { mOpEncoderSet = true; } } +BufferAllocator* MetalBackend::getBufferPool() const { + return mCurrentAllocator; +} + +bool MetalBackend::onSelectDynamicAllocator(int index, int maxIndex) { + if (maxIndex > 2) { + return false; + } + if (maxIndex == 2 && mBufferPoolShapeImmutable.get() == nullptr) { + mBufferPoolShapeImmutable.reset(_createBufferAllocator(mRuntime, mStaticBufferPool.get(), true)); + mBufferPool.reset(_createBufferAllocator(mRuntime, mStaticBufferPool.get(), true)); + } + if (1 == index) { + mCurrentAllocator = mBufferPoolShapeImmutable.get(); + } else { + mCurrentAllocator = mBufferPool.get(); + } + return true; +} + bool MetalBackend::onGetTensorInfo(const Tensor* tensor, void* dstInfo) { if (nullptr == dstInfo) { return true; @@ -285,10 +321,21 @@ MemChunk chunk() override { } id MetalBackend::getConstBuffer(size_t size) const { + if (size < METAL_CONST_BUFFER_LIMIT) { + if (!mHoldBuffers.empty()) { + auto res = mHoldBuffers.front(); + mHoldBuffers.pop(); + return res; + } + size = METAL_CONST_BUFFER_LIMIT; + } auto context = (__bridge MNNMetalContext *)this->context(); auto buffer = [context newDeviceBuffer:size access:CPUReadWrite]; return buffer; } +void MetalBackend::returnConstBuffer(id buffer) const { + mHoldBuffers.push(buffer); +} MTLSize getTensorShape(id shape, const Tensor *tensor) { int s = 1, c = 1, b = 1; @@ -397,12 +444,13 @@ MTLSize getTensorShape(id shape, const Tensor *tensor) { _commandBuffer_net = nil; _commandBuffer = nil; wait(); + mCurrentAllocator->reset(); } ErrorCode MetalBackend::onResizeEnd() { auto ctx = (__bridge MNNMetalContext *)context(); mFrameEncodeCache = (!ctx.isCommitEachShader && mSupportDeferEncode); - return NO_ERROR; + return mCurrentAllocator->compute(); } void MetalBackend::onCopyHostToDevice(const Tensor *src, const Tensor *dst) const { @@ -411,7 +459,13 @@ MTLSize getTensorShape(id shape, const Tensor *tensor) { auto dfmt = TensorUtils::getDescribe(dst)->dimensionFormat; auto device = (id)((MetalRuntimeAllocator::MetalBufferAlloc *) (dst->deviceId()))->getBuffer(); auto floats = src->getType().code == halide_type_float; - + std::unique_ptr tempSrc; + if (sfmt == dfmt && sfmt == MNN_DATA_FORMAT_NC4HW4) { + tempSrc.reset(new Tensor(src, Tensor::CAFFE)); + MNNCPUCopyBuffer(src, tempSrc.get()); + src = tempSrc.get(); + sfmt = TensorUtils::getDescribe(src)->dimensionFormat; + } // For command queue from user, need user to make sure last frame's gpu work is ready bool needWait = !mRuntime->userSync(); // cast @@ -485,6 +539,16 @@ MTLSize getTensorShape(id shape, const Tensor *tensor) { auto dfmt = TensorUtils::getDescribe(dst)->dimensionFormat; auto device = (id)((MetalRuntimeAllocator::MetalBufferAlloc *)src->deviceId())->getBuffer(); auto floats = src->getType().code == halide_type_float; + std::shared_ptr tempDst; + if (sfmt == dfmt && sfmt == MNN_DATA_FORMAT_NC4HW4) { + tempDst.reset(new Tensor(dst, Tensor::CAFFE), [dst](void* t) { + auto tensor = (Tensor*)t; + MNNCPUCopyBuffer(tensor, dst); + delete tensor; + }); + dst = tempDst.get(); + dfmt = TensorUtils::getDescribe(dst)->dimensionFormat; + } // cast if (sfmt == dfmt || src->dimensions() <= 1) { if (floats && mUseFloatAsFp16) { @@ -808,7 +872,8 @@ MTLSize getTensorShape(id shape, const Tensor *tensor) { if (nil != sharedContext.queue) { rt->setCommandQueue(sharedContext.queue, true); } - if ((info.numThread & MNN_GPU_RECORD_OP) && nil == sharedContext.queue) { + bool supportDefer = info.numThread & MNN_GPU_RECORD_BATCH; + if ((!supportDefer) && nil == sharedContext.queue) { id queue = [sharedContext.device newCommandQueue]; rt->setCommandQueue(queue, false); } diff --git a/source/backend/metal/MetalBinary.mm b/source/backend/metal/MetalBinary.mm index 2f8cc7ab9..b9482ce84 100755 --- a/source/backend/metal/MetalBinary.mm +++ b/source/backend/metal/MetalBinary.mm @@ -65,7 +65,7 @@ CHECK(BinaryOpOperation_ATAN2, @"atan2(V0,V1)"); CHECK(BinaryOpOperation_SUB, @"V0-V1"); CHECK(BinaryOpOperation_MUL, @"V0*V1"); - CHECK(BinaryOpOperation_FLOORMOD, @"V0-floor(V0/V1)*V1"); + CHECK(BinaryOpOperation_FLOORMOD, @"V0-floor((float)V0/(float)V1)*V1"); CHECK(BinaryOpOperation_FLOORDIV, @"floor((float)V0/(float)V1)"); CHECK(BinaryOpOperation_MINIMUM, @"min(V0,V1)"); CHECK(BinaryOpOperation_MAXIMUM, @"max(V0,V1)"); diff --git a/source/backend/metal/MetalConvolution.mm b/source/backend/metal/MetalConvolution.mm index e6609b35b..e614b4df0 100755 --- a/source/backend/metal/MetalConvolution.mm +++ b/source/backend/metal/MetalConvolution.mm @@ -106,10 +106,10 @@ mPipeline = [context pipelineWithName:kernelName fp16:backend->useFp16InsteadFp32()]; NSArray *arr = [NSArray arrayWithObjects:(id)((MetalRuntimeAllocator::MetalBufferAlloc *)input->deviceId())->getBuffer(), (id)(((MetalRuntimeAllocator::MetalBufferAlloc *)output->deviceId()))->getBuffer(), - mConstBuffer, ((MetalRuntimeAllocator::MetalBufferAlloc *)mWeight->deviceId())->getBuffer(), mConstBuffer, ((MetalRuntimeAllocator::MetalBufferAlloc *)mBias->deviceId())->getBuffer(), nil]; + mConstBuffer, ((MetalRuntimeAllocator::MetalBufferAlloc *)mWeight->deviceId())->getBuffer(), ((MetalRuntimeAllocator::MetalBufferAlloc *)mBias->deviceId())->getBuffer(), nil]; const Tensor* weight = mWeight.get(); const Tensor* bias = mBias.get(); - int buffer_offset[] = {TensorUtils::getDescribe(input)->extra.offset, TensorUtils::getDescribe(output)->extra.offset, TensorUtils::getDescribe(weight)->extra.offset, TensorUtils::getDescribe(bias)->extra.offset, 0}; + int buffer_offset[] = {TensorUtils::getDescribe(input)->extra.offset, TensorUtils::getDescribe(output)->extra.offset, 0, TensorUtils::getDescribe(weight)->extra.offset, TensorUtils::getDescribe(bias)->extra.offset}; std::string name = [kernelName UTF8String] + mParam; auto ret = [context getGridAndThreadgroup:mPipeline gid:MTLSizeMake(gid_x, gid_y, gid_z) loop:10 buffer:arr runtime:rt shaderName:name offsets:buffer_offset queue:backend->queue()]; mThreads = std::make_pair(std::get<0>(ret), std::get<1>(ret)); @@ -140,10 +140,16 @@ NSArray *arr = [NSArray arrayWithObjects:(id)((MetalRuntimeAllocator::MetalBufferAlloc *)input->deviceId())->getBuffer(), (id)(((MetalRuntimeAllocator::MetalBufferAlloc *)output->deviceId()))->getBuffer(), - mConstBuffer, (((MetalRuntimeAllocator::MetalBufferAlloc *)mWeight->deviceId()))->getBuffer(), mConstBuffer, ((MetalRuntimeAllocator::MetalBufferAlloc *)mBias->deviceId())->getBuffer(), nil]; + mConstBuffer, (((MetalRuntimeAllocator::MetalBufferAlloc *)mWeight->deviceId()))->getBuffer(), ((MetalRuntimeAllocator::MetalBufferAlloc *)mBias->deviceId())->getBuffer(), nil]; const Tensor* weight = mWeight.get(); const Tensor* bias = mBias.get(); - int buffer_offset[] = {TensorUtils::getDescribe(input)->extra.offset, TensorUtils::getDescribe(output)->extra.offset, TensorUtils::getDescribe(weight)->extra.offset, TensorUtils::getDescribe(bias)->extra.offset, 0}; + int buffer_offset[] = { + TensorUtils::getDescribe(input)->extra.offset, + TensorUtils::getDescribe(output)->extra.offset, + 0, + TensorUtils::getDescribe(weight)->extra.offset, + TensorUtils::getDescribe(bias)->extra.offset + }; for(int knl_idx = 0; knl_idx < actual_kernel; knl_idx++) { id pipeline = [context pipelineWithName:shaderName[knl_idx] fp16:mtbn->useFp16InsteadFp32()]; @@ -196,8 +202,11 @@ if (inputs.size() > 1) { return nullptr; } + auto conv = op->main_as_Convolution2D(); + if (conv->common()->group() > 1) { + return nullptr; + } if (op->type() == OpType_Convolution) { - auto conv = op->main_as_Convolution2D(); auto input = inputs[0]; if (MetalConvolutionWinograd::isValid(conv, inputs[0], outputs[0])) { return new MetalConvolutionWinograd(backend, op); diff --git a/source/backend/metal/MetalConvolution1x1.mm b/source/backend/metal/MetalConvolution1x1.mm index aee7ab35d..b768cd4d4 100644 --- a/source/backend/metal/MetalConvolution1x1.mm +++ b/source/backend/metal/MetalConvolution1x1.mm @@ -75,35 +75,41 @@ ::memcpy(mConstBuffer.contents, constants, sizeof(constants)); MetalRuntime* rt = (MetalRuntime *)backend->runtime(); - + if (ow == input->width() && oh == input->height() && mDequantScale.get()) { + NSUInteger gid_x = UP_DIV(ow * oh, 4); + NSUInteger gid_y = oc_4; + NSUInteger gid_z = ob; + std::string name = "conv1x1_g1z4_w8"; + mPipeline = [context pipelineWithName:@"conv1x1_g1z4_w8" fp16:backend->useFp16InsteadFp32()]; + if (mDequantBits == 4) { + mPipeline = [context pipelineWithName:@"conv1x1_g1z4_w4" fp16:backend->useFp16InsteadFp32()]; + name = "conv1x1_g1z4_w4"; + } + NSArray *arr = [NSArray arrayWithObjects:(id)((MetalRuntimeAllocator::MetalBufferAlloc *)input->deviceId())->getBuffer(), + (id)(((MetalRuntimeAllocator::MetalBufferAlloc *)output->deviceId()))->getBuffer(), + mConstBuffer, (((MetalRuntimeAllocator::MetalBufferAlloc *)mWeight->deviceId()))->getBuffer(), + ((MetalRuntimeAllocator::MetalBufferAlloc *)mBias->deviceId())->getBuffer(), + (((MetalRuntimeAllocator::MetalBufferAlloc *)mDequantScale->deviceId()))->getBuffer(), + (((MetalRuntimeAllocator::MetalBufferAlloc *)mDequantZero->deviceId()))->getBuffer(), nil]; + const Tensor* weight = mWeight.get(); + const Tensor* bias = mBias.get(); + int buffer_offset[] = { + TensorUtils::getDescribe(input)->extra.offset, + TensorUtils::getDescribe(output)->extra.offset, + 0, + TensorUtils::getDescribe(weight)->extra.offset, + TensorUtils::getDescribe(bias)->extra.offset, + TensorUtils::getDescribe(mDequantScale.get())->extra.offset, + TensorUtils::getDescribe(mDequantZero.get())->extra.offset, + 0}; + + MetalRuntime *rt = (MetalRuntime *)backend->runtime(); + auto ret = [context getGridAndThreadgroup:mPipeline gid:MTLSizeMake(gid_x, gid_y, gid_z) loop:10 buffer:arr runtime:rt shaderName:name offsets:buffer_offset queue:backend->queue()]; + mThreads = std::make_pair(std::get<0>(ret), std::get<1>(ret)); + return NO_ERROR; + } if(rt->getTuneLevel() == Never) { - if (ow == input->width() && oh == input->height() && mDequantScale.get()) { - NSUInteger gid_x = UP_DIV(ow * oh, 4); - NSUInteger gid_y = oc_4; - NSUInteger gid_z = ob; - std::string name = "conv1x1_g1z4_w8"; - mPipeline = [context pipelineWithName:@"conv1x1_g1z4_w8" fp16:backend->useFp16InsteadFp32()]; - if (mDequantBits == 4) { - mPipeline = [context pipelineWithName:@"conv1x1_g1z4_w4" fp16:backend->useFp16InsteadFp32()]; - name = "conv1x1_g1z4_w4"; - } - - - NSArray *arr = [NSArray arrayWithObjects:(id)((MetalRuntimeAllocator::MetalBufferAlloc *)input->deviceId())->getBuffer(), - (id)(((MetalRuntimeAllocator::MetalBufferAlloc *)output->deviceId()))->getBuffer(), - mConstBuffer, (((MetalRuntimeAllocator::MetalBufferAlloc *)mWeight->deviceId()))->getBuffer(), - ((MetalRuntimeAllocator::MetalBufferAlloc *)mBias->deviceId())->getBuffer(), - (((MetalRuntimeAllocator::MetalBufferAlloc *)mDequantScale->deviceId()))->getBuffer(), - (((MetalRuntimeAllocator::MetalBufferAlloc *)mDequantZero->deviceId()))->getBuffer(), nil]; - - const Tensor* weight = mWeight.get(); - const Tensor* bias = mBias.get(); - int buffer_offset[] = {TensorUtils::getDescribe(input)->extra.offset, TensorUtils::getDescribe(output)->extra.offset, TensorUtils::getDescribe(weight)->extra.offset, TensorUtils::getDescribe(bias)->extra.offset, 0}; - - MetalRuntime *rt = (MetalRuntime *)backend->runtime(); - auto ret = [context getGridAndThreadgroup:mPipeline gid:MTLSizeMake(gid_x, gid_y, gid_z) loop:10 buffer:arr runtime:rt shaderName:name offsets:buffer_offset queue:backend->queue()]; - mThreads = std::make_pair(std::get<0>(ret), std::get<1>(ret)); - } else if (ow * oh >= 128) { + if (ow * oh >= 128) { NSUInteger gid_x = UP_DIV(ow * oh, 8); NSUInteger gid_y = oc_4; NSUInteger gid_z = ob; @@ -116,7 +122,7 @@ const Tensor* weight = mWeight.get(); const Tensor* bias = mBias.get(); - int buffer_offset[] = {TensorUtils::getDescribe(input)->extra.offset, TensorUtils::getDescribe(output)->extra.offset, TensorUtils::getDescribe(weight)->extra.offset, TensorUtils::getDescribe(bias)->extra.offset, 0}; + int buffer_offset[] = {TensorUtils::getDescribe(input)->extra.offset, TensorUtils::getDescribe(output)->extra.offset, 0, TensorUtils::getDescribe(weight)->extra.offset, TensorUtils::getDescribe(bias)->extra.offset, 0}; std::string name = "conv1x1_g1z8"; MetalRuntime *rt = (MetalRuntime *)backend->runtime(); auto ret = [context getGridAndThreadgroup:mPipeline gid:MTLSizeMake(gid_x, gid_y, gid_z) loop:10 buffer:arr runtime:rt shaderName:name offsets: buffer_offset queue:backend->queue()]; @@ -133,7 +139,7 @@ mConstBuffer, (((MetalRuntimeAllocator::MetalBufferAlloc *)mWeight->deviceId()))->getBuffer(), ((MetalRuntimeAllocator::MetalBufferAlloc *)mBias->deviceId())->getBuffer(), nil]; const Tensor* weight = mWeight.get(); const Tensor* bias = mBias.get(); - int buffer_offset[] = {TensorUtils::getDescribe(input)->extra.offset, TensorUtils::getDescribe(output)->extra.offset, TensorUtils::getDescribe(weight)->extra.offset, TensorUtils::getDescribe(bias)->extra.offset, 0}; + int buffer_offset[] = {TensorUtils::getDescribe(input)->extra.offset, TensorUtils::getDescribe(output)->extra.offset, 0, TensorUtils::getDescribe(weight)->extra.offset, TensorUtils::getDescribe(bias)->extra.offset, 0}; std::string name = "conv1x1_g1z4"; MetalRuntime *rt = (MetalRuntime *)backend->runtime(); auto ret = [context getGridAndThreadgroup:mPipeline gid:MTLSizeMake(gid_x, gid_y, gid_z) loop:10 buffer:arr runtime:rt shaderName:name offsets: buffer_offset queue:backend->queue()]; @@ -141,67 +147,42 @@ //printf("conv1x1_z4, %d %d %d %d\n", ow, oh, oc_4, ic_4); } } else { - if (ow == input->width() && oh == input->height() && mDequantScale.get()) { - NSUInteger gid_x = UP_DIV(ow * oh, 4); - NSUInteger gid_y = oc_4; - NSUInteger gid_z = ob; - std::string name = "conv1x1_g1z4_w8"; - mPipeline = [context pipelineWithName:@"conv1x1_g1z4_w8" fp16:backend->useFp16InsteadFp32()]; - if (mDequantBits == 4) { - mPipeline = [context pipelineWithName:@"conv1x1_g1z4_w4" fp16:backend->useFp16InsteadFp32()]; - name = "conv1x1_g1z4_w4"; - } - - NSArray *arr = [NSArray arrayWithObjects:(id)((MetalRuntimeAllocator::MetalBufferAlloc *)input->deviceId())->getBuffer(), - (id)(((MetalRuntimeAllocator::MetalBufferAlloc *)output->deviceId()))->getBuffer(), - mConstBuffer, (((MetalRuntimeAllocator::MetalBufferAlloc *)mWeight->deviceId()))->getBuffer(), - ((MetalRuntimeAllocator::MetalBufferAlloc *)mBias->deviceId())->getBuffer(), - (((MetalRuntimeAllocator::MetalBufferAlloc *)mDequantScale->deviceId()))->getBuffer(), - (((MetalRuntimeAllocator::MetalBufferAlloc *)mDequantZero->deviceId()))->getBuffer(), nil]; - - const Tensor* weight = mWeight.get(); - const Tensor* bias = mBias.get(); - int buffer_offset[] = {TensorUtils::getDescribe(input)->extra.offset, TensorUtils::getDescribe(output)->extra.offset, TensorUtils::getDescribe(weight)->extra.offset, TensorUtils::getDescribe(bias)->extra.offset, 0}; - MetalRuntime *rt = (MetalRuntime *)backend->runtime(); - auto ret = [context getGridAndThreadgroup:mPipeline gid:MTLSizeMake(gid_x, gid_y, gid_z) loop:10 buffer:arr runtime:rt shaderName:name offsets:buffer_offset queue:backend->queue()]; - mThreads = std::make_pair(std::get<0>(ret), std::get<1>(ret)); - } else { - // {@"conv1x1_w4h2", @"conv1x1_w2h2", @"conv1x1_w2c2", @"conv1x1_w1h1" }; - const int total_kernel = 5; - NSString* shaderName[total_kernel] = {@"conv1x1_w4h2", @"conv1x1_w2h2", @"conv1x1_w2c2", @"conv1x1_w2h2c2", @"conv1x1_w4h4"}; - int itemW[total_kernel] = {4, 2, 2, 2, 4}; - int itemH[total_kernel] = {2, 2, 1, 2, 4}; - int itemC[total_kernel] = {4, 4, 8, 8, 4}; - - int actual_kernel = 5; - std::pair min_cost(INT_MAX, 0);//(min_time, min_index) + NSString* shaderName[] = {@"conv1x1_w4h2", @"conv1x1_w2h2", @"conv1x1_w4h4", @"conv1x1_w2c2", @"conv1x1_w2h2c2"}; + int itemW[] = {4, 2, 4, 2, 2}; + int itemH[] = {2, 2, 4, 1, 2}; + int itemC[] = {4, 4, 4, 8, 8}; + int actual_kernel = 5; + if (oc_4 % 2 != 0) { + // Don't unrool c for avoid memory exceed + actual_kernel = 3; + } + std::pair min_cost(INT_MAX, 0);//(min_time, min_index) + + NSArray *arr = [NSArray arrayWithObjects:(id)((MetalRuntimeAllocator::MetalBufferAlloc *)input->deviceId())->getBuffer(), + (id)(((MetalRuntimeAllocator::MetalBufferAlloc *)output->deviceId()))->getBuffer(), + mConstBuffer, (((MetalRuntimeAllocator::MetalBufferAlloc *)mWeight->deviceId()))->getBuffer(), ((MetalRuntimeAllocator::MetalBufferAlloc *)mBias->deviceId())->getBuffer(), nil]; + const Tensor* weight = mWeight.get(); + const Tensor* bias = mBias.get(); + int buffer_offset[] = {TensorUtils::getDescribe(input)->extra.offset, TensorUtils::getDescribe(output)->extra.offset, 0, TensorUtils::getDescribe(weight)->extra.offset, TensorUtils::getDescribe(bias)->extra.offset, 0}; + + for(int knl_idx = 0; knl_idx < actual_kernel; knl_idx++) { + id pipeline = [context pipelineWithName:shaderName[knl_idx] fp16:backend->useFp16InsteadFp32()]; + NSUInteger gid_x = UP_DIV(ow, itemW[knl_idx]); + NSUInteger gid_y = UP_DIV(oh, itemH[knl_idx]); + NSUInteger gid_z = ob * UP_DIV(oc, itemC[knl_idx]); - NSArray *arr = [NSArray arrayWithObjects:(id)((MetalRuntimeAllocator::MetalBufferAlloc *)input->deviceId())->getBuffer(), - (id)(((MetalRuntimeAllocator::MetalBufferAlloc *)output->deviceId()))->getBuffer(), - mConstBuffer, (((MetalRuntimeAllocator::MetalBufferAlloc *)mWeight->deviceId()))->getBuffer(), ((MetalRuntimeAllocator::MetalBufferAlloc *)mBias->deviceId())->getBuffer(), nil]; - const Tensor* weight = mWeight.get(); - const Tensor* bias = mBias.get(); - int buffer_offset[] = {TensorUtils::getDescribe(input)->extra.offset, TensorUtils::getDescribe(output)->extra.offset, TensorUtils::getDescribe(weight)->extra.offset, TensorUtils::getDescribe(bias)->extra.offset, 0}; + std::string name = [shaderName[knl_idx] UTF8String]; + auto ret = [context getGridAndThreadgroup:pipeline gid:MTLSizeMake(gid_x, gid_y, gid_z) loop:10 buffer:arr runtime:rt shaderName:name offsets:buffer_offset queue:backend->queue()]; - for(int knl_idx = 0; knl_idx < actual_kernel; knl_idx++) { - id pipeline = [context pipelineWithName:shaderName[knl_idx] fp16:backend->useFp16InsteadFp32()]; - NSUInteger gid_x = UP_DIV(ow, itemW[knl_idx]); - NSUInteger gid_y = UP_DIV(oh, itemH[knl_idx]); - NSUInteger gid_z = ob * UP_DIV(oc, itemC[knl_idx]); - - std::string name = [shaderName[knl_idx] UTF8String]; - auto ret = [context getGridAndThreadgroup:pipeline gid:MTLSizeMake(gid_x, gid_y, gid_z) loop:10 buffer:arr runtime:rt shaderName:name offsets:buffer_offset queue:backend->queue()]; - - if(min_cost.first > std::get<2>(ret)) { - min_cost.first = std::get<2>(ret); - min_cost.second = knl_idx; - mThreads = std::make_pair(std::get<0>(ret), std::get<1>(ret)); - } - //printf("conv1x1 idx:%d, global:%d %d %d, local:%d %d %d, min_cost:%d\n", knl_idx, (int)retTune.second.first.width, (int)retTune.second.first.height, (int)retTune.second.first.depth, (int)retTune.second.second.width, (int)retTune.second.second.height, (int)retTune.second.second.depth, (int)retTune.first); + if(min_cost.first > std::get<2>(ret)) { + min_cost.first = std::get<2>(ret); + min_cost.second = knl_idx; + mThreads = std::make_pair(std::get<0>(ret), std::get<1>(ret)); } - //printf("conv1x1 idx:%d, min_cost:%d\n", (int)min_cost.second, (int)min_cost.first); - mPipeline = [context pipelineWithName:shaderName[min_cost.second] fp16:backend->useFp16InsteadFp32()]; + //printf("conv1x1 idx:%d, global:%d %d %d, local:%d %d %d, min_cost:%d\n", knl_idx, (int)retTune.second.first.width, (int)retTune.second.first.height, (int)retTune.second.first.depth, (int)retTune.second.second.width, (int)retTune.second.second.height, (int)retTune.second.second.depth, (int)retTune.first); } + //printf("conv1x1 idx:%d, min_cost:%d\n", (int)min_cost.second, (int)min_cost.first); + mPipeline = [context pipelineWithName:shaderName[min_cost.second] fp16:backend->useFp16InsteadFp32()]; } return NO_ERROR; diff --git a/source/backend/metal/MetalGridSample.hpp b/source/backend/metal/MetalGridSample.hpp index b5c2f6493..34001114e 100644 --- a/source/backend/metal/MetalGridSample.hpp +++ b/source/backend/metal/MetalGridSample.hpp @@ -18,7 +18,7 @@ namespace MNN { class MetalGridSample : public MetalExecution { public: - MetalGridSample(Backend *backend, const GridSample* gridSample); + MetalGridSample(Backend *backend, const GridSample* gridSample, id pipeline); virtual ~MetalGridSample() = default; virtual void onEncode(const std::vector &inputs, const std::vector &outputs, id encoder) override; virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; diff --git a/source/backend/metal/MetalGridSample.mm b/source/backend/metal/MetalGridSample.mm index dafb4014e..ed66b6748 100644 --- a/source/backend/metal/MetalGridSample.mm +++ b/source/backend/metal/MetalGridSample.mm @@ -12,41 +12,276 @@ #if MNN_METAL_ENABLED namespace MNN { -MetalGridSample::MetalGridSample(Backend *backend, const GridSample *gridSample) +static const char* gGridSampler = R"metal( +#include +using namespace metal; +#if GRID3D +#define CON 3 +#define CODVEC float3 +#define CODVECINT int3 +#else +#define CON 2 +#define CODVEC float2 +#define CODVECINT int2 +#endif + +struct grid_sample_params { + int batches; + int channels; + int inH; + int inW; + int outH; + int outW; + int mode; + int paddingMode; + int alignCorners; + int inD; + int outD; +}; + +static float getPosition(float x, int range, int alignCorners, int paddingMode) { + if (paddingMode == 2/*GridSamplePaddingMode_REFLECTION*/) { + // if x is on the left side of -1.0, move it to the right side of 1.0 + if (x < -1.0f) { + x = x + ::ceil(1 - x) * 4; + } + // reflect + if (x > 1.0f) { + float l = x - 1.0f; + int reflectionNum = ::floor(l / 2.0); + float offset = l - reflectionNum * 2.0f; + x = (reflectionNum % 2 == 0) ? (1 - offset) : (-1.0f + offset); + } + } + + float a = alignCorners ? 1.0f : 0.0f; + float b = alignCorners ? 0.0f : 1.0f; + return ((1 + x) * (range - a) - b) / 2.0f; +} + +static int CLAMP(int v, int min, int max) { + if ((v) < min) { + (v) = min; + } else if ((v) > max) { + (v) = max; + } + return v; +} + +#if GRID3D +static T sample(int d, int h, int w, const device T *buffer, int depth, int height, int width, int paddingMode) { + if (h < 0 || h >= height || w < 0 || w >= width || d < 0 || d >= depth) { + if (paddingMode == 0) { + return 0.0f; + } + h = CLAMP(h, 0, height - 1); + w = CLAMP(w, 0, width - 1); + d = CLAMP(d, 0, depth - 1); + } + return buffer[d * height * width + h * width + w]; +} + +static T interpolate(float d, float h, float w, const device T *buffer, int depth, int height, int width, int mode, + int paddingMode) { + if (mode == 1/*GridSampleMode_NEAREST*/) { + int nd = ::floor(d+0.5f); + int nh = ::floor(h+0.5f); + int nw = ::floor(w+0.5f); + return sample(nd, nh, nw, buffer, depth, height, width, paddingMode); + } + + // mode == GridSampleMode_BILINEAR + int w0_d = ::floor(d); + int w0_h = ::floor(h); + int w0_w = ::floor(w); + int w1_d = w0_d + 1; + int w1_h = w0_h + 1; + int w1_w = w0_w + 1; + T oneV = (T)((ftype)1.0f); + + T i000 = sample(w0_d, w0_h, w0_w, buffer, depth, height, width, paddingMode); + T i001 = sample(w0_d, w0_h, w1_w, buffer, depth, height, width, paddingMode); + T i010 = sample(w0_d, w1_h, w0_w, buffer, depth, height, width, paddingMode); + T i011 = sample(w0_d, w1_h, w1_w, buffer, depth, height, width, paddingMode); + T i100 = sample(w1_d, w0_h, w0_w, buffer, depth, height, width, paddingMode); + T i101 = sample(w1_d, w0_h, w1_w, buffer, depth, height, width, paddingMode); + T i110 = sample(w1_d, w1_h, w0_w, buffer, depth, height, width, paddingMode); + T i111 = sample(w1_d, w1_h, w1_w, buffer, depth, height, width, paddingMode); + + + T f0 = (T)((ftype)(w1_w - w)); + T f1 = oneV - f0; + T h0 = (T)((ftype)(w1_h - h)); + T h1 = oneV - h0; + T d0 = (T)((ftype)(w1_d - d)); + T d1 = oneV - d0; + + T i00 = i000 * f0 + i001 * f1; + T i01 = i010 * f0 + i011 * f1; + T i10 = i100 * f0 + i101 * f1; + T i11 = i110 * f0 + i111 * f1; + T i0 = i00 * h0 + i01 * h1; + T i1 = i10 * h0 + i11 * h1; + + return i0 * d0 + i1 * d1; +} +#else +static T sample(int h, int w, const device T *buffer, int height, int width, int paddingMode) { + if (h < 0 || h >= height || w < 0 || w >= width) { + if (paddingMode == 0/*GridSamplePaddingMode_ZEROS*/) { + return 0.0f; + } + // Clearly, CLAMP is the right way to go for GridSamplePaddingMode_BORDER + // For GridSamplePaddingMode_REFLECTION, since we have reflected the values into (-1, 1), + // the leftover reflections degrade to GridSamplePaddingMode_BORDER + h = CLAMP(h, 0, height - 1); + w = CLAMP(w, 0, width - 1); + } + + return buffer[h * width + w]; +} + +static T interpolate(float h, float w, const device T *buffer, int height, int width, int mode, + int paddingMode) { + if (mode == 1/*GridSampleMode_NEAREST*/) { + int nh = ::floor(h+0.5f); + int nw = ::floor(w+0.5f); + return sample(nh, nw, buffer, height, width, paddingMode); + } + + // mode == GridSampleMode_BILINEAR + int w0_h = ::floor(h); + int w0_w = ::floor(w); + int w1_h = w0_h + 1; + int w1_w = w0_w + 1; + T oneV = (T)((ftype)1.0f); + + T i00 = sample(w0_h, w0_w, buffer, height, width, paddingMode); + T i01 = sample(w0_h, w1_w, buffer, height, width, paddingMode); + T i10 = sample(w1_h, w0_w, buffer, height, width, paddingMode); + T i11 = sample(w1_h, w1_w, buffer, height, width, paddingMode); + + + T f0 = (T)((ftype)(w1_w - w)); + T f1 = oneV - f0; + T h0 = (T)((ftype)(w1_h - h)); + T h1 = oneV - h0; + + T i0 = i00 * f0 + i01 * f1; + T i1 = i10 * f0 + i11 * f1; + + return i0 * h0 + i1 * h1; +} +#endif + +kernel void main0(const device T *input [[buffer(0)]], + const device ftype *grid [[buffer(1)]], + device T *output [[buffer(2)]], + constant grid_sample_params &p [[buffer(3)]], + uint3 gid [[thread_position_in_grid]]) { + if ((int)gid.x >= p.outW || (int)gid.y >= p.outH * p.outD || (int)gid.z >= p.batches) + return; + + int gridPos = gid.z*p.outH*p.outW*CON + gid.y*p.outW*CON + gid.x*CON; + auto x = getPosition(grid[gridPos+0], p.inW, p.alignCorners, p.paddingMode); + auto y = getPosition(grid[gridPos+1], p.inH, p.alignCorners, p.paddingMode); +#if GRID3D + auto z = getPosition(grid[gridPos+2], p.inD, p.alignCorners, p.paddingMode); +#endif + + const int channelC4 = (p.channels + 3) / 4; + for (int c = 0; c < channelC4; ++ c) { + auto outputPos = gid.z*channelC4*p.outH*p.outW + c*p.outH*p.outW + gid.y*p.outW + gid.x; + auto inputPtr = input + gid.z*channelC4*p.inH*p.inW + c*p.inH*p.inW; +#if GRID3D + output[outputPos] = interpolate(z, y, x, inputPtr, p.inD, p.inH, p.inW, p.mode, p.paddingMode); +#else + output[outputPos] = interpolate(y, x, inputPtr, p.inH, p.inW, p.mode, p.paddingMode); +#endif + } +} + +)metal"; + +static id _createPipeline(MetalBackend* mtbn, const GridSample *gridSample, Tensor* outputTensor) { + int dims = outputTensor->dimensions(); + std::string T; + std::string ftype; + if (mtbn->useFp16InsteadFp32()) { + T = "half4"; + ftype = "half"; + } else { + T = "float4"; + ftype = "float"; + } + std::string grid3d; + if (dims == 5) { + grid3d = "1"; + } else { + grid3d = "0"; + } + std::vector keys = { + T, + grid3d, + "gridsampler", + }; + auto pipeline = mtbn->runtime()->findPipeline(keys); + if (nil == pipeline) { + MTLCompileOptions *compileOptions = [[MTLCompileOptions alloc] init]; + compileOptions.preprocessorMacros = @{ + @"T" : @(T.c_str()), + @"GRID3D": @(grid3d.c_str()), + @"ftype":@(ftype.c_str()), + }; + pipeline = mtbn->makeComputePipelineWithSourceOption(gGridSampler, "main0", compileOptions); + mtbn->runtime()->insertPipeline(keys, pipeline); + } + return pipeline; +} +MetalGridSample::MetalGridSample(Backend *backend, const GridSample *gridSample, id pipeline) : MetalExecution(backend) { mMode = gridSample->mode(); mPaddingMode = gridSample->paddingMode(); mAlignCorners = gridSample->alignCorners(); - auto metal_backend = static_cast(this->backend()); - auto context = (__bridge MNNMetalContext *)metal_backend->context(); - mParams = [context newDeviceBuffer:9*sizeof(int) access:CPUWriteOnly]; + auto mtbn = static_cast(this->backend()); + auto context = (__bridge MNNMetalContext *)mtbn->context(); + mParams = [context newDeviceBuffer:11*sizeof(int) access:CPUWriteOnly]; + mPipeline = pipeline; } ErrorCode MetalGridSample::onResize(const std::vector &inputs, const std::vector &outputs) { auto inputTensor = inputs[0]; auto outputTensor = outputs[0]; + int dims = outputTensor->dimensions(); - ((int *)mParams.contents)[0] = inputTensor->batch();//inputTensor->buffer().dim[0].extent; // batches - ((int *)mParams.contents)[1] = inputTensor->channel();//->buffer().dim[1].extent; // channels - ((int *)mParams.contents)[2] = inputTensor->height();//buffer().dim[2].extent; // inH - ((int *)mParams.contents)[3] = inputTensor->width();//buffer().dim[3].extent; // inW - ((int *)mParams.contents)[4] = outputTensor->height();//->buffer().dim[2].extent; // outH - ((int *)mParams.contents)[5] = outputTensor->width();//->buffer().dim[3].extent; // outW + ((int *)mParams.contents)[0] = inputTensor->length(0);//inputTensor->buffer().dim[0].extent; // batches + ((int *)mParams.contents)[1] = inputTensor->length(1);//->buffer().dim[1].extent; // channels + ((int *)mParams.contents)[2] = inputTensor->length(dims-2);//buffer().dim[2].extent; // inH + ((int *)mParams.contents)[3] = inputTensor->length(dims-1);//buffer().dim[3].extent; // inW + ((int *)mParams.contents)[4] = outputTensor->length(dims-2);//->buffer().dim[2].extent; // outH + ((int *)mParams.contents)[5] = outputTensor->length(dims-1);//->buffer().dim[3].extent; // outW ((int *)mParams.contents)[6] = mMode; ((int *)mParams.contents)[7] = mPaddingMode; ((int *)mParams.contents)[8] = mAlignCorners; + if (outputTensor->dimensions() == 5) { + ((int *)mParams.contents)[9] = inputTensor->length(dims-3); + ((int *)mParams.contents)[10] = outputTensor->length(dims-3); + } else { + ((int *)mParams.contents)[9] = 1; + ((int *)mParams.contents)[10] = 1; + } auto backend = static_cast(this->backend()); auto context = (__bridge MNNMetalContext *)backend->context(); - mPipeline = [context pipelineWithName:@"grid_sample" fp16:backend->useFp16InsteadFp32()]; int batches = ((int *)mParams.contents)[0]; int channels = ((int *)mParams.contents)[1]; int outH = ((int *)mParams.contents)[4]; int outW = ((int *)mParams.contents)[5]; - mThreads = [context computeBestGroupAndLocal:mPipeline threads:MTLSizeMake(outW, outH, batches)]; + int outD = ((int *)mParams.contents)[10]; + mThreads = [context computeBestGroupAndLocal:mPipeline threads:MTLSizeMake(outW, outH * outD, batches)]; //printf("re:%d %d %d, %d %d %d, %d %d\n", mThreads.first.width, mThreads.first.height, mThreads.first.depth, mThreads.second.width, mThreads.second.height, mThreads.second.depth, ((int *)mParams.contents)[3], ((int *)mParams.contents)[2]); return NO_ERROR; @@ -54,9 +289,9 @@ void MetalGridSample::onEncode(const std::vector &inputs, const std::vector &outputs, id encoder) { [encoder setComputePipelineState:mPipeline]; - [encoder setBuffer:(id)((MetalRuntimeAllocator::MetalBufferAlloc *)inputs[0]->deviceId())->getBuffer() offset:TensorUtils::getDescribe(inputs[0])->extra.offset atIndex:0]; - [encoder setBuffer:(id)((MetalRuntimeAllocator::MetalBufferAlloc *)inputs[1]->deviceId())->getBuffer() offset:TensorUtils::getDescribe(inputs[1])->extra.offset atIndex:1]; - [encoder setBuffer:(id)((MetalRuntimeAllocator::MetalBufferAlloc *)outputs[0]->deviceId())->getBuffer() offset:TensorUtils::getDescribe(outputs[0])->extra.offset atIndex:2]; + MetalBackend::setTensor(inputs[0], encoder, 0); + MetalBackend::setTensor(inputs[1], encoder, 1); + MetalBackend::setTensor(outputs[0], encoder, 2); [encoder setBuffer:mParams offset:0 atIndex:3]; [encoder dispatchThreadgroups:mThreads.first threadsPerThreadgroup:mThreads.second]; } @@ -65,7 +300,11 @@ public: virtual Execution *onCreate(const std::vector &inputs, const MNN::Op *op, Backend *backend, const std::vector& outputs) const override { - return new MetalGridSample(backend, op->main_as_GridSample()); + auto pipeline = _createPipeline(static_cast(backend), op->main_as_GridSample(), outputs[0]); + if (nil == pipeline) { + return nullptr; + } + return new MetalGridSample(backend, op->main_as_GridSample(), pipeline); } }; diff --git a/source/backend/metal/MetalLayerNorm.hpp b/source/backend/metal/MetalLayerNorm.hpp index 048977144..f7ca374a2 100644 --- a/source/backend/metal/MetalLayerNorm.hpp +++ b/source/backend/metal/MetalLayerNorm.hpp @@ -24,12 +24,13 @@ class MetalLayerNorm : public MetalExecution { private: int mOutside; - std::vector mAxis; + int mAxisSize; int mInside; int mGroup = 1; float mEps; bool has_gamma_beta_ = false; + bool RMSNorm = false; id mGammaBuffer = nil; id mBetaBuffer = nil; id mShapeBuffer; diff --git a/source/backend/metal/MetalLayerNorm.mm b/source/backend/metal/MetalLayerNorm.mm index 4b2a1365d..917d5fe6a 100755 --- a/source/backend/metal/MetalLayerNorm.mm +++ b/source/backend/metal/MetalLayerNorm.mm @@ -18,11 +18,11 @@ mEps(layernorm->epsilon()) { auto context = (__bridge MNNMetalContext *)static_cast(backend)->context(); - int axis_size = layernorm->axis()->size(); - mAxis.resize(axis_size); - for (int i = 0; i < axis_size; ++i) { - mAxis[i] = layernorm->axis()->Get(i); + int axis_size = 0; + if (nullptr != layernorm->axis()) { + axis_size = layernorm->axis()->size(); } + mAxisSize = axis_size; if (layernorm->gamma() && layernorm->beta()) { has_gamma_beta_ = true; @@ -43,6 +43,7 @@ memcpy(mBetaBuffer.contents, (const void *)beta_data, gamma_size * sizeof(float)); } mShapeBuffer = [context newDeviceBuffer:3 * sizeof(int) + sizeof(float) access:CPUWriteOnly]; + RMSNorm = layernorm->useRMSNorm(); } ErrorCode MetalLayerNorm::onResize(const std::vector &inputs, const std::vector &outputs) { @@ -60,21 +61,13 @@ mInside *= input->length(i); } mInside /= mGroup; - return NO_ERROR; - } - std::vector axis(mAxis.size()); - for (int i = 0; i < mAxis.size(); ++i) { - if (mAxis[i] < 0) { - mAxis[i] += rank; + } else { + for (int i = 0; i < rank - mAxisSize; ++i) { + mOutside *= input->length(i); + } + for (int i = rank - mAxisSize; i < rank; ++i) { + mInside *= input->length(i); } - } - std::sort(mAxis.begin(), mAxis.end()); - - for (int i = 0; i < rank - (int)axis.size(); ++i) { - mOutside *= input->length(i); - } - for (int i = rank - (int)axis.size(); i < rank; ++i) { - mInside *= input->length(i); } ((int *)mShapeBuffer.contents)[0] = mInside; @@ -84,7 +77,11 @@ bool parallel = (mInside > 32) && ((mInside & 3) == 0); - mPipeline = [context pipelineWithName:parallel ? @"layernorm_x4" : @"layernorm_x1" fp16:backend->useFp16InsteadFp32()]; + if(RMSNorm){ + mPipeline = [context pipelineWithName:parallel ? @"layernorm_x4_rms" : @"layernorm_x1_rms" fp16:backend->useFp16InsteadFp32()]; + }else{ + mPipeline = [context pipelineWithName:parallel ? @"layernorm_x4" : @"layernorm_x1" fp16:backend->useFp16InsteadFp32()]; + } auto inside = parallel ? mInside/4 : mInside; mThreads = [context computeBestGroupAndLocal:mPipeline threads:MTLSizeMake((NSUInteger)inside, (NSUInteger)mOutside, 1)]; @@ -96,8 +93,8 @@ auto context = (__bridge MNNMetalContext *)backend->context(); auto input = inputs[0], output = outputs[0]; [encoder setComputePipelineState:mPipeline]; - [encoder setBuffer:(id)((MetalRuntimeAllocator::MetalBufferAlloc *)input->deviceId())->getBuffer() offset:TensorUtils::getDescribe(input)->extra.offset atIndex:0]; - [encoder setBuffer:(id)((MetalRuntimeAllocator::MetalBufferAlloc *)output->deviceId())->getBuffer() offset:TensorUtils::getDescribe(output)->extra.offset atIndex:1]; + MetalBackend::setTensor(input, encoder, 0); + MetalBackend::setTensor(output, encoder, 1); [encoder setBuffer:mShapeBuffer offset:0 atIndex:2]; if (!has_gamma_beta_) { // Set fake buffer to avoid validate diff --git a/source/backend/metal/MetalLoop.mm b/source/backend/metal/MetalLoop.mm index 05f1c68a4..419d8503f 100644 --- a/source/backend/metal/MetalLoop.mm +++ b/source/backend/metal/MetalLoop.mm @@ -485,7 +485,7 @@ kernel void main0(device T1* uOutput [[buffer(0)]], const device T0* uInput0 [[b mLoop = loop; auto mtbn = static_cast(bn); auto context = (__bridge MNNMetalContext *)mtbn->context(); - mParam = [context newDeviceBuffer:sizeof(BinaryBroadCastInfo) access:CPUWriteOnly]; + mParam = mtbn->getConstBuffer(sizeof(BinaryBroadCastInfo)); mTensors = std::move(tensors); auto cmd = mLoop->commands()->GetAs(0); auto dstTensor = mTensors[cmd->indexes()->data()[0]]; @@ -516,7 +516,10 @@ kernel void main0(device T1* uOutput [[buffer(0)]], const device T0* uInput0 [[b } mPipeline = pipeline; } - virtual ~MetalBinaryBroadCast() = default; + virtual ~MetalBinaryBroadCast() { + auto mtbn = static_cast(backend()); + mtbn->returnConstBuffer(mParam); + } virtual ErrorCode onResize(const std::vector& inputs, const std::vector& outputs) override { _setTensorStack(mTensors, inputs, outputs, mLoop); auto cmd = mLoop->commands()->GetAs(0); diff --git a/source/backend/metal/MetalMatMul.hpp b/source/backend/metal/MetalMatMul.hpp index b0ead2f86..258fd5a38 100644 --- a/source/backend/metal/MetalMatMul.hpp +++ b/source/backend/metal/MetalMatMul.hpp @@ -19,13 +19,11 @@ namespace MNN { class MetalMatMul : public MetalExecution { public: MetalMatMul(Backend *backend, const MatMul *matmul); - virtual ~MetalMatMul() = default; + virtual ~MetalMatMul(); virtual void onEncode(const std::vector &inputs, const std::vector &outputs, id encoder) override; virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; private: - id mBias = nil; - id mWeight = nil; id mConstBuffer = nil; bool mTransposeA = false; bool mTransposeB = false; diff --git a/source/backend/metal/MetalMatMul.mm b/source/backend/metal/MetalMatMul.mm index c73a8b99a..db741398e 100755 --- a/source/backend/metal/MetalMatMul.mm +++ b/source/backend/metal/MetalMatMul.mm @@ -24,6 +24,11 @@ auto mkbn = static_cast(backend); mConstBuffer = mkbn->getConstBuffer(sizeof(matP)); } +MetalMatMul::~MetalMatMul() { + auto mkbn = static_cast(backend()); + mkbn->returnConstBuffer(mConstBuffer); +} + ErrorCode MetalMatMul::onResize(const std::vector &inputs, const std::vector &outputs) { Tensor* C = outputs[0]; auto w0 = inputs[0]->length(1); diff --git a/source/backend/metal/MetalRaster.hpp b/source/backend/metal/MetalRaster.hpp index 20b873362..0d64e0840 100644 --- a/source/backend/metal/MetalRaster.hpp +++ b/source/backend/metal/MetalRaster.hpp @@ -18,16 +18,21 @@ namespace MNN { class MetalRaster : public MetalExecution { public: MetalRaster(Backend *backend); - virtual ~MetalRaster() = default; + virtual ~MetalRaster(); virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; virtual void onEncode(const std::vector &inputs, const std::vector &outputs, id encoder) override; + static id getBlitPipeline(int bytes, Backend* backend, bool multiRegion); + struct BlitInfo { + std::pair blit; + MTLSize local; + MTLSize global; + }; private: std::map> mTempInput; - std::vector, id, MTLSize, MTLSize, int> > mTempInputCopy; + std::map mTempInputCopy; std::shared_ptr mTempOutput; bool mNeedZero = false; - id mOutputPtr; - bool mFast = false; + Tensor* mOutputPtr = nullptr; id mBlitPipeline; std::vector> mShapeTemp; id mZeroCopy = nil; diff --git a/source/backend/metal/MetalRaster.mm b/source/backend/metal/MetalRaster.mm index 4e891d77e..28934ed7f 100644 --- a/source/backend/metal/MetalRaster.mm +++ b/source/backend/metal/MetalRaster.mm @@ -34,9 +34,135 @@ static void writeSamplerInfo(SamplerInfo& info, const Tensor::InsideDescribe::Re info.stride[3] = sampler.src.offset; info.extent[3] = sampler.dst.offset; } + +static const char* gMultiBlitMetal = R"metal( +#include +#include +using namespace metal; +struct SamplerInfo { + uint4 stride;//stride[3] + offset + uint4 size;//size[3] + totalSize + uint4 extent;//dstStride[3]+dstOffset +}; +kernel void main0(const device T *in [[buffer(0)]], + device T *out [[buffer(1)]], + const device uint4* buf [[buffer(2)]], + uint3 tgid [[thread_position_in_grid]]) { + uint4 limit = buf[0]; + const device SamplerInfo* infoP = (const device SamplerInfo*)(buf + 1); + uint3 gid = tgid; + gid.x = tgid.x % limit.x; + uint n = tgid.x / limit.x; + if (n < limit.y) { + SamplerInfo info = infoP[n]; + if (gid.x < info.size.x && gid.y < info.size.y && gid.z < info.size.z) { + uint dstOffset = gid.x * info.extent.x + gid.y * info.extent.y + gid.z * info.extent.z + info.extent.w; + uint srcOffset = gid.x * info.stride.x + gid.y * info.stride.y + gid.z * info.stride.z + info.stride.w; + out[int(dstOffset)] = in[int(srcOffset)]; + } + } +} +)metal"; + +static const char* gSingleBlitMetal = R"metal( +#include +#include +using namespace metal; +struct SamplerInfo { + uint4 stride;//stride[3] + offset + uint4 size;//size[3] + totalSize + uint4 extent;//dstStride[3]+dstOffset +}; +kernel void main0(const device T *in [[buffer(0)]], + device T *out [[buffer(1)]], + constant SamplerInfo &info [[buffer(2)]], + uint3 gid [[thread_position_in_grid]]) { + if (gid.x < info.size.x && gid.y < info.size.y && gid.z < info.size.z) { + uint dstOffset = gid.x * info.extent.x + gid.y * info.extent.y + gid.z * info.extent.z + info.extent.w; + uint srcOffset = gid.x * info.stride.x + gid.y * info.stride.y + gid.z * info.stride.z + info.stride.w; + out[int(dstOffset)] = in[int(srcOffset)]; + } +} +)metal"; + +static const char* gFillInt4 = R"metal( +#include +#include +using namespace metal; +struct MemsetInfo { + int4 value; + uint4 size; +}; +kernel void main0(device int4 *out [[buffer(0)]], + constant MemsetInfo &info [[buffer(1)]], + uint3 gid [[thread_position_in_grid]]) { + if (gid.x < info.size.x) { + out[gid.x] = info.value; + } +} +)metal"; + +id MetalRaster::getBlitPipeline(int bytes, Backend* backend, bool multiRegion) { + auto mtbn = static_cast(backend); + std::string pipelineName; + std::string unitName; + if (multiRegion) { + pipelineName = "blit_multi"; + } else { + pipelineName = "blit"; + } + switch (bytes) { + case 1: + unitName = "uchar"; + break; + case 2: + unitName = "short"; + break; + case 4: + unitName = "int"; + break; + case 8: + unitName = "short4"; + break; + case 16: + unitName = "int4"; + break; + default: + FUNC_PRINT(bytes); + break; + } + std::vector keys = { + unitName, + pipelineName + }; + auto pipeline = mtbn->runtime()->findPipeline(keys); + if (nil == pipeline) { + MTLCompileOptions *compileOptions = [[MTLCompileOptions alloc] init]; + compileOptions.preprocessorMacros = @{ + @"T" : @(unitName.c_str()), + }; + if (multiRegion) { + pipeline = mtbn->makeComputePipelineWithSourceOption(gMultiBlitMetal, "main0", compileOptions); + } else { + pipeline = mtbn->makeComputePipelineWithSourceOption(gSingleBlitMetal, "main0", compileOptions); + } + mtbn->runtime()->insertPipeline(keys, pipeline); + } + return pipeline; +} + MetalRaster::MetalRaster(Backend *backend) : MetalExecution(backend) { // Do nothing } +MetalRaster::~MetalRaster() { + auto mtbn = static_cast(backend()); + if (nil != mZeroCopy) { + mtbn->returnConstBuffer(mZeroCopy); + } + for (auto b : mShapeTemp) { + mtbn->returnConstBuffer(b); + } +} struct MemsetInfo { int value[4]; uint32_t size[4]; @@ -50,17 +176,31 @@ static void writeSamplerInfo(SamplerInfo& info, const Tensor::InsideDescribe::Re mNeedZero = !TensorUtils::regionIsFull(output); auto context = (__bridge MNNMetalContext *)static_cast(backend())->context(); auto mtbn = static_cast(backend()); + auto bufferAlloc = mtbn->getStaticBufferPool(); auto bytes = outputs[0]->getType().bytes(); + if (outputs[0]->getType().code == halide_type_float) { + if (mtbn->useFp16InsteadFp32()) { + bytes = 2; + } + } if (mNeedZero) { - MemsetInfo meminfo; - ::memset(&meminfo, 0, sizeof(MemsetInfo)); - mZeroCopy = [context newDeviceBuffer:sizeof(MemsetInfo) bytes:&meminfo access:CPUWriteOnly]; - mZeroPipeline = [context pipelineWithName:@"fill_intx4" fp16:mtbn->useFp16InsteadFp32()]; + std::vector keys = { + "fill_int4" + }; + auto pipeline = mtbn->runtime()->findPipeline(keys); + if (nil == pipeline) { + pipeline = mtbn->makeComputePipelineWithSourceOption(gFillInt4, "main0", nil); + mtbn->runtime()->insertPipeline(keys, pipeline); + } + mZeroPipeline = pipeline; + if (nil == mZeroCopy) { + mZeroCopy = mtbn->getConstBuffer(sizeof(MemsetInfo)); + } } mTempInput.clear(); mTempInputCopy.clear(); mTempOutput = nullptr; - mOutputPtr = (id)((MetalRuntimeAllocator::MetalBufferAlloc *)(output->deviceId()))->getBuffer(); + mOutputPtr = output; #ifndef MNN_METAL_FORBID_RASTER_C4 if (outputDes->dimensionFormat == MNN_DATA_FORMAT_NC4HW4) { bool fast = true; @@ -75,42 +215,44 @@ static void writeSamplerInfo(SamplerInfo& info, const Tensor::InsideDescribe::Re break; } } - mFast = fast; if (fast) { - NSString* kernelName = nil; - switch (bytes) { - case 4: - kernelName = @"blit_intx4"; - break; - case 2: - kernelName = @"blit_int64"; - break; - case 1: - kernelName = @"blit_int"; - break; - default: - break; - } - if (outputs[0]->getType().code == halide_type_float) { - if (mtbn->useFp16InsteadFp32()) { - kernelName = @"blit_int64"; + mBlitPipeline = getBlitPipeline(bytes * 4, backend(), true); + std::map> collectForTensor; + for (int i=0; i< des->regions.size(); ++i) { + auto& slice = des->regions[i]; + Tensor* t = slice.origin; + auto coliter = collectForTensor.find(t); + if (coliter == collectForTensor.end()) { + collectForTensor.insert(std::make_pair(t, std::vector{i})); } else { - kernelName = @"blit_intx4"; + coliter->second.emplace_back(i); } } - mBlitPipeline = [context pipelineWithName:kernelName fp16:mtbn->useFp16InsteadFp32()]; + for (auto& iter : collectForTensor) { + BlitInfo blit; + auto memory = bufferAlloc->alloc(sizeof(SamplerInfo) * iter.second.size() + 4 * sizeof(uint32_t)); + blit.blit = std::make_pair(memory.first, memory.second); + auto buffer = ((MetalRuntimeAllocator::MetalBufferAlloc*)memory.first)->getBuffer(); - for (int i=0; i< des->regions.size(); ++i) { - auto& slice = des->regions[i]; - Tensor::InsideDescribe::Region newRegion; - OpCommonUtils::turnToPackRegion(slice, newRegion, output, 4); - newRegion.dst.offset /= 4; - newRegion.src.offset /= 4; - SamplerInfo info; - writeSamplerInfo(info, newRegion); - auto local = [context computeBestGroupAndLocal:mBlitPipeline threads:MTLSizeMake(newRegion.size[0], newRegion.size[1], newRegion.size[2])]; - auto buffer = [context newDeviceBuffer:sizeof(SamplerInfo) bytes:&info access:CPUWriteOnly]; - mTempInputCopy.emplace_back(std::make_tuple(( id)((MetalRuntimeAllocator::MetalBufferAlloc *)newRegion.origin->deviceId())->getBuffer(), buffer, local.first, local.second, TensorUtils::getDescribe(newRegion.origin)->extra.offset)); + auto infoP = (SamplerInfo*)((uint8_t*)[buffer contents] + 4 * sizeof(uint32_t) + memory.second); + uint32_t maxSize[3] = {1, 1, 1}; + for (int v=0; vregions[iter.second[v]]; + Tensor::InsideDescribe::Region slice; + OpCommonUtils::turnToPackRegion(oldr, slice, output, 4); + slice.dst.offset /= 4; + slice.src.offset /= 4; + writeSamplerInfo(infoP[v], slice); + maxSize[0] = ALIMAX(maxSize[0], slice.size[0]); + maxSize[1] = ALIMAX(maxSize[1], slice.size[1]); + maxSize[2] = ALIMAX(maxSize[2], slice.size[2]); + } + ((uint32_t*)((uint8_t*)[buffer contents] + memory.second))[0] = maxSize[0]; + ((uint32_t*)((uint8_t*)[buffer contents] + memory.second))[1] = iter.second.size(); + auto local = [context computeBestGroupAndLocal:mBlitPipeline threads:MTLSizeMake(maxSize[0] * iter.second.size(), maxSize[1], maxSize[2])]; + blit.global = local.first; + blit.local = local.second; + mTempInputCopy.insert(std::make_pair(iter.first, blit)); } return NO_ERROR; } @@ -141,8 +283,7 @@ static void writeSamplerInfo(SamplerInfo& info, const Tensor::InsideDescribe::Re if (!res) { return OUT_OF_MEMORY; } - mOutputPtr = (id)((MetalRuntimeAllocator::MetalBufferAlloc *)(mTempOutput->deviceId()))->getBuffer(); - + mOutputPtr = mTempOutput.get(); } for (auto& iter : mTempInput) { auto res = backend()->onAcquireBuffer(iter.second.get(), Backend::DYNAMIC); @@ -156,52 +297,59 @@ static void writeSamplerInfo(SamplerInfo& info, const Tensor::InsideDescribe::Re if (nullptr != mTempOutput) { backend()->onReleaseBuffer(mTempOutput.get(), Backend::DYNAMIC); } - NSString* kernelName = nil; - switch (bytes) { - case 4: - kernelName = @"blit_int"; - break; - case 2: - kernelName = @"blit_int16"; - break; - case 1: - kernelName = @"blit_int8"; - break; - default: - break; - } - if (outputs[0]->getType().code == halide_type_float) { - if (mtbn->useFp16InsteadFp32()) { - kernelName = @"blit_int16"; - } else { - kernelName = @"blit_int"; - } - } - mBlitPipeline = [context pipelineWithName:kernelName fp16:mtbn->useFp16InsteadFp32()]; + mBlitPipeline = getBlitPipeline(bytes, backend(), true); + std::map> collectForTensor; for (int i=0; i< des->regions.size(); ++i) { auto& slice = des->regions[i]; if (nullptr == slice.origin) { continue; } - SamplerInfo info; - writeSamplerInfo(info, slice); - auto buffer = [context newDeviceBuffer:sizeof(SamplerInfo) bytes:&info access:CPUWriteOnly]; - auto iter = mTempInput.find(slice.origin); - auto local = [context computeBestGroupAndLocal:mBlitPipeline threads:MTLSizeMake(slice.size[0], slice.size[1], slice.size[2])]; + Tensor* t = slice.origin; if (iter != mTempInput.end()) { - mTempInputCopy.emplace_back(std::make_tuple(( id)((MetalRuntimeAllocator::MetalBufferAlloc *)iter->second->deviceId())->getBuffer(), buffer, local.first, local.second, TensorUtils::getDescribe(iter->second.get())->extra.offset)); - continue; + t = iter->second.get(); } - mTempInputCopy.emplace_back(std::make_tuple(( id)((MetalRuntimeAllocator::MetalBufferAlloc *)(slice.origin->deviceId()))->getBuffer(), buffer, local.first, local.second, TensorUtils::getDescribe(slice.origin)->extra.offset)); + auto coliter = collectForTensor.find(t); + if (coliter == collectForTensor.end()) { + collectForTensor.insert(std::make_pair(t, std::vector{i})); + } else { + coliter->second.emplace_back(i); + } + } + for (auto& iter : collectForTensor) { + BlitInfo blit; + auto memory = bufferAlloc->alloc(sizeof(SamplerInfo) * iter.second.size() + 4 * sizeof(uint32_t)); + blit.blit = std::make_pair(memory.first, memory.second); + auto buffer = ((MetalRuntimeAllocator::MetalBufferAlloc*)memory.first)->getBuffer(); + + auto infoP = (SamplerInfo*)((uint8_t*)[buffer contents] + 4 * sizeof(uint32_t) + memory.second); + + blit.blit = std::make_pair(memory.first, memory.second); + uint32_t maxSize[3] = {1, 1, 1}; + for (int v=0; vregions[iter.second[v]]; + writeSamplerInfo(infoP[v], slice); + maxSize[0] = ALIMAX(maxSize[0], slice.size[0]); + maxSize[1] = ALIMAX(maxSize[1], slice.size[1]); + maxSize[2] = ALIMAX(maxSize[2], slice.size[2]); + } + ((uint32_t*)((uint8_t*)[buffer contents] + memory.second))[0] = maxSize[0]; + ((uint32_t*)((uint8_t*)[buffer contents] + memory.second))[1] = iter.second.size(); + auto local = [context computeBestGroupAndLocal:mBlitPipeline threads:MTLSizeMake(maxSize[0] * iter.second.size(), maxSize[1], maxSize[2])]; + blit.global = local.first; + blit.local = local.second; + mTempInputCopy.insert(std::make_pair(iter.first, blit)); + } + for (auto b : mShapeTemp) { + mtbn->returnConstBuffer(b); } mShapeTemp.clear(); for (int i = 0; i < mTempInput.size(); ++i) { - id shape = [context newDeviceBuffer:4*sizeof(int) access:CPUWriteOnly]; + id shape = mtbn->getConstBuffer(0); mShapeTemp.emplace_back(std::move(shape)); } if (nullptr != mTempOutput) { - mShapeTemp.emplace_back([context newDeviceBuffer:4*sizeof(int) access:CPUWriteOnly]); + mShapeTemp.emplace_back(mtbn->getConstBuffer(0)); } return NO_ERROR; } @@ -224,7 +372,7 @@ static void writeSamplerInfo(SamplerInfo& info, const Tensor::InsideDescribe::Re auto ptr = (MemsetInfo*)[mZeroCopy contents]; ptr->size[0] = (uint32_t)size; [encoder setComputePipelineState:mZeroPipeline]; - [encoder setBuffer: mOutputPtr offset:out_offset atIndex: 0]; + MetalBackend::setTensor(mOutputPtr, encoder, 0); [encoder setBuffer: mZeroCopy offset:0 atIndex: 1]; [encoder dispatchThreadgroups:MTLSizeMake(UP_DIV(size, 256), 1, 1) threadsPerThreadgroup:MTLSizeMake(256, 1, 1)]; } @@ -235,10 +383,12 @@ static void writeSamplerInfo(SamplerInfo& info, const Tensor::InsideDescribe::Re [encoder setComputePipelineState:mBlitPipeline]; for (auto& iter : mTempInputCopy) { - [encoder setBuffer: std::get<0>(iter) offset: std::get<4>(iter) atIndex: 0]; - [encoder setBuffer: mOutputPtr offset:out_offset atIndex: 1]; - [encoder setBuffer: std::get<1>(iter) offset:0 atIndex: 2]; - [encoder dispatchThreadgroups:std::get<2>(iter) threadsPerThreadgroup:std::get<3>(iter)]; + MetalBackend::setTensor(iter.first, encoder, 0); + MetalBackend::setTensor(mOutputPtr, encoder, 1); + auto& blit = iter.second; + auto buffer = ((MetalRuntimeAllocator::MetalBufferAlloc*)blit.blit.first)->getBuffer(); + [encoder setBuffer: buffer offset:blit.blit.second atIndex: 2]; + [encoder dispatchThreadgroups:blit.global threadsPerThreadgroup:blit.local]; } if (nullptr != mTempOutput) { backend->onCopyBuffer(mTempOutput.get(), outputs[0], encoder, mShapeTemp[index]); diff --git a/source/backend/metal/MetalSoftmax.mm b/source/backend/metal/MetalSoftmax.mm index 268d11774..b463c530e 100644 --- a/source/backend/metal/MetalSoftmax.mm +++ b/source/backend/metal/MetalSoftmax.mm @@ -16,7 +16,9 @@ namespace MNN { MetalSoftmax::MetalSoftmax(Backend *backend, int32_t axis) : MetalExecution(backend), mAxis(axis) { - // nothing to do + auto mtbn = static_cast(backend); + auto context = (__bridge MNNMetalContext *)mtbn->context(); + mShapeBuffer = [context newDeviceBuffer:4 * sizeof(int) access:CPUWriteOnly]; } ErrorCode MetalSoftmax::onResize(const std::vector &inputs, const std::vector &outputs) { @@ -50,7 +52,6 @@ if (reorder) { axis = UP_DIV(axis, 4); } - mShapeBuffer = [context newDeviceBuffer:4 * sizeof(int) access:CPUWriteOnly]; ((int *)mShapeBuffer.contents)[0] = inside; ((int *)mShapeBuffer.contents)[1] = axis; ((int *)mShapeBuffer.contents)[2] = outside; diff --git a/source/backend/metal/MetalUnary.mm b/source/backend/metal/MetalUnary.mm index a8598882d..bc66f77a2 100755 --- a/source/backend/metal/MetalUnary.mm +++ b/source/backend/metal/MetalUnary.mm @@ -95,6 +95,7 @@ kernel void main0(const device T *in [[buffer(0)]], \ op_case(ATANH, atanh); op_case(HARDSWISH, hardswish); op_case(GELU, gelu); + op_case(GELU_STANDARD, gelu); default: FUNC_PRINT_ALL(EnumNameUnaryOpOperation(type), s); return nil; diff --git a/source/backend/metal/ShaderMap.cpp b/source/backend/metal/ShaderMap.cpp index 3b46f73f2..622d1f9da 100644 --- a/source/backend/metal/ShaderMap.cpp +++ b/source/backend/metal/ShaderMap.cpp @@ -7,7 +7,6 @@ mMaps.insert(std::make_pair("shader_MetalReLU_metal", shader_MetalReLU_metal)); mMaps.insert(std::make_pair("shader_MetalConvolutionDepthwise_metal", shader_MetalConvolutionDepthwise_metal)); mMaps.insert(std::make_pair("shader_MetalConvolutionActivation_metal", shader_MetalConvolutionActivation_metal)); mMaps.insert(std::make_pair("shader_MetalConvolution_metal", shader_MetalConvolution_metal)); -mMaps.insert(std::make_pair("shader_MetalGridSample_metal", shader_MetalGridSample_metal)); mMaps.insert(std::make_pair("shader_MetalReduction_metal", shader_MetalReduction_metal)); mMaps.insert(std::make_pair("shader_MetalBackend_metal", shader_MetalBackend_metal)); mMaps.insert(std::make_pair("shader_MetalSoftmax_metal", shader_MetalSoftmax_metal)); diff --git a/source/backend/metal/shader/MetalBackend.metal b/source/backend/metal/shader/MetalBackend.metal index 0a022528a..f59716c13 100644 --- a/source/backend/metal/shader/MetalBackend.metal +++ b/source/backend/metal/shader/MetalBackend.metal @@ -16,11 +16,7 @@ kernel void copy_byte(const device uchar *in [[buffer(0)]], uint gid [[thread_position_in_grid]]) { out[int(gid)] = in[int(gid)]; } -kernel void copy_int(const device int *in [[buffer(0)]], - device int *out [[buffer(1)]], - uint gid [[thread_position_in_grid]]) { - out[int(gid)] = in[int(gid)]; -} + kernel void copy_float(const device ftype *in [[buffer(0)]], device ftype *out [[buffer(1)]], uint gid [[thread_position_in_grid]]) { @@ -210,75 +206,6 @@ kernel void cvt_f_NC4HW4_to_NCHW(const device ftype4 *in [[buffer(0)]], uint2 gid [[thread_position_in_grid]]) { if ((int)gid.x < s.size && (int)gid.y < s.batch_slices) template_NC4HW4_to_NCHW(in, out, s, gid); } -struct SamplerInfo { - uint4 stride;//stride[3] + offset - uint4 size;//size[3] + totalSize - uint4 extent;//dstStride[3]+dstOffset -}; -struct MemsetInfo { - int4 value; - uint4 size; -}; -kernel void fill_intx4(device int4 *out [[buffer(0)]], - constant MemsetInfo &info [[buffer(1)]], - uint3 gid [[thread_position_in_grid]]) { - if (gid.x < info.size.x) { - out[gid.x] = info.value; - } -} - -kernel void blit_intx4(const device int4 *in [[buffer(0)]], - device int4 *out [[buffer(1)]], - constant SamplerInfo &info [[buffer(2)]], - uint3 gid [[thread_position_in_grid]]) { - if (gid.x < info.size.x && gid.y < info.size.y && gid.z < info.size.z) { - uint dstOffset = gid.x * info.extent.x + gid.y * info.extent.y + gid.z * info.extent.z + info.extent.w; - uint srcOffset = gid.x * info.stride.x + gid.y * info.stride.y + gid.z * info.stride.z + info.stride.w; - out[int(dstOffset)] = in[int(srcOffset)]; - } -} -kernel void blit_int(const device int *in [[buffer(0)]], - device int *out [[buffer(1)]], - constant SamplerInfo &info [[buffer(2)]], - uint3 gid [[thread_position_in_grid]]) { - if (gid.x < info.size.x && gid.y < info.size.y && gid.z < info.size.z) { - uint dstOffset = gid.x * info.extent.x + gid.y * info.extent.y + gid.z * info.extent.z + info.extent.w; - uint srcOffset = gid.x * info.stride.x + gid.y * info.stride.y + gid.z * info.stride.z + info.stride.w; - out[int(dstOffset)] = in[int(srcOffset)]; - } -} -kernel void blit_int8(const device char *in [[buffer(0)]], - device char *out [[buffer(1)]], - constant SamplerInfo &info [[buffer(2)]], - uint3 gid [[thread_position_in_grid]]) { - if (gid.x < info.size.x && gid.y < info.size.y && gid.z < info.size.z) { - uint dstOffset = gid.x * info.extent.x + gid.y * info.extent.y + gid.z * info.extent.z + info.extent.w; - uint srcOffset = gid.x * info.stride.x + gid.y * info.stride.y + gid.z * info.stride.z + info.stride.w; - out[int(dstOffset)] = in[int(srcOffset)]; - } -} - -kernel void blit_int16(const device short *in [[buffer(0)]], - device short *out [[buffer(1)]], - constant SamplerInfo &info [[buffer(2)]], - uint3 gid [[thread_position_in_grid]]) { - if (gid.x < info.size.x && gid.y < info.size.y && gid.z < info.size.z) { - uint dstOffset = gid.x * info.extent.x + gid.y * info.extent.y + gid.z * info.extent.z + info.extent.w; - uint srcOffset = gid.x * info.stride.x + gid.y * info.stride.y + gid.z * info.stride.z + info.stride.w; - out[int(dstOffset)] = in[int(srcOffset)]; - } -} - -kernel void blit_int64(const device short4 *in [[buffer(0)]], - device short4 *out [[buffer(1)]], - constant SamplerInfo &info [[buffer(2)]], - uint3 gid [[thread_position_in_grid]]) { - if (gid.x < info.size.x && gid.y < info.size.y && gid.z < info.size.z) { - uint dstOffset = gid.x * info.extent.x + gid.y * info.extent.y + gid.z * info.extent.z + info.extent.w; - uint srcOffset = gid.x * info.stride.x + gid.y * info.stride.y + gid.z * info.stride.z + info.stride.w; - out[int(dstOffset)] = in[int(srcOffset)]; - } -} template static inline void template_NHWC_to_NCHW(const device IType* in, diff --git a/source/backend/metal/shader/MetalGridSample.metal b/source/backend/metal/shader/MetalGridSample.metal deleted file mode 100644 index 6662d297b..000000000 --- a/source/backend/metal/shader/MetalGridSample.metal +++ /dev/null @@ -1,107 +0,0 @@ -struct grid_sample_params { - int batches; - int channels; - int inH; - int inW; - int outH; - int outW; - int mode; // 0-Bilinear, 1-Nearest - int paddingMode; // 0-Zeros, 1-Border, 2-Reflection - int alignCorners; -}; - -static float getPosition(float x, int range, int alignCorners, int paddingMode) { - if (paddingMode == 2/*GridSamplePaddingMode_REFLECTION*/) { - // if x is on the left side of -1.0, move it to the right side of 1.0 - if (x < -1.0f) { - x = x + ::ceil(1 - x) * 4; - } - // reflect - if (x > 1.0f) { - float l = x - 1.0f; - int reflectionNum = ::floor(l / 2.0); - float offset = l - reflectionNum * 2.0f; - x = (reflectionNum % 2 == 0) ? (1 - offset) : (-1.0f + offset); - } - } - - float a = alignCorners ? 1.0f : 0.0f; - float b = alignCorners ? 0.0f : 1.0f; - return ((1 + x) * (range - a) - b) / 2.0f; -} - -static int CLAMP(int v, int min, int max) { - if ((v) < min) { - (v) = min; - } else if ((v) > max) { - (v) = max; - } - return v; -} - -static ftype4 sample(int h, int w, const device ftype4 *buffer, int height, int width, int paddingMode) { - if (h < 0 || h >= height || w < 0 || w >= width) { - if (paddingMode == 0/*GridSamplePaddingMode_ZEROS*/) { - return 0.0f; - } - // Clearly, CLAMP is the right way to go for GridSamplePaddingMode_BORDER - // For GridSamplePaddingMode_REFLECTION, since we have reflected the values into (-1, 1), - // the leftover reflections degrade to GridSamplePaddingMode_BORDER - h = CLAMP(h, 0, height - 1); - w = CLAMP(w, 0, width - 1); - } - - return buffer[h * width + w]; -} - -static ftype4 interpolate(float h, float w, const device ftype4 *buffer, int height, int width, int mode, - int paddingMode) { - if (mode == 1/*GridSampleMode_NEAREST*/) { - int nh = ::floor(h+0.5f); - int nw = ::floor(w+0.5f); - return sample(nh, nw, buffer, height, width, paddingMode); - } - - // mode == GridSampleMode_BILINEAR - int w0_h = ::floor(h); - int w0_w = ::floor(w); - int w1_h = w0_h + 1; - int w1_w = w0_w + 1; - ftype4 oneV = (ftype4)((ftype)1.0f); - - ftype4 i00 = sample(w0_h, w0_w, buffer, height, width, paddingMode); - ftype4 i01 = sample(w0_h, w1_w, buffer, height, width, paddingMode); - ftype4 i10 = sample(w1_h, w0_w, buffer, height, width, paddingMode); - ftype4 i11 = sample(w1_h, w1_w, buffer, height, width, paddingMode); - - - ftype4 f0 = (ftype4)((ftype)(w1_w - w)); - ftype4 f1 = oneV - f0; - ftype4 h0 = (ftype4)((ftype)(w1_h - h)); - ftype4 h1 = oneV - h0; - - ftype4 i0 = i00 * f0 + i01 * f1; - ftype4 i1 = i10 * f0 + i11 * f1; - - return i0 * h0 + i1 * h1; -} - -kernel void grid_sample(const device ftype4 *input [[buffer(0)]], - const device ftype *grid [[buffer(1)]], - device ftype4 *output [[buffer(2)]], - constant grid_sample_params &p [[buffer(3)]], - uint3 gid [[thread_position_in_grid]]) { - if ((int)gid.x >= p.outW || (int)gid.y >= p.outH || (int)gid.z >= p.batches) - return; - - int gridPos = gid.z*p.outH*p.outW*2 + gid.y*p.outW*2 + gid.x*2; - auto x = getPosition(grid[gridPos+0], p.inW, p.alignCorners, p.paddingMode); - auto y = getPosition(grid[gridPos+1], p.inH, p.alignCorners, p.paddingMode); - - const int channelC4 = (p.channels + 3) / 4; - for (int c = 0; c < channelC4; ++ c) { - auto outputPos = gid.z*channelC4*p.outH*p.outW + c*p.outH*p.outW + gid.y*p.outW + gid.x; - auto inputPtr = input + gid.z*channelC4*p.inH*p.inW + c*p.inH*p.inW; - output[outputPos] = interpolate(y, x, inputPtr, p.inH, p.inW, p.mode, p.paddingMode); - } -} diff --git a/source/backend/metal/shader/MetalLayerNorm.metal b/source/backend/metal/shader/MetalLayerNorm.metal index 43fe683dd..626fd9d06 100644 --- a/source/backend/metal/shader/MetalLayerNorm.metal +++ b/source/backend/metal/shader/MetalLayerNorm.metal @@ -84,3 +84,66 @@ kernel void layernorm_x4(const device ftype4 *in [[buffer(0)]], out_data[gid.x] = (ftype4)(norm); } } + + +kernel void layernorm_x1_rms(const device ftype *in [[buffer(0)]], + device ftype *out [[buffer(1)]], + constant layernorm_constants& cst [[buffer(2)]], + const device float *gamma [[buffer(3)]], + const device float *beta [[buffer(4)]], + uint2 gid [[thread_position_in_grid]]) { + if ((int)gid.x >= cst.inside || (int)gid.y >= cst.outside) { + return; + } + auto in_data = in + gid.y * cst.inside; + auto out_data = out + gid.y * cst.inside; + + float square_sum = 0.0f; + + for(int i = 0; i < cst.inside; i++) { + float dis = in_data[i]; + square_sum += dis * dis; + } + float var = 1.0 / sqrt(square_sum / cst.inside + cst.eps); + + float norm = var * ((float)in_data[gid.x]); + if(cst.has_gamma_beta) { + out_data[gid.x] = (ftype)(norm * gamma[gid.x] + beta[gid.x]); + } else { + out_data[gid.x] = (ftype)(norm); + } +} + +kernel void layernorm_x4_rms(const device ftype4 *in [[buffer(0)]], + device ftype4 *out [[buffer(1)]], + constant layernorm_constants& cst [[buffer(2)]], + const device float4 *gamma [[buffer(3)]], + const device float4 *beta [[buffer(4)]], + uint2 gid [[thread_position_in_grid]]) { + if ((int)gid.x >= cst.inside/4 || (int)gid.y >= cst.outside) { + return; + } + auto in_data = in + gid.y * cst.inside/4; + auto out_data = out + gid.y * cst.inside/4; + + float square_sum = 0.0f; + + for(int i = 0; i < cst.inside/4; i++) { + float dis = in_data[i].x; + square_sum += dis * dis; + dis = in_data[i].y; + square_sum += dis * dis; + dis = in_data[i].z; + square_sum += dis * dis; + dis = in_data[i].w; + square_sum += dis * dis; + } + float var = 1.0 / sqrt(square_sum / cst.inside + cst.eps); + + float4 norm = var * ((float4)in_data[gid.x]); + if(cst.has_gamma_beta) { + out_data[gid.x] = (ftype4)(norm * gamma[gid.x] + beta[gid.x]); + } else { + out_data[gid.x] = (ftype4)(norm); + } +} diff --git a/source/backend/opencl/core/BufferConvertor.cpp b/source/backend/opencl/core/BufferConvertor.cpp index b92deb83e..ab51ef7db 100644 --- a/source/backend/opencl/core/BufferConvertor.cpp +++ b/source/backend/opencl/core/BufferConvertor.cpp @@ -13,7 +13,97 @@ namespace MNN { namespace OpenCL { -bool converNCHWOrNHWCBufferToNC4HW4OrNC16HW16Buffer(const Tensor *input, Tensor *output, cl::Kernel &convertBufferKernel, const std::string Name, OpenCLRuntime *runtime, bool needTrans, bool needWait, bool svmFlag) { +static void AddBuildOptionOfDataType(const Tensor *input, const Tensor *output, std::set &buildOptions, bool isfp16, bool toDevice, bool toHost){ + if(input->getType().code == halide_type_int) { + if(input->getType().bits == 8){ + buildOptions.emplace("-DINPUT_TYPE=char"); + buildOptions.emplace("-DINPUT_TYPE4=char4"); + buildOptions.emplace("-DINPUT_TYPE16=char16"); + } else if(input->getType().bits == 32){ + buildOptions.emplace("-DINPUT_TYPE=int"); + buildOptions.emplace("-DINPUT_TYPE4=int4"); + buildOptions.emplace("-DINPUT_TYPE16=int16"); + } else { + MNN_PRINT("opencl input datatype not support, bit:%d\n", input->getType().bits); + MNN_ASSERT(false); + } + } else if(input->getType().code == halide_type_uint){ + if(input->getType().bits == 8){ + buildOptions.emplace("-DINPUT_TYPE=uchar"); + buildOptions.emplace("-DINPUT_TYPE4=uchar4"); + buildOptions.emplace("-DINPUT_TYPE16=uchar16"); + } else if(input->getType().bits == 32){ + buildOptions.emplace("-DINPUT_TYPE=uint"); + buildOptions.emplace("-DINPUT_TYPE4=uint4"); + buildOptions.emplace("-DINPUT_TYPE16=uint16"); + } else { + MNN_PRINT("opencl input datatype not support, bit:%d\n", input->getType().bits); + MNN_ASSERT(false); + } + } else { + if(isfp16 && toHost){ + buildOptions.emplace("-DINPUT_TYPE=half"); + buildOptions.emplace("-DINPUT_TYPE4=half4"); + buildOptions.emplace("-DINPUT_TYPE16=half16"); + }else{ + buildOptions.emplace("-DINPUT_TYPE=float"); + buildOptions.emplace("-DINPUT_TYPE4=float4"); + buildOptions.emplace("-DINPUT_TYPE16=float16"); + } + } + + if(output->getType().code == halide_type_int) { + if(output->getType().bits == 8){ + buildOptions.emplace("-DOUTPUT_TYPE=char"); + buildOptions.emplace("-DOUTPUT_TYPE4=char4"); + buildOptions.emplace("-DOUTPUT_TYPE16=char16"); + buildOptions.emplace("-DCONVERT_OUTPUT4=convert_char4"); + buildOptions.emplace("-DCONVERT_OUTPUT16=convert_char16"); + } else if(output->getType().bits == 32){ + buildOptions.emplace("-DOUTPUT_TYPE=int"); + buildOptions.emplace("-DOUTPUT_TYPE4=int4"); + buildOptions.emplace("-DOUTPUT_TYPE16=int16"); + buildOptions.emplace("-DCONVERT_OUTPUT4=convert_int4"); + buildOptions.emplace("-DCONVERT_OUTPUT16=convert_int16"); + } else { + MNN_PRINT("opencl input datatype not support, bit:%d\n", output->getType().bits); + MNN_ASSERT(false); + } + } else if(output->getType().code == halide_type_uint){ + if(output->getType().bits == 8){ + buildOptions.emplace("-DOUTPUT_TYPE=uchar"); + buildOptions.emplace("-DOUTPUT_TYPE4=uchar4"); + buildOptions.emplace("-DOUTPUT_TYPE16=uchar16"); + buildOptions.emplace("-DCONVERT_OUTPUT4=convert_uchar4"); + buildOptions.emplace("-DCONVERT_OUTPUT16=convert_uchar16"); + } else if(output->getType().bits == 32){ + buildOptions.emplace("-DOUTPUT_TYPE=uint"); + buildOptions.emplace("-DOUTPUT_TYPE4=uint4"); + buildOptions.emplace("-DOUTPUT_TYPE16=uint16"); + buildOptions.emplace("-DCONVERT_OUTPUT4=convert_uint4"); + buildOptions.emplace("-DCONVERT_OUTPUT16=convert_uint16"); + } else { + MNN_PRINT("opencl input datatype not support, bit:%d\n", output->getType().bits); + MNN_ASSERT(false); + } + } else { + if(isfp16 && toDevice){ + buildOptions.emplace("-DOUTPUT_TYPE=half"); + buildOptions.emplace("-DOUTPUT_TYPE4=half4"); + buildOptions.emplace("-DOUTPUT_TYPE16=half16"); + buildOptions.emplace("-DCONVERT_OUTPUT4=convert_half4"); + buildOptions.emplace("-DCONVERT_OUTPUT16=convert_half16"); + }else{ + buildOptions.emplace("-DOUTPUT_TYPE=float"); + buildOptions.emplace("-DOUTPUT_TYPE4=float4"); + buildOptions.emplace("-DOUTPUT_TYPE16=float16"); + buildOptions.emplace("-DCONVERT_OUTPUT4=convert_float4"); + buildOptions.emplace("-DCONVERT_OUTPUT16=convert_float16"); + } + } +} + +bool converNCHWOrNHWCBufferToNC4HW4OrNC16HW16Buffer(const Tensor *input, Tensor *output, const std::string Name, OpenCLRuntime *runtime, bool needTrans, bool needWait, bool svmFlag) { std::vector outputShape = tensorShapeFormat(input); std::string kernelName = Name; std::string sourceName = "buffer_convert_buf"; @@ -22,6 +112,7 @@ bool converNCHWOrNHWCBufferToNC4HW4OrNC16HW16Buffer(const Tensor *input, Tensor auto outputpad = TensorUtils::getDescribe(output)->mPads; #ifdef MNN_SUPPORT_INTEL_SUBGROUP cPack = TensorUtils::getTensorChannelPack(output); + if(cPack == 16) { sourceName = "buffer_convert_subgroup_buf"; @@ -29,13 +120,10 @@ bool converNCHWOrNHWCBufferToNC4HW4OrNC16HW16Buffer(const Tensor *input, Tensor #endif uint32_t outputGlobalWorkSize[2] = {static_cast(UP_DIV(outputShape[3], cPack) * outputShape[2]), static_cast(outputShape[0] * outputShape[1])}; - if (convertBufferKernel.get() == nullptr) { - std::set buildOptions; - if(needTrans) { - kernelName += "_floatin"; - } - convertBufferKernel = runtime->buildKernel(sourceName, kernelName, buildOptions); - } + std::set buildOptions; + AddBuildOptionOfDataType(input, output, buildOptions, runtime->isSupportedFP16(), true, false); + auto convertBufferKernelW = runtime->buildKernelWithCache(sourceName, kernelName, buildOptions); + auto convertBufferKernel = convertBufferKernelW->get(); uint32_t idx = 0; cl_int ret = CL_SUCCESS; ret |= convertBufferKernel.setArg(idx++, outputGlobalWorkSize[0]); @@ -49,6 +137,7 @@ bool converNCHWOrNHWCBufferToNC4HW4OrNC16HW16Buffer(const Tensor *input, Tensor { ret |= convertBufferKernel.setArg(idx++, openCLBuffer(input)); } + ret |= convertBufferKernel.setArg(idx++, static_cast(outputShape[1])); ret |= convertBufferKernel.setArg(idx++, static_cast(outputShape[2])); ret |= convertBufferKernel.setArg(idx++, static_cast(outputShape[3])); @@ -62,7 +151,7 @@ bool converNCHWOrNHWCBufferToNC4HW4OrNC16HW16Buffer(const Tensor *input, Tensor } MNN_CHECK_CL_SUCCESS(ret, "setArg converNCHWOrNHWCBufferToNC4HW4OrNC16HW16Buffer"); - const uint32_t maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(convertBufferKernel)); + const uint32_t maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(convertBufferKernelW)); const std::vector lws = {16, std::max((uint32_t)1, maxWorkGroupSize / 16)}; cl::Event event; cl_int res; @@ -81,26 +170,25 @@ bool converNCHWOrNHWCBufferToNC4HW4OrNC16HW16Buffer(const Tensor *input, Tensor return true; } -bool convertNC4HW4BufferToNC4HW4Buffer(const Tensor *input, Tensor *output, cl::Kernel &convertBufferKernel, - OpenCLRuntime *runtime, TransType formatTrans, bool needWait, bool svmFlag, bool srcswap, bool dstswap) { +bool convertNC4HW4BufferToNC4HW4Buffer(const Tensor *input, Tensor *output, OpenCLRuntime *runtime, TransType formatTrans, bool needWait, bool svmFlag, bool srcswap, bool dstswap) { std::vector outputShape = tensorShapeFormat(input); uint32_t outputGlobalWorkSize[2] = {static_cast(UP_DIV(outputShape[3], 4) * outputShape[2]), static_cast(outputShape[0] * outputShape[1])}; - if (convertBufferKernel.get() == nullptr) { - std::set buildOptions; - std::string kernelName = "nc4hw4_buffer_to_nc4hw4_buffer"; - switch (formatTrans) { - case InpTrans: - kernelName += "_floatin"; - break; - case OutTrans: - kernelName += "_floatout"; - break; - default: - break; - } - convertBufferKernel = runtime->buildKernel("buffer_convert_buf", kernelName, buildOptions); + std::set buildOptions; + std::string kernelName = "nc4hw4_buffer_to_nc4hw4_buffer"; + switch (formatTrans) { + case InpTrans: + AddBuildOptionOfDataType(input, output, buildOptions, runtime->isSupportedFP16(), true, false); + break; + case OutTrans: + AddBuildOptionOfDataType(input, output, buildOptions, runtime->isSupportedFP16(), false, true); + break; + default: + AddBuildOptionOfDataType(input, output, buildOptions, runtime->isSupportedFP16(), true, true); + break; } + auto convertBufferKernelW = runtime->buildKernelWithCache("buffer_convert_buf", kernelName, buildOptions); + auto convertBufferKernel = convertBufferKernelW->get(); uint32_t idx = 0; int outputImageShape[2] = {input->height(), input->width()}; int channelC4 = UP_DIV(input->channel(), 4); @@ -140,7 +228,7 @@ bool convertNC4HW4BufferToNC4HW4Buffer(const Tensor *input, Tensor *output, cl:: ret |= convertBufferKernel.setArg(idx++, openCLBuffer(output)); MNN_CHECK_CL_SUCCESS(ret, "setArg convertNC4HW4BufferToNC4HW4Buffer"); - const uint32_t maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(convertBufferKernel)); + const uint32_t maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(convertBufferKernelW)); const std::vector lws = {16, std::max((uint32_t)1, maxWorkGroupSize / 16)}; cl::Event event; cl_int res; @@ -159,7 +247,7 @@ bool convertNC4HW4BufferToNC4HW4Buffer(const Tensor *input, Tensor *output, cl:: } #ifdef MNN_SUPPORT_INTEL_SUBGROUP -bool convertNC4HW4BufferBetweenNC16HW16Buffer(const Tensor *input, Tensor *output, cl::Kernel &convertBufferKernel, const std::string Name, +bool convertNC4HW4BufferBetweenNC16HW16Buffer(const Tensor *input, Tensor *output, const std::string Name, OpenCLRuntime *runtime, TransType formatTrans, bool needWait, bool svmFlag, bool srcswap, bool dstswap) { std::vector outputShape = tensorShapeFormat(input); @@ -168,20 +256,20 @@ bool convertNC4HW4BufferBetweenNC16HW16Buffer(const Tensor *input, Tensor *outpu std::string kernelName = Name; auto inputpad = TensorUtils::getDescribe(input)->mPads; auto outputpad = TensorUtils::getDescribe(output)->mPads; - if (convertBufferKernel.get() == nullptr) { - std::set buildOptions; - switch (formatTrans) { - case InpTrans: - kernelName += "_floatin"; - break; - case OutTrans: - kernelName += "_floatout"; - break; - default: - break; - } - convertBufferKernel = runtime->buildKernel("buffer_convert_subgroup_buf", kernelName, buildOptions); + std::set buildOptions; + switch (formatTrans) { + case InpTrans: + AddBuildOptionOfDataType(input, output, buildOptions, runtime->isSupportedFP16(), true, false); + break; + case OutTrans: + AddBuildOptionOfDataType(input, output, buildOptions, runtime->isSupportedFP16(), false, true); + break; + default: + AddBuildOptionOfDataType(input, output, buildOptions, runtime->isSupportedFP16(), true, true); + break; } + auto convertBufferKernelW = runtime->buildKernelWithCache("buffer_convert_subgroup_buf", kernelName, buildOptions); + auto convertBufferKernel = convertBufferKernelW->get(); uint32_t idx = 0; int outputImageShape[2] = {input->height(), input->width()}; int inchannelPack = UP_DIV(input->channel(), TensorUtils::getTensorChannelPack(input)); @@ -219,7 +307,7 @@ bool convertNC4HW4BufferBetweenNC16HW16Buffer(const Tensor *input, Tensor *outpu ret |= convertBufferKernel.setArg(idx++, static_cast(outchannelPack)); MNN_CHECK_CL_SUCCESS(ret, "setArg convertNC4HW4BufferBetweenNC16HW16Buffer"); - const uint32_t maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(convertBufferKernel)); + const uint32_t maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(convertBufferKernelW)); const std::vector lws = {16, std::max((uint32_t)1, maxWorkGroupSize / 16)}; cl::Event event; cl_int res; @@ -238,7 +326,7 @@ bool convertNC4HW4BufferBetweenNC16HW16Buffer(const Tensor *input, Tensor *outpu } #endif /* MNN_SUPPORT_INTEL_SUBGROUP */ -bool convertNC4HW4OrNC16HW16BufferToNCHWOrNHWCBuffer(const Tensor *input, Tensor *output, cl::Kernel &convertBufferKernel, const std::string Name, OpenCLRuntime *runtime, bool needOutTrans, bool needWait, bool svmFlag) { +bool convertNC4HW4OrNC16HW16BufferToNCHWOrNHWCBuffer(const Tensor *input, Tensor *output, const std::string Name, OpenCLRuntime *runtime, bool needOutTrans, bool needWait, bool svmFlag) { std::vector inputShape = tensorShapeFormat(input); std::string kernelName = Name; std::string sourceName = "buffer_convert_buf"; @@ -254,14 +342,10 @@ bool convertNC4HW4OrNC16HW16BufferToNCHWOrNHWCBuffer(const Tensor *input, Tensor #endif uint32_t in_gws[2] = {static_cast(UP_DIV(inputShape[3], cPack) * inputShape[2]), static_cast(inputShape[0] * inputShape[1])}; - - if (convertBufferKernel.get() == nullptr) { - std::set buildOptions; - if(needOutTrans) { - kernelName += "_floatout"; - } - convertBufferKernel = runtime->buildKernel(sourceName, kernelName, buildOptions); - } + std::set buildOptions; + AddBuildOptionOfDataType(input, output, buildOptions, runtime->isSupportedFP16(), false, true); + auto convertBufferKernelW = runtime->buildKernelWithCache(sourceName, kernelName, buildOptions); + auto convertBufferKernel = convertBufferKernelW->get(); uint32_t idx = 0; cl_int ret = CL_SUCCESS; @@ -290,7 +374,7 @@ bool convertNC4HW4OrNC16HW16BufferToNCHWOrNHWCBuffer(const Tensor *input, Tensor } MNN_CHECK_CL_SUCCESS(ret, "setArg convertNC4HW4OrNC16HW16BufferToNCHWOrNHWCBuffer"); - const uint32_t maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(convertBufferKernel)); + const uint32_t maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(convertBufferKernelW)); const std::vector lws = {16, std::max((uint32_t)1, maxWorkGroupSize / 16)}; cl::Event event; cl_int res; @@ -368,36 +452,37 @@ bool BufferConvertor::convertToNC4HW4Buffer(const Tensor *buffer, const OpenCLBu } else {/* More types to be supported. */} } #endif - mBufferToImageKernel = runtime->buildKernel("buffer_convert_buf", kernelName, buildOptions); + mBufferToImageKernel = runtime->buildKernelWithCache("buffer_convert_buf", kernelName, buildOptions, buffer, image); } + auto kernel = mBufferToImageKernel->get(); uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mBufferToImageKernel.setArg(idx++, gws[0]); - ret |= mBufferToImageKernel.setArg(idx++, gws[1]); + ret |= kernel.setArg(idx++, gws[0]); + ret |= kernel.setArg(idx++, gws[1]); - ret |= mBufferToImageKernel.setArg(idx++, openCLBuffer(buffer)); + ret |= kernel.setArg(idx++, openCLBuffer(buffer)); if (type == CONV2D_FILTER) { const int channelHeightWidthSumSize = buffer->buffer().dim[1].extent * buffer->buffer().dim[2].extent * buffer->buffer().dim[3].extent; const int heightWidthSumSize = buffer->buffer().dim[2].extent * buffer->buffer().dim[3].extent; int kernelShape[2] = {buffer->buffer().dim[2].extent, buffer->buffer().dim[3].extent}; - ret |= mBufferToImageKernel.setArg(idx++, static_cast(buffer->buffer().dim[0].extent)); - ret |= mBufferToImageKernel.setArg(idx++, sizeof(kernelShape),kernelShape); - ret |= mBufferToImageKernel.setArg(idx++, static_cast(channelHeightWidthSumSize)); - ret |= mBufferToImageKernel.setArg(idx++, static_cast(heightWidthSumSize)); + ret |= kernel.setArg(idx++, static_cast(buffer->buffer().dim[0].extent)); + ret |= kernel.setArg(idx++, sizeof(kernelShape),kernelShape); + ret |= kernel.setArg(idx++, static_cast(channelHeightWidthSumSize)); + ret |= kernel.setArg(idx++, static_cast(heightWidthSumSize)); } else if (type == DW_CONV2D_FILTER) { const int heightWidthSumSize = buffer->buffer().dim[2].extent * buffer->buffer().dim[3].extent; int kernelShape[4] = {buffer->buffer().dim[0].extent, buffer->buffer().dim[1].extent, buffer->buffer().dim[2].extent, buffer->buffer().dim[3].extent}; - ret |= mBufferToImageKernel.setArg(idx++, sizeof(kernelShape),kernelShape); - ret |= mBufferToImageKernel.setArg(idx++, static_cast(heightWidthSumSize)); + ret |= kernel.setArg(idx++, sizeof(kernelShape),kernelShape); + ret |= kernel.setArg(idx++, static_cast(heightWidthSumSize)); } else { MNN_PRINT("convertToNC4HW4Buffer type not support!\n"); return false; } - ret |= mBufferToImageKernel.setArg(idx++, openCLBuffer(image)); + ret |= kernel.setArg(idx++, openCLBuffer(image)); MNN_CHECK_CL_SUCCESS(ret, "setArg convertToNC4HW4Buffer"); const uint32_t maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mBufferToImageKernel)); @@ -411,7 +496,7 @@ bool BufferConvertor::convertToNC4HW4Buffer(const Tensor *buffer, const OpenCLBu roundUpGroupWorkSize[i] = ROUND_UP(gws[i], lws[i]); } - res = runtime->commandQueue().enqueueNDRangeKernel(mBufferToImageKernel, cl::NullRange, + res = runtime->commandQueue().enqueueNDRangeKernel(kernel, cl::NullRange, cl::NDRange(roundUpGroupWorkSize[0], roundUpGroupWorkSize[1]), cl::NDRange(lws[0], lws[1]), nullptr, &event); MNN_CHECK_CL_SUCCESS(res, "convertToNC4HW4Buffer"); diff --git a/source/backend/opencl/core/BufferConvertor.hpp b/source/backend/opencl/core/BufferConvertor.hpp index a0067fc4f..71514acbf 100644 --- a/source/backend/opencl/core/BufferConvertor.hpp +++ b/source/backend/opencl/core/BufferConvertor.hpp @@ -18,19 +18,19 @@ namespace MNN { namespace OpenCL { -bool converNCHWOrNHWCBufferToNC4HW4OrNC16HW16Buffer(const Tensor *input, Tensor *output, cl::Kernel &convertBufferKernel, const std::string Name, +bool converNCHWOrNHWCBufferToNC4HW4OrNC16HW16Buffer(const Tensor *input, Tensor *output, const std::string Name, OpenCLRuntime *runtime, bool needInpTrans = false, bool needWait = false, bool svmFlag = false); -bool convertNC4HW4OrNC16HW16BufferToNCHWOrNHWCBuffer(const Tensor *input, Tensor *output, cl::Kernel &convertBufferKernel, const std::string Name, +bool convertNC4HW4OrNC16HW16BufferToNCHWOrNHWCBuffer(const Tensor *input, Tensor *output, const std::string Name, OpenCLRuntime *runtime, bool needOutTrans = false, bool needWait = false, bool svmFlag = false); enum TransType {InpTrans = 0, OutTrans = 1, NoTrans = 2}; -bool convertNC4HW4BufferToNC4HW4Buffer(const Tensor *input, Tensor *output, cl::Kernel &convertBufferKernel, +bool convertNC4HW4BufferToNC4HW4Buffer(const Tensor *input, Tensor *output, OpenCLRuntime *runtime, TransType formatTrans = NoTrans, bool needWait = false, bool svmFlag = false, bool srcswap = false, bool dstswap = false); #ifdef MNN_SUPPORT_INTEL_SUBGROUP -bool convertNC4HW4BufferBetweenNC16HW16Buffer(const Tensor *input, Tensor *output, cl::Kernel &convertBufferKernel, const std::string Name, +bool convertNC4HW4BufferBetweenNC16HW16Buffer(const Tensor *input, Tensor *output, const std::string Name, OpenCLRuntime *runtime, TransType formatTrans = NoTrans, bool needWait = false, bool svmFlag = false, bool srcswap = false, bool dstswap = false); #endif @@ -44,9 +44,7 @@ class BufferConvertor { private: OpenCLRuntime *mOpenCLRuntime; - cl::Kernel mImageToBufferKernel; - std::string mImageToBufferKernelName; - cl::Kernel mBufferToImageKernel; + std::shared_ptr mBufferToImageKernel; std::string mBufferToImageKernelName; }; diff --git a/source/backend/opencl/core/BufferPool.cpp b/source/backend/opencl/core/BufferPool.cpp index e36d05199..89e09fcc5 100644 --- a/source/backend/opencl/core/BufferPool.cpp +++ b/source/backend/opencl/core/BufferPool.cpp @@ -9,7 +9,7 @@ #include "backend/opencl/core/BufferPool.hpp" namespace MNN { namespace OpenCL { -cl::Buffer* BufferPool::alloc(int size, bool separate) { +cl::Buffer* BufferPool::alloc(size_t size, bool separate) { if (!separate) { auto iter = mFreeList.lower_bound(size); if (iter != mFreeList.end()) { @@ -24,7 +24,7 @@ cl::Buffer* BufferPool::alloc(int size, bool separate) { node->size = size; node->buffer.reset(new cl::Buffer(mContext, mFlag, size, NULL, &ret)); if (nullptr == node->buffer.get() || ret != CL_SUCCESS) { - MNN_ERROR("Alloc Buffer %d error, code:%d \n", size, ret); + MNN_ERROR("Alloc Buffer %lu error, code:%d \n", size, ret); return nullptr; } mAllBuffer.insert(std::make_pair(node->buffer.get(), node)); diff --git a/source/backend/opencl/core/BufferPool.hpp b/source/backend/opencl/core/BufferPool.hpp index 0dbc9b199..b9acd5370 100644 --- a/source/backend/opencl/core/BufferPool.hpp +++ b/source/backend/opencl/core/BufferPool.hpp @@ -23,20 +23,20 @@ class BufferPool : public NonCopyable { mFlag = flags; } - cl::Buffer* alloc(int size, bool separate = false); + cl::Buffer* alloc(size_t size, bool separate = false); void recycle(cl::Buffer* buffer, bool release = false); void clear(); void releaseFreeList(); size_t totalSize() { return mTotalSize; } struct Node { - int size; + size_t size; std::shared_ptr buffer; }; private: std::map> mAllBuffer; - std::multimap> mFreeList; + std::multimap> mFreeList; cl::Context& mContext; cl_mem_flags mFlag; diff --git a/source/backend/opencl/core/ImageBufferConvertor.cpp b/source/backend/opencl/core/ImageBufferConvertor.cpp index 5a9d29df1..f4096f77b 100644 --- a/source/backend/opencl/core/ImageBufferConvertor.cpp +++ b/source/backend/opencl/core/ImageBufferConvertor.cpp @@ -10,17 +10,120 @@ namespace MNN { namespace OpenCL { -bool convertNCHWBufferToImage(const Tensor *input, Tensor *output, cl::Kernel &bufferToImageKernel, +static void AddBuildOptionOfDataTypeForImage(const Tensor *input, const Tensor *output, std::set &buildOptions, bool isfp16, bool toDevice, bool toHost){ + if(input->getType().code == halide_type_int) { + buildOptions.emplace("-DINPUT_TYPE_I=int"); + buildOptions.emplace("-DINPUT_TYPE_I4=int4"); + if(input->getType().bits == 8){ + buildOptions.emplace("-DINPUT_TYPE=char"); + buildOptions.emplace("-DINPUT_TYPE4=char4"); + buildOptions.emplace("-DRI_DATA=read_imagei"); + } else if(input->getType().bits == 32){ + buildOptions.emplace("-DINPUT_TYPE=int"); + buildOptions.emplace("-DINPUT_TYPE4=int4"); + buildOptions.emplace("-DRI_DATA=read_imagei"); + } else { + MNN_PRINT("opencl input datatype not support, bit:%d\n", input->getType().bits); + MNN_ASSERT(false); + } + } else if(input->getType().code == halide_type_uint){ + buildOptions.emplace("-DINPUT_TYPE_I=uint"); + buildOptions.emplace("-DINPUT_TYPE_I4=uint4"); + if(input->getType().bits == 8){ + buildOptions.emplace("-DINPUT_TYPE=uchar"); + buildOptions.emplace("-DINPUT_TYPE4=uchar4"); + buildOptions.emplace("-DRI_DATA=read_imageui"); + } else if(input->getType().bits == 32){ + buildOptions.emplace("-DINPUT_TYPE=uint"); + buildOptions.emplace("-DINPUT_TYPE4=uint4"); + buildOptions.emplace("-DRI_DATA=read_imageui"); + } else { + MNN_PRINT("opencl input datatype not support, bit:%d\n", input->getType().bits); + MNN_ASSERT(false); + } + } else { + if(isfp16 && toHost){ + buildOptions.emplace("-DINPUT_TYPE_I=half"); + buildOptions.emplace("-DINPUT_TYPE_I4=half4"); + buildOptions.emplace("-DINPUT_TYPE=half"); + buildOptions.emplace("-DINPUT_TYPE4=half4"); + buildOptions.emplace("-DRI_DATA=read_imageh"); + }else{ + buildOptions.emplace("-DINPUT_TYPE_I=float"); + buildOptions.emplace("-DINPUT_TYPE_I4=float4"); + buildOptions.emplace("-DINPUT_TYPE=float"); + buildOptions.emplace("-DINPUT_TYPE4=float4"); + buildOptions.emplace("-DRI_DATA=read_imagef"); + } + } + + if(output->getType().code == halide_type_int) { + buildOptions.emplace("-DOUTPUT_TYPE_I=int"); + buildOptions.emplace("-DOUTPUT_TYPE_I4=int4"); + buildOptions.emplace("-DCONVERT_OUTPUT_I4=convert_int4"); + if(output->getType().bits == 8){ + buildOptions.emplace("-DOUTPUT_TYPE=char"); + buildOptions.emplace("-DOUTPUT_TYPE4=char4"); + buildOptions.emplace("-DCONVERT_OUTPUT4=convert_char4"); + buildOptions.emplace("-DWI_DATA=write_imagei"); + } else if(output->getType().bits == 32){ + buildOptions.emplace("-DOUTPUT_TYPE=int"); + buildOptions.emplace("-DOUTPUT_TYPE4=int4"); + buildOptions.emplace("-DCONVERT_OUTPUT4=convert_int4"); + buildOptions.emplace("-DWI_DATA=write_imagei"); + } else { + MNN_PRINT("opencl input datatype not support, bit:%d\n", output->getType().bits); + MNN_ASSERT(false); + } + } else if(output->getType().code == halide_type_uint){ + buildOptions.emplace("-DOUTPUT_TYPE_I=uint"); + buildOptions.emplace("-DOUTPUT_TYPE_I4=uint4"); + buildOptions.emplace("-DCONVERT_OUTPUT_I4=convert_uint4"); + if(output->getType().bits == 8){ + buildOptions.emplace("-DOUTPUT_TYPE=uchar"); + buildOptions.emplace("-DOUTPUT_TYPE4=uchar4"); + buildOptions.emplace("-DCONVERT_OUTPUT4=convert_uchar4"); + buildOptions.emplace("-DWI_DATA=write_imageui"); + } else if(output->getType().bits == 32){ + buildOptions.emplace("-DOUTPUT_TYPE=uint"); + buildOptions.emplace("-DOUTPUT_TYPE4=uint4"); + buildOptions.emplace("-DCONVERT_OUTPUT4=convert_uint4"); + buildOptions.emplace("-DWI_DATA=write_imageui"); + } else { + MNN_PRINT("opencl input datatype not support, bit:%d\n", output->getType().bits); + MNN_ASSERT(false); + } + } else { + if(isfp16 && toDevice){ + buildOptions.emplace("-DOUTPUT_TYPE_I=half"); + buildOptions.emplace("-DOUTPUT_TYPE_I4=half4"); + buildOptions.emplace("-DCONVERT_OUTPUT_I4=convert_half4"); + buildOptions.emplace("-DOUTPUT_TYPE=half"); + buildOptions.emplace("-DOUTPUT_TYPE4=half4"); + buildOptions.emplace("-DCONVERT_OUTPUT4=convert_half4"); + buildOptions.emplace("-DWI_DATA=write_imageh"); + }else{ + buildOptions.emplace("-DOUTPUT_TYPE_I=float"); + buildOptions.emplace("-DOUTPUT_TYPE_I4=float4"); + buildOptions.emplace("-DCONVERT_OUTPUT_I4=convert_float4"); + buildOptions.emplace("-DOUTPUT_TYPE=float"); + buildOptions.emplace("-DOUTPUT_TYPE4=float4"); + buildOptions.emplace("-DCONVERT_OUTPUT4=convert_float4"); + buildOptions.emplace("-DWI_DATA=write_imagef"); + } + } +} + +bool convertNCHWBufferToImage(const Tensor *input, Tensor *output, OpenCLRuntime *runtime, bool needWait, bool svmFlag) { std::vector outputShape = tensorShapeFormat(input); uint32_t outputGlobalWorkSize[2] = {static_cast(UP_DIV(outputShape[3], 4) * outputShape[2]), static_cast(outputShape[0] * outputShape[1])}; - if (bufferToImageKernel.get() == nullptr) { - std::set buildOptions; - buildOptions.emplace("-DBUFFER_IMAGE_IO_TRANS"); - bufferToImageKernel = runtime->buildKernel("buffer_to_image", "nchw_buffer_to_image", buildOptions); - } + std::set buildOptions; + AddBuildOptionOfDataTypeForImage(input, output, buildOptions, runtime->isSupportedFP16(), true, false); + auto bufferToImageKernelW = runtime->buildKernelWithCache("buffer_to_image", "nchw_buffer_to_image", buildOptions); + auto bufferToImageKernel = bufferToImageKernelW->get(); uint32_t idx = 0; cl_int ret = CL_SUCCESS; ret |= bufferToImageKernel.setArg(idx++, outputGlobalWorkSize[0]); @@ -41,7 +144,7 @@ bool convertNCHWBufferToImage(const Tensor *input, Tensor *output, cl::Kernel &b ret |= bufferToImageKernel.setArg(idx++, openCLImage(output)); MNN_CHECK_CL_SUCCESS(ret, "setArg convertNCHWBufferToImage"); - const uint32_t maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(bufferToImageKernel)); + const uint32_t maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(bufferToImageKernelW)); const std::vector lws = {16, std::max((uint32_t)1, maxWorkGroupSize / 16)}; cl::Event event; cl_int res; @@ -64,16 +167,16 @@ bool convertNCHWBufferToImage(const Tensor *input, Tensor *output, cl::Kernel &b return true; } -bool convertNHWCBufferToImage(const Tensor *input, Tensor *output, cl::Kernel &bufferToImageKernel, +bool convertNHWCBufferToImage(const Tensor *input, Tensor *output, OpenCLRuntime *runtime, bool needWait, bool svmFlag) { std::vector outputShape = tensorShapeFormat(input); uint32_t outputGlobalWorkSize[2] = {static_cast(UP_DIV(outputShape[3], 4) * outputShape[2]), static_cast(outputShape[0] * outputShape[1])}; - if (bufferToImageKernel.get() == nullptr) { - std::set buildOptions; - buildOptions.emplace("-DBUFFER_IMAGE_IO_TRANS"); - bufferToImageKernel = runtime->buildKernel("buffer_to_image", "nhwc_buffer_to_image", buildOptions); - } + + std::set buildOptions; + AddBuildOptionOfDataTypeForImage(input, output, buildOptions, runtime->isSupportedFP16(), true, false); + auto bufferToImageKernelW = runtime->buildKernelWithCache("buffer_to_image", "nhwc_buffer_to_image", buildOptions); + auto bufferToImageKernel = bufferToImageKernelW->get(); uint32_t idx = 0; cl_int ret = CL_SUCCESS; ret |= bufferToImageKernel.setArg(idx++, outputGlobalWorkSize[0]); @@ -93,7 +196,7 @@ bool convertNHWCBufferToImage(const Tensor *input, Tensor *output, cl::Kernel &b ret |= bufferToImageKernel.setArg(idx++, openCLImage(output)); MNN_CHECK_CL_SUCCESS(ret, "setArg convertNHWCBufferToImage"); - const uint32_t maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(bufferToImageKernel)); + const uint32_t maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(bufferToImageKernelW)); const std::vector lws = {16, std::max((uint32_t)1, maxWorkGroupSize / 16)}; cl::Event event; cl_int res; @@ -115,17 +218,17 @@ bool convertNHWCBufferToImage(const Tensor *input, Tensor *output, cl::Kernel &b return true; } -bool convertImageToNCHWBuffer(const Tensor *input, Tensor *output, cl::Kernel &imageToBufferKernel, +bool convertImageToNCHWBuffer(const Tensor *input, Tensor *output, OpenCLRuntime *runtime, bool needWait, bool svmFlag) { std::vector inputShape = tensorShapeFormat(input); uint32_t in_gws[2] = {static_cast(UP_DIV(inputShape[3], 4) * inputShape[2]), static_cast(inputShape[0] * inputShape[1])}; - if (imageToBufferKernel.get() == nullptr) { - std::set buildOptions; - buildOptions.emplace("-DBUFFER_IMAGE_IO_TRANS"); - imageToBufferKernel = runtime->buildKernel("buffer_to_image", "image_to_nchw_buffer", buildOptions); - } + + std::set buildOptions; + AddBuildOptionOfDataTypeForImage(input, output, buildOptions, runtime->isSupportedFP16(), false, true); + auto imageToBufferKernelW = runtime->buildKernelWithCache("buffer_to_image", "image_to_nchw_buffer", buildOptions); + auto imageToBufferKernel = imageToBufferKernelW->get(); uint32_t idx = 0; cl_int ret = CL_SUCCESS; @@ -147,7 +250,7 @@ bool convertImageToNCHWBuffer(const Tensor *input, Tensor *output, cl::Kernel &i ret |= imageToBufferKernel.setArg(idx++, openCLImage(input)); MNN_CHECK_CL_SUCCESS(ret, "setArg convertImageToNCHWBuffer"); - const uint32_t maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(imageToBufferKernel)); + const uint32_t maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(imageToBufferKernelW)); const std::vector lws = {16, std::max((uint32_t)1, maxWorkGroupSize / 16)}; cl::Event event; cl_int res; @@ -170,16 +273,16 @@ bool convertImageToNCHWBuffer(const Tensor *input, Tensor *output, cl::Kernel &i return true; } -bool convertNC4HW4BufferToImage(const Tensor *input, Tensor *output, cl::Kernel &bufferToImageKernel, +bool convertNC4HW4BufferToImage(const Tensor *input, Tensor *output, OpenCLRuntime *runtime, bool needWait, bool svmFlag) { uint32_t outputGlobalWorkSize[2] = {static_cast(UP_DIV(input->channel(), 4) * input->width()), static_cast(input->batch() * input->height())}; - if (bufferToImageKernel.get() == nullptr) { - std::set buildOptions; - buildOptions.emplace("-DBUFFER_IMAGE_IO_TRANS"); - bufferToImageKernel = runtime->buildKernel("buffer_to_image", "nc4hw4_buffer_to_image", buildOptions); - } + std::set buildOptions; + AddBuildOptionOfDataTypeForImage(input, output, buildOptions, runtime->isSupportedFP16(), true, false); + auto bufferToImageKernelW = runtime->buildKernelWithCache("buffer_to_image", "nc4hw4_buffer_to_image", buildOptions); + auto bufferToImageKernel = bufferToImageKernelW->get(); + uint32_t idx = 0; cl_int ret = CL_SUCCESS; int outputImageShape[2] = {input->height(), input->width()}; @@ -200,7 +303,7 @@ bool convertNC4HW4BufferToImage(const Tensor *input, Tensor *output, cl::Kernel ret |= bufferToImageKernel.setArg(idx++, openCLImage(output)); MNN_CHECK_CL_SUCCESS(ret, "setArg convertNC4HW4BufferToImage"); - const uint32_t maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(bufferToImageKernel)); + const uint32_t maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(bufferToImageKernelW)); const std::vector lws = {16, std::max((uint32_t)1, maxWorkGroupSize / 16)}; cl::Event event; cl_int res; @@ -231,17 +334,16 @@ bool convertNC4HW4BufferToImage(const Tensor *input, Tensor *output, cl::Kernel * @param needWait whether need wait opencl complete before return or not, default false. * @return true if success, false otherwise. */ -bool convertImageToNC4HW4Buffer(const Tensor *input, Tensor *output, cl::Kernel &imageToBufferKernel, +bool convertImageToNC4HW4Buffer(const Tensor *input, Tensor *output, OpenCLRuntime *runtime, bool needWait, bool svmFlag) { auto inputShape = tensorShapeFormat(input); uint32_t in_gws[2] = {static_cast(UP_DIV(inputShape.at(3), 4) * inputShape.at(2)), static_cast(inputShape.at(0) * inputShape.at(1))}; - if (imageToBufferKernel.get() == nullptr) { - std::set buildOptions; - buildOptions.emplace("-DBUFFER_IMAGE_IO_TRANS"); - imageToBufferKernel = runtime->buildKernel("buffer_to_image", "image_to_nc4hw4_buffer", buildOptions); - } + std::set buildOptions; + AddBuildOptionOfDataTypeForImage(input, output, buildOptions, runtime->isSupportedFP16(), false, true); + auto imageToBufferKernelW = runtime->buildKernelWithCache("buffer_to_image", "image_to_nc4hw4_buffer", buildOptions); + auto imageToBufferKernel = imageToBufferKernelW->get(); uint32_t idx = 0; int outputImageShape[2] = {inputShape.at(1), inputShape.at(2)}; @@ -263,7 +365,7 @@ bool convertImageToNC4HW4Buffer(const Tensor *input, Tensor *output, cl::Kernel ret |= imageToBufferKernel.setArg(idx++, openCLImage(input)); MNN_CHECK_CL_SUCCESS(ret, "setArg convertImageToNC4HW4Buffer"); - const uint32_t maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(imageToBufferKernel)); + const uint32_t maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(imageToBufferKernelW)); const std::vector lws = {16, std::max((uint32_t)1, maxWorkGroupSize / 16)}; cl::Event event; cl_int res; @@ -286,17 +388,17 @@ bool convertImageToNC4HW4Buffer(const Tensor *input, Tensor *output, cl::Kernel return true; } -bool convertImageToNHWCBuffer(const Tensor *input, Tensor *output, cl::Kernel &imageToBufferKernel, +bool convertImageToNHWCBuffer(const Tensor *input, Tensor *output, OpenCLRuntime *runtime, bool needWait, bool svmFlag) { std::vector inputShape = tensorShapeFormat(input); uint32_t in_gws[2] = {static_cast(UP_DIV(inputShape[3], 4) * inputShape[2]), static_cast(inputShape[0] * inputShape[1])}; - if (imageToBufferKernel.get() == nullptr) { - std::set buildOptions; - buildOptions.emplace("-DBUFFER_IMAGE_IO_TRANS"); - imageToBufferKernel = runtime->buildKernel("buffer_to_image", "image_to_nhwc_buffer", buildOptions); - } + + std::set buildOptions; + AddBuildOptionOfDataTypeForImage(input, output, buildOptions, runtime->isSupportedFP16(), false, true); + auto imageToBufferKernelW = runtime->buildKernelWithCache("buffer_to_image", "image_to_nhwc_buffer", buildOptions); + auto imageToBufferKernel = imageToBufferKernelW->get(); uint32_t idx = 0; cl_int ret = CL_SUCCESS; @@ -318,7 +420,7 @@ bool convertImageToNHWCBuffer(const Tensor *input, Tensor *output, cl::Kernel &i ret |= imageToBufferKernel.setArg(idx++, openCLImage(input)); MNN_CHECK_CL_SUCCESS(ret, "setArg convertImageToNHWCBuffer"); - const uint32_t maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(imageToBufferKernel)); + const uint32_t maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(imageToBufferKernelW)); const std::vector lws = {16, std::max((uint32_t)1, maxWorkGroupSize / 16)}; cl::Event event; cl_int res; @@ -367,35 +469,35 @@ bool ImageBufferConvertor::convertImageToBuffer(const Tensor *image, const OpenC mImageToBufferKernelName = kernelName; std::set buildOptions; - mImageToBufferKernel = runtime->buildKernel("buffer_to_image", kernelName, buildOptions); + mImageToBufferKernel = runtime->buildKernelWithCache("buffer_to_image", kernelName, buildOptions, image, buffer); } - + auto kernel = mImageToBufferKernel->get(); std::vector gws; getImageShape(formattedBufferShape, type, &gws); uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mImageToBufferKernel.setArg(idx++, gws[0]); - ret |= mImageToBufferKernel.setArg(idx++, gws[1]); + ret |= kernel.setArg(idx++, gws[0]); + ret |= kernel.setArg(idx++, gws[1]); - ret |= mImageToBufferKernel.setArg(idx++, openCLBuffer(buffer)); + ret |= kernel.setArg(idx++, openCLBuffer(buffer)); if (type == CONV2D_FILTER) { const int channelHeightWidthSumSize = buffer->buffer().dim[1].extent * buffer->buffer().dim[2].extent * buffer->buffer().dim[3].extent; const int heightWidthSumSize = buffer->buffer().dim[2].extent * buffer->buffer().dim[3].extent; int kernelShape[2] = {buffer->buffer().dim[2].extent, buffer->buffer().dim[3].extent}; - ret |= mImageToBufferKernel.setArg(idx++, static_cast(buffer->buffer().dim[0].extent)); - ret |= mImageToBufferKernel.setArg(idx++, sizeof(kernelShape), kernelShape); - ret |= mImageToBufferKernel.setArg(idx++, static_cast(channelHeightWidthSumSize)); - ret |= mImageToBufferKernel.setArg(idx++, static_cast(heightWidthSumSize)); + ret |= kernel.setArg(idx++, static_cast(buffer->buffer().dim[0].extent)); + ret |= kernel.setArg(idx++, sizeof(kernelShape), kernelShape); + ret |= kernel.setArg(idx++, static_cast(channelHeightWidthSumSize)); + ret |= kernel.setArg(idx++, static_cast(heightWidthSumSize)); } else if (type == ARGUMENT) { - ret |= mImageToBufferKernel.setArg(idx++, static_cast(buffer->buffer().dim[0].extent)); + ret |= kernel.setArg(idx++, static_cast(buffer->buffer().dim[0].extent)); } else { - ret |= mImageToBufferKernel.setArg(idx++, static_cast(formattedBufferShape[1])); - ret |= mImageToBufferKernel.setArg(idx++, static_cast(formattedBufferShape[2])); - ret |= mImageToBufferKernel.setArg(idx++, static_cast(formattedBufferShape[3])); + ret |= kernel.setArg(idx++, static_cast(formattedBufferShape[1])); + ret |= kernel.setArg(idx++, static_cast(formattedBufferShape[2])); + ret |= kernel.setArg(idx++, static_cast(formattedBufferShape[3])); } - ret |= mImageToBufferKernel.setArg(idx++, openCLImage(image)); + ret |= kernel.setArg(idx++, openCLImage(image)); MNN_CHECK_CL_SUCCESS(ret, "setArg convertImageToBuffer"); const uint32_t maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mImageToBufferKernel)); @@ -409,7 +511,7 @@ bool ImageBufferConvertor::convertImageToBuffer(const Tensor *image, const OpenC roundUpGroupWorkSize[i] = ROUND_UP(gws[i], lws[i]); } - res = runtime->commandQueue().enqueueNDRangeKernel(mImageToBufferKernel, cl::NullRange, + res = runtime->commandQueue().enqueueNDRangeKernel(kernel, cl::NullRange, cl::NDRange(roundUpGroupWorkSize[0], roundUpGroupWorkSize[1]), cl::NDRange(lws[0], lws[1]), nullptr, &event); @@ -464,48 +566,49 @@ bool ImageBufferConvertor::convertBufferToImage(const Tensor *buffer, const Open mBufferToImageKernelName = kernelName; std::set buildOptions; buildOptions.emplace(buildOption); - mBufferToImageKernel = runtime->buildKernel("buffer_to_image", kernelName, buildOptions); + mBufferToImageKernel = runtime->buildKernelWithCache("buffer_to_image", kernelName, buildOptions, buffer, image); } + auto kernel = mBufferToImageKernel->get(); uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mBufferToImageKernel.setArg(idx++, gws[0]); - ret |= mBufferToImageKernel.setArg(idx++, gws[1]); + ret |= kernel.setArg(idx++, gws[0]); + ret |= kernel.setArg(idx++, gws[1]); - ret |= mBufferToImageKernel.setArg(idx++, openCLBuffer(buffer)); + ret |= kernel.setArg(idx++, openCLBuffer(buffer)); if (type == CONV2D_FILTER) { const int channelHeightWidthSumSize = buffer->buffer().dim[1].extent * buffer->buffer().dim[2].extent * buffer->buffer().dim[3].extent; const int heightWidthSumSize = buffer->buffer().dim[2].extent * buffer->buffer().dim[3].extent; int kernelShape[2] = {buffer->buffer().dim[2].extent, buffer->buffer().dim[3].extent}; - ret |= mBufferToImageKernel.setArg(idx++, static_cast(buffer->buffer().dim[0].extent)); - ret |= mBufferToImageKernel.setArg(idx++, sizeof(kernelShape),kernelShape); - ret |= mBufferToImageKernel.setArg(idx++, static_cast(channelHeightWidthSumSize)); - ret |= mBufferToImageKernel.setArg(idx++, static_cast(heightWidthSumSize)); + ret |= kernel.setArg(idx++, static_cast(buffer->buffer().dim[0].extent)); + ret |= kernel.setArg(idx++, sizeof(kernelShape),kernelShape); + ret |= kernel.setArg(idx++, static_cast(channelHeightWidthSumSize)); + ret |= kernel.setArg(idx++, static_cast(heightWidthSumSize)); } else if (type == DW_CONV2D_FILTER) { const int heightWidthSumSize = buffer->buffer().dim[2].extent * buffer->buffer().dim[3].extent; int kernelShape[4] = {buffer->buffer().dim[0].extent, buffer->buffer().dim[1].extent, buffer->buffer().dim[2].extent, buffer->buffer().dim[3].extent}; - ret |= mBufferToImageKernel.setArg(idx++, sizeof(kernelShape),kernelShape); - ret |= mBufferToImageKernel.setArg(idx++, static_cast(heightWidthSumSize)); + ret |= kernel.setArg(idx++, sizeof(kernelShape),kernelShape); + ret |= kernel.setArg(idx++, static_cast(heightWidthSumSize)); } else if (type == ARGUMENT) { - ret |= mBufferToImageKernel.setArg(idx++, static_cast(buffer->buffer().dim[0].extent)); + ret |= kernel.setArg(idx++, static_cast(buffer->buffer().dim[0].extent)); } else if(type == CONV2D1x1_OPT_FILTER){ const int channelHeightWidthSumSize = buffer->buffer().dim[1].extent * buffer->buffer().dim[2].extent * buffer->buffer().dim[3].extent; const int heightWidthSumSize = buffer->buffer().dim[2].extent * buffer->buffer().dim[3].extent; int kernelShape[2] = {buffer->buffer().dim[2].extent, buffer->buffer().dim[3].extent}; - ret |= mBufferToImageKernel.setArg(idx++, static_cast(buffer->buffer().dim[1].extent)); - ret |= mBufferToImageKernel.setArg(idx++, sizeof(kernelShape),kernelShape); - ret |= mBufferToImageKernel.setArg(idx++, static_cast(channelHeightWidthSumSize)); - ret |= mBufferToImageKernel.setArg(idx++, static_cast(heightWidthSumSize)); + ret |= kernel.setArg(idx++, static_cast(buffer->buffer().dim[1].extent)); + ret |= kernel.setArg(idx++, sizeof(kernelShape),kernelShape); + ret |= kernel.setArg(idx++, static_cast(channelHeightWidthSumSize)); + ret |= kernel.setArg(idx++, static_cast(heightWidthSumSize)); }else { - ret |= mBufferToImageKernel.setArg(idx++, static_cast(formattedBufferShape[1])); - ret |= mBufferToImageKernel.setArg(idx++, static_cast(formattedBufferShape[2])); - ret |= mBufferToImageKernel.setArg(idx++, static_cast(formattedBufferShape[3])); + ret |= kernel.setArg(idx++, static_cast(formattedBufferShape[1])); + ret |= kernel.setArg(idx++, static_cast(formattedBufferShape[2])); + ret |= kernel.setArg(idx++, static_cast(formattedBufferShape[3])); } - ret |= mBufferToImageKernel.setArg(idx++, openCLImage(image)); + ret |= kernel.setArg(idx++, openCLImage(image)); MNN_CHECK_CL_SUCCESS(ret, "setArg convertBufferToImage"); const uint32_t maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mBufferToImageKernel)); @@ -519,7 +622,7 @@ bool ImageBufferConvertor::convertBufferToImage(const Tensor *buffer, const Open roundUpGroupWorkSize[i] = ROUND_UP(gws[i], lws[i]); } - res = runtime->commandQueue().enqueueNDRangeKernel(mBufferToImageKernel, cl::NullRange, + res = runtime->commandQueue().enqueueNDRangeKernel(kernel, cl::NullRange, cl::NDRange(roundUpGroupWorkSize[0], roundUpGroupWorkSize[1]), cl::NDRange(lws[0], lws[1]), nullptr, &event); MNN_CHECK_CL_SUCCESS(res, "convertBufferToImage"); diff --git a/source/backend/opencl/core/ImageBufferConvertor.hpp b/source/backend/opencl/core/ImageBufferConvertor.hpp index 0e1d259d3..24a9d595f 100644 --- a/source/backend/opencl/core/ImageBufferConvertor.hpp +++ b/source/backend/opencl/core/ImageBufferConvertor.hpp @@ -24,7 +24,7 @@ namespace OpenCL { * @param needWait whether need wait opencl complete before return or not, default false. * @return true if success, false otherwise. */ -bool convertNCHWBufferToImage(const Tensor *input, Tensor *output, cl::Kernel &bufferToImageKernel, +bool convertNCHWBufferToImage(const Tensor *input, Tensor *output, OpenCLRuntime *runtime, bool needWait = false, bool svmFlag = false); /** * @brief convert nhwc buffer to image. @@ -35,7 +35,7 @@ bool convertNCHWBufferToImage(const Tensor *input, Tensor *output, cl::Kernel &b * @param needWait whether need wait opencl complete before return or not, default false. * @return true if success, false otherwise. */ -bool convertNHWCBufferToImage(const Tensor *input, Tensor *output, cl::Kernel &bufferToImageKernel, +bool convertNHWCBufferToImage(const Tensor *input, Tensor *output, OpenCLRuntime *runtime, bool needWait = false, bool svmFlag = false); /** * @brief convert image to nchw buffer. @@ -46,7 +46,7 @@ bool convertNHWCBufferToImage(const Tensor *input, Tensor *output, cl::Kernel &b * @param needWait whether need wait opencl complete before return or not, default false. * @return true if success, false otherwise. */ -bool convertImageToNCHWBuffer(const Tensor *input, Tensor *output, cl::Kernel &imageToBufferKernel, +bool convertImageToNCHWBuffer(const Tensor *input, Tensor *output, OpenCLRuntime *runtime, bool needWait = false, bool svmFlag = false); /** * @brief convert nc/4hwc%4 buffer to image. @@ -57,7 +57,7 @@ bool convertImageToNCHWBuffer(const Tensor *input, Tensor *output, cl::Kernel &i * @param needWait whether need wait opencl complete before return or not, default false. * @return true if success, false otherwise. */ -bool convertNC4HW4BufferToImage(const Tensor *input, Tensor *output, cl::Kernel &bufferToImageKernel, +bool convertNC4HW4BufferToImage(const Tensor *input, Tensor *output, OpenCLRuntime *runtime, bool needWait = false, bool svmFlag = false); /** @@ -69,7 +69,7 @@ bool convertNC4HW4BufferToImage(const Tensor *input, Tensor *output, cl::Kernel * @param needWait whether need wait opencl complete before return or not, default false. * @return true if success, false otherwise. */ -bool convertImageToNC4HW4Buffer(const Tensor *input, Tensor *output, cl::Kernel &imageToBufferKernel, +bool convertImageToNC4HW4Buffer(const Tensor *input, Tensor *output, OpenCLRuntime *runtime, bool needWait = false, bool svmFlag = false); /** * @brief convert image to nhwc buffer. @@ -80,7 +80,7 @@ bool convertImageToNC4HW4Buffer(const Tensor *input, Tensor *output, cl::Kernel * @param needWait whether need wait opencl complete before return or not, default false. * @return true if success, false otherwise. */ -bool convertImageToNHWCBuffer(const Tensor *input, Tensor *output, cl::Kernel &imageToBufferKernel, +bool convertImageToNHWCBuffer(const Tensor *input, Tensor *output, OpenCLRuntime *runtime, bool needWait = false, bool svmFlag = false); class ImageBufferConvertor { @@ -94,9 +94,9 @@ class ImageBufferConvertor { private: OpenCLRuntime *mOpenCLRuntime; - cl::Kernel mImageToBufferKernel; + std::shared_ptr mImageToBufferKernel; std::string mImageToBufferKernelName; - cl::Kernel mBufferToImageKernel; + std::shared_ptr mBufferToImageKernel; std::string mBufferToImageKernelName; }; diff --git a/source/backend/opencl/core/ImagePool.cpp b/source/backend/opencl/core/ImagePool.cpp index a24dc51b8..62aafcc42 100644 --- a/source/backend/opencl/core/ImagePool.cpp +++ b/source/backend/opencl/core/ImagePool.cpp @@ -15,7 +15,7 @@ cl::Image* ImagePool::alloc(int w, int h, cl_channel_type type, bool separate) { auto findIter = mFreeList.end(); for (auto iterP = mFreeList.begin(); iterP != mFreeList.end(); iterP++) { auto& iter = *iterP; - if (iter->w >= w && iter->h >= h) { + if (iter->w >= w && iter->h >= h && iter->type == type) { int waste = iter->w * iter->h - w * h; if (minWaste == 0 || waste < minWaste) { findIter = iterP; @@ -33,6 +33,7 @@ cl::Image* ImagePool::alloc(int w, int h, cl_channel_type type, bool separate) { cl_int ret = CL_SUCCESS; node->w = w; node->h = h; + node->type = type; node->image.reset( new cl::Image2D(mContext, CL_MEM_READ_WRITE, cl::ImageFormat(CL_RGBA, type), w, h, 0, nullptr, &ret)); if (nullptr == node->image.get() || ret != CL_SUCCESS) { diff --git a/source/backend/opencl/core/ImagePool.hpp b/source/backend/opencl/core/ImagePool.hpp index bca99692e..65b0323d3 100644 --- a/source/backend/opencl/core/ImagePool.hpp +++ b/source/backend/opencl/core/ImagePool.hpp @@ -29,6 +29,7 @@ class ImagePool : public NonCopyable { struct Node { int w; int h; + cl_channel_type type; std::shared_ptr image; }; diff --git a/source/backend/opencl/core/OpenCLBackend.cpp b/source/backend/opencl/core/OpenCLBackend.cpp index 1a266fbb6..b730cf5dc 100644 --- a/source/backend/opencl/core/OpenCLBackend.cpp +++ b/source/backend/opencl/core/OpenCLBackend.cpp @@ -181,48 +181,6 @@ bool CLRuntime::onSetCache(const void* buffer, size_t size) { } } bool res = mOpenCLRuntime->setCache(std::make_pair(buffer, size)); - - #ifndef MNN_OPENCL_BUFFER_CLOSED - if(mOpenCLRuntime->getGpuMemType() == BUFFER) - { - std::set buildOptions; - //when input or output need buffer2image transformation, open macro BUFFER_IMAGE_IO_TRANS - //because cpu input and output are fp32 -#ifdef MNN_SUPPORT_INTEL_SUBGROUP - if (mOpenCLRuntime->isSupportedIntelSubgroup()) { - mNCHWBufferToNC16HW16BufferInp = mOpenCLRuntime->buildKernel("buffer_convert_subgroup_buf", "nchw_buffer_to_nc16hw16_buffer_floatin", buildOptions); - mNHWCBufferToNC16HW16BufferInp = mOpenCLRuntime->buildKernel("buffer_convert_subgroup_buf", "nhwc_buffer_to_nc16hw16_buffer_floatin", buildOptions); - mNC4HW4BufferToNC16HW16BufferInp = mOpenCLRuntime->buildKernel("buffer_convert_subgroup_buf", "nc4hw4_buffer_to_nc16hw16_buffer_floatin", buildOptions); - - mNC16HW16BufferToNHWCBufferOut = mOpenCLRuntime->buildKernel("buffer_convert_subgroup_buf", "nc16hw16_buffer_to_nhwc_buffer_floatout", buildOptions); - mNC16HW16BufferToNCHWBufferOut = mOpenCLRuntime->buildKernel("buffer_convert_subgroup_buf", "nc16hw16_buffer_to_nchw_buffer_floatout", buildOptions); - mNC16HW16BufferToNC4HW4BufferOut = mOpenCLRuntime->buildKernel("buffer_convert_subgroup_buf", "nc16hw16_buffer_to_nc4hw4_buffer_floatout", buildOptions); - } -#endif - mNCHWBufferToNC4HW4BufferInp = mOpenCLRuntime->buildKernel("buffer_convert_buf", "nchw_buffer_to_nc4hw4_buffer_floatin", buildOptions); - mNHWCBufferToNC4HW4BufferInp = mOpenCLRuntime->buildKernel("buffer_convert_buf", "nhwc_buffer_to_nc4hw4_buffer_floatin", buildOptions); - mNC4HW4BufferToNC4HW4BufferInp = mOpenCLRuntime->buildKernel("buffer_convert_buf", "nc4hw4_buffer_to_nc4hw4_buffer_floatin", buildOptions); - - mNC4HW4BufferToNHWCBufferOut = mOpenCLRuntime->buildKernel("buffer_convert_buf", "nc4hw4_buffer_to_nhwc_buffer_floatout", buildOptions); - mNC4HW4BufferToNCHWBufferOut = mOpenCLRuntime->buildKernel("buffer_convert_buf", "nc4hw4_buffer_to_nchw_buffer_floatout", buildOptions); - mNC4HW4BufferToNC4HW4BufferOut = mOpenCLRuntime->buildKernel("buffer_convert_buf", "nc4hw4_buffer_to_nc4hw4_buffer_floatout", buildOptions); - - mNC4HW4BufferToNC4HW4Buffer = mOpenCLRuntime->buildKernel("buffer_convert_buf", "nc4hw4_buffer_to_nc4hw4_buffer", buildOptions); - } - else - #endif /* MNN_OPENCL_BUFFER_CLOSED */ - { - std::set buildOptions; - //when input or output need buffer2image transformation, open macro BUFFER_IMAGE_IO_TRANS - //because cpu input and output are fp32 - buildOptions.emplace("-DBUFFER_IMAGE_IO_TRANS"); - mNC4HW4BufferToImageFloat = mOpenCLRuntime->buildKernel("buffer_to_image", "nc4hw4_buffer_to_image", buildOptions); - mNCHWBufferToImageFloat = mOpenCLRuntime->buildKernel("buffer_to_image", "nchw_buffer_to_image", buildOptions); - mNHWCBufferToImageFloat = mOpenCLRuntime->buildKernel("buffer_to_image", "nhwc_buffer_to_image", buildOptions); - mImageToNC4HW4BufferFloat = mOpenCLRuntime->buildKernel("buffer_to_image", "image_to_nc4hw4_buffer", buildOptions); - mImageToNHWCBufferFloat = mOpenCLRuntime->buildKernel("buffer_to_image", "image_to_nhwc_buffer", buildOptions); - mImageToNCHWBufferFloat = mOpenCLRuntime->buildKernel("buffer_to_image", "image_to_nchw_buffer", buildOptions); - } return res; } @@ -270,8 +228,10 @@ OpenCLBackend::OpenCLBackend(std::shared_ptrimgPool, std::shared_ptr< mIsCreateError = true; } - mImagePool.reset(new ImagePool(mOpenCLRuntime->context())); - mBufferPool.reset(new BufferPool(mOpenCLRuntime->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR)); + mImagePoolFirst.reset(new ImagePool(mOpenCLRuntime->context())); + mBufferPoolFirst.reset(new BufferPool(mOpenCLRuntime->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR)); + mImagePool = mImagePoolFirst.get(); + mBufferPool = mBufferPoolFirst.get(); } mMapMem = std::make_pair(0, nullptr); mUseRecordQueue = mOpenCLRuntime->isSupportRecordQueue(); @@ -352,6 +312,7 @@ Backend::MemObj* OpenCLBackend::onAcquire(const Tensor* nativeTensor, StorageTyp #ifndef MNN_OPENCL_BUFFER_CLOSED if(mOpenCLRuntime->getGpuMemType() == BUFFER) { size_t size; + size_t typeSize = 4; if (nativeTensor->dimensions() >= 2) { auto alignC = ROUND_UP(C, 8); // increment of height and width @@ -363,7 +324,6 @@ Backend::MemObj* OpenCLBackend::onAcquire(const Tensor* nativeTensor, StorageTyp size = nativeTensor->elementSize(); size = ROUND_UP(size, 4); } - if (mOpenCLRuntime->isSupportedIntelSubgroup()) { int cPack = TensorUtils::getTensorChannelPack(nativeTensor); auto pads = TensorUtils::getDescribe(nativeTensor)->mPads; @@ -373,21 +333,23 @@ Backend::MemObj* OpenCLBackend::onAcquire(const Tensor* nativeTensor, StorageTyp } cl_channel_type dataType = CL_FLOAT; //when support and want fp16, use half datatype - if (getOpenCLRuntime()->isSupportedFP16()) { - dataType = CL_HALF_FLOAT; + if ((nativeTensor->getType().code == halide_type_int || nativeTensor->getType().code == halide_type_uint)){ + if(nativeTensor->getType().bits == 8){ + typeSize = 1; + } + } else if (getOpenCLRuntime()->isSupportedFP16()) { + typeSize = 2; } if (storageType == DYNAMIC_SEPERATE) { - auto buffer = mBufferPool->alloc(size* - (dataType==CL_HALF_FLOAT?sizeof(half_float::half):sizeof(float)), true); + auto buffer = mBufferPool->alloc(size*typeSize, true); ((Tensor*)nativeTensor)->buffer().device = (uint64_t)buffer; - return new CLMemReleaseBuffer(buffer, mBufferPool.get()); + return new CLMemReleaseBuffer(buffer, mBufferPool); } if (storageType == DYNAMIC) { - auto buffer = mBufferPool->alloc(size* - (dataType==CL_HALF_FLOAT?sizeof(half_float::half):sizeof(float))); + auto buffer = mBufferPool->alloc(size*typeSize); ((Tensor*)nativeTensor)->buffer().device = (uint64_t)buffer; - return new CLMemReleaseBuffer(buffer, mBufferPool.get()); + return new CLMemReleaseBuffer(buffer, mBufferPool); } MNN_ASSERT(storageType == STATIC); #ifdef MNN_LOW_MEMORY @@ -416,20 +378,34 @@ Backend::MemObj* OpenCLBackend::onAcquire(const Tensor* nativeTensor, StorageTyp size_t imageWidth = (size_t) (UP_DIV(C, 4) * W);//image mode only C pack to 4 size_t imageHeight = (size_t)N * H; cl_channel_type dataType = CL_HALF_FLOAT; - //when user want high precision, use float datatype - if (mPrecision == BackendConfig::Precision_High) { - dataType = CL_FLOAT; + if(nativeTensor->getType().code == halide_type_int) { + if(nativeTensor->getType().bits == 8){ + dataType = CL_SIGNED_INT8; + } else if(nativeTensor->getType().bits == 32){ + dataType = CL_SIGNED_INT32; + } + } else if(nativeTensor->getType().code == halide_type_uint){ + if(nativeTensor->getType().bits == 8){ + dataType = CL_UNSIGNED_INT8; + } else if(nativeTensor->getType().bits == 32){ + dataType = CL_UNSIGNED_INT32; + } + } else { + //when user want high precision, use float datatype + if (mPrecision == BackendConfig::Precision_High) { + dataType = CL_FLOAT; + } } if (storageType == DYNAMIC_SEPERATE) { auto image = mImagePool->alloc(imageWidth, imageHeight, dataType, true); ((Tensor*)nativeTensor)->buffer().device = (uint64_t)image; // fix - return new CLMemReleaseImage(image, mImagePool.get()); + return new CLMemReleaseImage(image, mImagePool); } if (storageType == DYNAMIC) { auto image = mImagePool->alloc(imageWidth, imageHeight, dataType); ((Tensor*)nativeTensor)->buffer().device = (uint64_t)image; // fix - return new CLMemReleaseImage(image, mImagePool.get()); + return new CLMemReleaseImage(image, mImagePool); } MNN_ASSERT(storageType == STATIC); auto image = mStaticImagePool->alloc(imageWidth, imageHeight, dataType); @@ -438,6 +414,24 @@ Backend::MemObj* OpenCLBackend::onAcquire(const Tensor* nativeTensor, StorageTyp } } +bool OpenCLBackend::onSelectDynamicAllocator(int index, int maxIndex) { + if (maxIndex > 2) { + return false; + } + if (maxIndex > 1 && mImagePoolSecond.get() == nullptr) { + mImagePoolSecond.reset(new ImagePool(mOpenCLRuntime->context())); + mBufferPoolSecond.reset(new BufferPool(mOpenCLRuntime->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR)); + } + if (index == 0) { + mImagePool = mImagePoolFirst.get(); + mBufferPool = mBufferPoolFirst.get(); + } else if (index == 1) { + mImagePool = mImagePoolSecond.get(); + mBufferPool = mBufferPoolSecond.get(); + } + return true; +} + bool OpenCLBackend::onClearBuffer() { mImagePool->clear(); mBufferPool->clear(); @@ -468,6 +462,12 @@ Execution* OpenCLBackend::onCreate(const std::vector& inputs, const std #ifdef OPENCL_FALLBACK_LOG MNN_PRINT("Don't support type %s for int8 input\n", EnumNameOpType(op->type())); #endif + for (int i = 0; i < inputs.size(); ++i) { + TensorUtils::setTensorSupportPack(inputs[i], false); + } + for (int i = 0; i < outputs.size(); ++i) { + TensorUtils::setTensorSupportPack(outputs[i], false); + } return NULL; } if (iter == creators->end()) { @@ -479,6 +479,12 @@ Execution* OpenCLBackend::onCreate(const std::vector& inputs, const std MNN_PRINT("Don't support type %s memObject:%d\n", EnumNameOpType(op->type()), mOpenCLRuntime->getGpuMemType()); } #endif + for (int i = 0; i < inputs.size(); ++i) { + TensorUtils::setTensorSupportPack(inputs[i], false); + } + for (int i = 0; i < outputs.size(); ++i) { + TensorUtils::setTensorSupportPack(outputs[i], false); + } return NULL; } @@ -517,6 +523,12 @@ Execution* OpenCLBackend::onCreate(const std::vector& inputs, const std } MNN_PRINT("beyond cl_image creat size! fallback to cpu backend\n"); #endif + for (int i = 0; i < inputs.size(); ++i) { + TensorUtils::setTensorSupportPack(inputs[i], false); + } + for (int i = 0; i < outputs.size(); ++i) { + TensorUtils::setTensorSupportPack(outputs[i], false); + } return NULL; } } @@ -531,6 +543,12 @@ Execution* OpenCLBackend::onCreate(const std::vector& inputs, const std MNN_PRINT("The Creator Don't support type %s, memObject:%d,\n", EnumNameOpType(op->type()), mOpenCLRuntime->getGpuMemType()); } #endif + for (int i = 0; i < inputs.size(); ++i) { + TensorUtils::setTensorSupportPack(inputs[i], false); + } + for (int i = 0; i < outputs.size(); ++i) { + TensorUtils::setTensorSupportPack(outputs[i], false); + } return NULL; } #ifdef LOG_VERBOSE @@ -592,8 +610,13 @@ void OpenCLBackend::_allocHostBuffer(int length, const Tensor* srcTensor) const #endif else{ MNN_ASSERT(length > 0); + cl_int res; mHostBuffer.first = length; - mHostBuffer.second.reset(new cl::Buffer(mOpenCLRuntime->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, length)); + mHostBuffer.second.reset(new cl::Buffer(mOpenCLRuntime->context(), (cl_mem_flags)(CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR), (size_t)length, NULL, &res)); + if (nullptr == mHostBuffer.second.get() || res != CL_SUCCESS) { + MNN_ERROR("Alloc mHostBuffer %d error, code:%d \n", length, res); + return; + } } } @@ -654,26 +677,26 @@ void CLRuntime::convertFromDevice(const Tensor* srcTensor, const Tensor* dstTens if(mOpenCLRuntime->getGpuMemType() == BUFFER) { if(MNN_FORWARD_OPENGL == memtype){ - OpenCL::convertNC4HW4BufferToImage(srcTensor, const_cast(dstTensor), *const_cast(&mNC4HW4BufferToImageFloat), mOpenCLRuntime.get(), false, svmFlag); + OpenCL::convertNC4HW4BufferToImage(srcTensor, const_cast(dstTensor), mOpenCLRuntime.get(), false, svmFlag); std::vector map = {openCLImage(dstTensor)}; mOpenCLRuntime->commandQueue().enqueueReleaseGLObjects(&map, NULL); return; } #ifdef MNN_SUPPORT_INTEL_SUBGROUP int cPack = TensorUtils::getTensorChannelPack(srcTensor); - if (cPack == 16 && mOpenCLRuntime->isSupportedIntelSubgroup()) { + if (cPack == 16) { switch (data_format) { case MNN_DATA_FORMAT_NHWC: OpenCL::convertNC4HW4OrNC16HW16BufferToNCHWOrNHWCBuffer(srcTensor, const_cast(dstTensor), - *const_cast(&mNC16HW16BufferToNHWCBufferOut), "nc16hw16_buffer_to_nhwc_buffer", mOpenCLRuntime.get(), true, false, svmFlag); + "nc16hw16_buffer_to_nhwc_buffer", mOpenCLRuntime.get(), true, false, svmFlag); break; case MNN_DATA_FORMAT_NCHW: OpenCL::convertNC4HW4OrNC16HW16BufferToNCHWOrNHWCBuffer(srcTensor, const_cast(dstTensor), - *const_cast(&mNC16HW16BufferToNCHWBufferOut), "nc16hw16_buffer_to_nchw_buffer", mOpenCLRuntime.get(), true, false, svmFlag); + "nc16hw16_buffer_to_nchw_buffer", mOpenCLRuntime.get(), true, false, svmFlag); break; case MNN_DATA_FORMAT_NC4HW4: OpenCL::convertNC4HW4BufferBetweenNC16HW16Buffer(srcTensor, const_cast(dstTensor), - *const_cast(&mNC16HW16BufferToNC4HW4BufferOut), "nc16hw16_buffer_to_nc4hw4_buffer", mOpenCLRuntime.get(), OutTrans, false, svmFlag, false, true); + "nc16hw16_buffer_to_nc4hw4_buffer", mOpenCLRuntime.get(), OutTrans, false, svmFlag, false, true); break; default: MNN_PRINT("output data format not support for subgroup!\n"); @@ -685,15 +708,15 @@ void CLRuntime::convertFromDevice(const Tensor* srcTensor, const Tensor* dstTens switch (data_format) { case MNN_DATA_FORMAT_NHWC: OpenCL::convertNC4HW4OrNC16HW16BufferToNCHWOrNHWCBuffer(srcTensor, const_cast(dstTensor), - *const_cast(&mNC4HW4BufferToNHWCBufferOut), "nc4hw4_buffer_to_nhwc_buffer", mOpenCLRuntime.get(), true, false, svmFlag); + "nc4hw4_buffer_to_nhwc_buffer", mOpenCLRuntime.get(), true, false, svmFlag); break; case MNN_DATA_FORMAT_NCHW: OpenCL::convertNC4HW4OrNC16HW16BufferToNCHWOrNHWCBuffer(srcTensor, const_cast(dstTensor), - *const_cast(&mNC4HW4BufferToNCHWBufferOut), "nc4hw4_buffer_to_nchw_buffer", mOpenCLRuntime.get(), true, false, svmFlag); + "nc4hw4_buffer_to_nchw_buffer", mOpenCLRuntime.get(), true, false, svmFlag); break; case MNN_DATA_FORMAT_NC4HW4: OpenCL::convertNC4HW4BufferToNC4HW4Buffer(srcTensor, const_cast(dstTensor), - *const_cast(&mNC4HW4BufferToNC4HW4BufferOut), mOpenCLRuntime.get(), OutTrans, false, svmFlag, false, true); + mOpenCLRuntime.get(), OutTrans, false, svmFlag, false, true); break; default: MNN_PRINT("output data format not support!\n"); @@ -717,16 +740,14 @@ void CLRuntime::convertFromDevice(const Tensor* srcTensor, const Tensor* dstTens } switch (data_format) { case MNN_DATA_FORMAT_NHWC: - OpenCL::convertImageToNHWCBuffer(srcTensor, const_cast(dstTensor), - *const_cast(&mImageToNHWCBufferFloat), mOpenCLRuntime.get(), false, svmFlag); + OpenCL::convertImageToNHWCBuffer(srcTensor, const_cast(dstTensor), mOpenCLRuntime.get(), false, svmFlag); break; case MNN_DATA_FORMAT_NCHW: - OpenCL::convertImageToNCHWBuffer(srcTensor, const_cast(dstTensor), - *const_cast(&mImageToNCHWBufferFloat), mOpenCLRuntime.get(), false, svmFlag); + OpenCL::convertImageToNCHWBuffer(srcTensor, const_cast(dstTensor), mOpenCLRuntime.get(), false, svmFlag); break; case MNN_DATA_FORMAT_NC4HW4: OpenCL::convertImageToNC4HW4Buffer(srcTensor, const_cast(dstTensor), - *const_cast(&mImageToNC4HW4BufferFloat), mOpenCLRuntime.get(), false, svmFlag); + mOpenCLRuntime.get(), false, svmFlag); break; default: break; @@ -737,31 +758,7 @@ void CLRuntime::convertFromDevice(const Tensor* srcTensor, const Tensor* dstTens void OpenCLBackend::copyFromDevice(const Tensor* srcTensor, const Tensor* dstTensor) const{ auto needSize = dstTensor->size(); - void* hostPtr; - void* tmpPtr; - if(dstTensor->getType().code == halide_type_int) { - if(dstTensor->getType().bits == 8){ - needSize *= 4; - hostPtr = malloc(needSize); - } else if(dstTensor->getType().bits == 32){ - hostPtr = malloc(needSize); - } else { - MNN_PRINT("opencl input datatype not support, bit:%d\n", dstTensor->getType().bits); - MNN_ASSERT(false); - } - } else if(dstTensor->getType().code == halide_type_uint){ - if(dstTensor->getType().bits == 8){ - needSize *= 4; - hostPtr = malloc(needSize); - } else if(dstTensor->getType().bits == 32){ - hostPtr = malloc(needSize); - } else { - MNN_PRINT("opencl input datatype not support, bit:%d\n", dstTensor->getType().bits); - MNN_ASSERT(false); - } - } else { - hostPtr = dstTensor->host(); - } + void* hostPtr = dstTensor->host(); _allocHostBuffer(needSize, dstTensor); @@ -774,49 +771,16 @@ void OpenCLBackend::copyFromDevice(const Tensor* srcTensor, const Tensor* dstTen mCLRuntime->convertFromDevice(srcTensor, (const Tensor*)&interTensor, data_format, false); mOpenCLRuntime->printEventTime(); + cl_int res; #ifdef ENABLE_OPENCL_TIME_PROFILER mOpenCLRuntime->commandQueue().finish(); { AUTOTIME; - mOpenCLRuntime->commandQueue().enqueueReadBuffer(*mHostBuffer.second, CL_TRUE, 0, needSize, hostPtr); + res = mOpenCLRuntime->commandQueue().enqueueReadBuffer(*mHostBuffer.second, CL_TRUE, 0, needSize, hostPtr); } #else - mOpenCLRuntime->commandQueue().enqueueReadBuffer(*mHostBuffer.second, CL_TRUE, 0, needSize, hostPtr); + res = mOpenCLRuntime->commandQueue().enqueueReadBuffer(*mHostBuffer.second, CL_TRUE, 0, needSize, hostPtr); #endif - - if(dstTensor->getType().code == halide_type_int) { - if(dstTensor->getType().bits == 8){ - tmpPtr = dstTensor->host(); - for(int i=0; igetType().bits == 32){ - tmpPtr = dstTensor->host(); - for(int i=0; igetType().code == halide_type_uint){ - if(dstTensor->getType().bits == 8){ - tmpPtr = dstTensor->host(); - for(int i=0; igetType().bits == 32){ - tmpPtr = dstTensor->host(); - for(int i=0; igetGpuMemType() == BUFFER) { if(MNN_FORWARD_OPENGL == memtype){ - OpenCL::convertImageToNC4HW4Buffer(srcTensor, const_cast(dstTensor), *const_cast(&mImageToNC4HW4BufferFloat), mOpenCLRuntime.get(), false, svmFlag); + OpenCL::convertImageToNC4HW4Buffer(srcTensor, const_cast(dstTensor),mOpenCLRuntime.get(), false, svmFlag); std::vector map = {openCLImage(srcTensor)}; mOpenCLRuntime->commandQueue().enqueueReleaseGLObjects(&map, NULL); return; } #ifdef MNN_SUPPORT_INTEL_SUBGROUP int cPack = TensorUtils::getTensorChannelPack(dstTensor); - if (cPack == 16 && mOpenCLRuntime->isSupportedIntelSubgroup()) { + if (cPack == 16) { if (MNN_DATA_FORMAT_NHWC == data_format) { - OpenCL::converNCHWOrNHWCBufferToNC4HW4OrNC16HW16Buffer(srcTensor, const_cast(dstTensor), - *const_cast(&mNHWCBufferToNC16HW16BufferInp), "nhwc_buffer_to_nc16hw16_buffer", mOpenCLRuntime.get(), true, false, svmFlag); + OpenCL::converNCHWOrNHWCBufferToNC4HW4OrNC16HW16Buffer(srcTensor, const_cast(dstTensor), "nhwc_buffer_to_nc16hw16_buffer", mOpenCLRuntime.get(), true, false, svmFlag); } else if (MNN_DATA_FORMAT_NCHW == data_format) { - OpenCL::converNCHWOrNHWCBufferToNC4HW4OrNC16HW16Buffer(srcTensor, const_cast(dstTensor), - *const_cast(&mNCHWBufferToNC16HW16BufferInp), "nchw_buffer_to_nc16hw16_buffer", mOpenCLRuntime.get(), true, false, svmFlag); + OpenCL::converNCHWOrNHWCBufferToNC4HW4OrNC16HW16Buffer(srcTensor, const_cast(dstTensor), "nchw_buffer_to_nc16hw16_buffer", mOpenCLRuntime.get(), true, false, svmFlag); } else if (MNN_DATA_FORMAT_NC4HW4 == data_format) { - OpenCL::convertNC4HW4BufferBetweenNC16HW16Buffer(srcTensor, const_cast(dstTensor), - *const_cast(&mNC4HW4BufferToNC16HW16BufferInp), "nc4hw4_buffer_to_nc16hw16_buffer", mOpenCLRuntime.get(), InpTrans, false, svmFlag, true, false); + OpenCL::convertNC4HW4BufferBetweenNC16HW16Buffer(srcTensor, const_cast(dstTensor), "nc4hw4_buffer_to_nc16hw16_buffer", mOpenCLRuntime.get(), InpTrans, false, svmFlag, true, false); } else { MNN_PRINT("input data format not support or subgroup\n"); MNN_ASSERT(false); @@ -851,14 +812,11 @@ void CLRuntime::convertToDevice(const Tensor* srcTensor, const Tensor* dstTensor #endif { if (MNN_DATA_FORMAT_NHWC == data_format) { - OpenCL::converNCHWOrNHWCBufferToNC4HW4OrNC16HW16Buffer(srcTensor, const_cast(dstTensor), - *const_cast(&mNHWCBufferToNC4HW4BufferInp), "nhwc_buffer_to_nc4hw4_buffer",mOpenCLRuntime.get(), true, false, svmFlag); + OpenCL::converNCHWOrNHWCBufferToNC4HW4OrNC16HW16Buffer(srcTensor, const_cast(dstTensor), "nhwc_buffer_to_nc4hw4_buffer",mOpenCLRuntime.get(), true, false, svmFlag); } else if (MNN_DATA_FORMAT_NCHW == data_format) { - OpenCL::converNCHWOrNHWCBufferToNC4HW4OrNC16HW16Buffer(srcTensor, const_cast(dstTensor), - *const_cast(&mNCHWBufferToNC4HW4BufferInp), "nchw_buffer_to_nc4hw4_buffer",mOpenCLRuntime.get(), true, false, svmFlag); + OpenCL::converNCHWOrNHWCBufferToNC4HW4OrNC16HW16Buffer(srcTensor, const_cast(dstTensor), "nchw_buffer_to_nc4hw4_buffer",mOpenCLRuntime.get(), true, false, svmFlag); } else if (MNN_DATA_FORMAT_NC4HW4 == data_format) { - OpenCL::convertNC4HW4BufferToNC4HW4Buffer(srcTensor, const_cast(dstTensor), - *const_cast(&mNC4HW4BufferToNC4HW4BufferInp), mOpenCLRuntime.get(), InpTrans, false, svmFlag, true, false); + OpenCL::convertNC4HW4BufferToNC4HW4Buffer(srcTensor, const_cast(dstTensor), mOpenCLRuntime.get(), InpTrans, false, svmFlag, true, false); } else { MNN_PRINT("input data format not support\n"); MNN_ASSERT(false); @@ -880,14 +838,11 @@ void CLRuntime::convertToDevice(const Tensor* srcTensor, const Tensor* dstTensor return; } if (MNN_DATA_FORMAT_NHWC == data_format) { - OpenCL::convertNHWCBufferToImage(srcTensor, const_cast(dstTensor), - *const_cast(&mNHWCBufferToImageFloat), mOpenCLRuntime.get(), false, svmFlag); + OpenCL::convertNHWCBufferToImage(srcTensor, const_cast(dstTensor), mOpenCLRuntime.get(), false, svmFlag); } else if (MNN_DATA_FORMAT_NCHW == data_format) { - OpenCL::convertNCHWBufferToImage(srcTensor, const_cast(dstTensor), - *const_cast(&mNCHWBufferToImageFloat), mOpenCLRuntime.get(), false, svmFlag); + OpenCL::convertNCHWBufferToImage(srcTensor, const_cast(dstTensor), mOpenCLRuntime.get(), false, svmFlag); } else if (MNN_DATA_FORMAT_NC4HW4 == data_format) { OpenCL::convertNC4HW4BufferToImage(srcTensor, const_cast(dstTensor), - *const_cast(&mNC4HW4BufferToImageFloat), mOpenCLRuntime.get(), false, svmFlag); } else { MNN_PRINT("data format not support\n"); @@ -899,46 +854,25 @@ void CLRuntime::convertToDevice(const Tensor* srcTensor, const Tensor* dstTensor void OpenCLBackend::copyToDevice(const Tensor* srcTensor, const Tensor* dstTensor) const{ auto needSize = srcTensor->size(); - - void* hostPtr; - void* tmpPtr; - if(srcTensor->getType().code == halide_type_int) { - //Copy maybe slow, TODO - if(srcTensor->getType().bits == 8){ - tmpPtr = srcTensor->host(); - needSize *= 4; - hostPtr = malloc(needSize); - for(int i=0; igetType().bits == 32){ - tmpPtr = srcTensor->host(); - hostPtr = malloc(needSize); - for(int i=0; igetType().code == halide_type_uint){ - //Copy maybe slow, TODO - if(srcTensor->getType().bits == 8){ - tmpPtr = srcTensor->host(); - needSize *= 4; - hostPtr = malloc(needSize); - for(int i=0; igetType().bits == 32){ - tmpPtr = srcTensor->host(); - hostPtr = malloc(needSize); - for(int i=0; igetGpuMemType() && 1 == shape[0] * shape[1] * shape[2] * shape[3]){ + void *tmpPtr; + void *hostPtr = srcTensor->host(); + if(srcTensor->getType().code == halide_type_float && mOpenCLRuntime->isSupportedFP16()) { + needSize /= 2; + void *tmpPtr = malloc(needSize); + ((half_float::half*)tmpPtr)[0] = (half_float::half)(((float*)hostPtr)[0]); + mOpenCLRuntime->commandQueue().enqueueWriteBuffer(openCLBuffer(dstTensor), CL_TRUE, 0, needSize, tmpPtr); + free(tmpPtr); + } else { + mOpenCLRuntime->commandQueue().enqueueWriteBuffer(openCLBuffer(dstTensor), CL_TRUE, 0, needSize, hostPtr); } - } else { - hostPtr = srcTensor->host(); + return; } + void* hostPtr = srcTensor->host(); + _allocHostBuffer(needSize, srcTensor); MNN::Tensor interTensor(srcTensor, srcTensor->getDimensionType(), false); @@ -948,23 +882,16 @@ void OpenCLBackend::copyToDevice(const Tensor* srcTensor, const Tensor* dstTenso mOpenCLRuntime->commandQueue().finish(); { AUTOTIME; - mOpenCLRuntime->commandQueue().enqueueWriteBuffer(*mHostBuffer.second, CL_TRUE, 0, srcTensor->elementSize()*sizeof(float), hostPtr); + mOpenCLRuntime->commandQueue().enqueueWriteBuffer(*mHostBuffer.second, CL_TRUE, 0, needSize, hostPtr); } #else - mOpenCLRuntime->commandQueue().enqueueWriteBuffer(*mHostBuffer.second, CL_TRUE, 0, srcTensor->elementSize()*sizeof(float), hostPtr); + mOpenCLRuntime->commandQueue().enqueueWriteBuffer(*mHostBuffer.second, CL_TRUE, 0, needSize, hostPtr); #endif //Covert format MNN_DATA_FORMAT data_format = TensorUtils::getDescribe(srcTensor)->dimensionFormat; mCLRuntime->convertToDevice((const Tensor*)&interTensor, dstTensor, data_format, false); - if(srcTensor->getType().code == halide_type_uint || srcTensor->getType().code == halide_type_int){ - mOpenCLRuntime.get()->commandQueue().finish(); - if(nullptr != hostPtr){ - free(hostPtr); - hostPtr = nullptr; - } - } return; } @@ -990,7 +917,10 @@ void OpenCLBackend::copyBetweenDevice(const Tensor* srcTensor, const Tensor* dst }else{ interTensor.buffer().device = (uint64_t)mHostBuffer.second.get(); } - + if(OpenCLSymbolsOperator::getOpenclSymbolsPtr()->isGlError() && MNN_FORWARD_OPENGL == memType){ + MNN_PRINT("This Device can not find OpenCL GL_EXTENTION function!\n"); + return; + } //Covert format MNN_DATA_FORMAT data_format = TensorUtils::getDescribe(copyTensor)->dimensionFormat; if(MNN_FORWARD_CPU != srcMemtype){ @@ -1005,8 +935,7 @@ void CLRuntime::copyBetweenDevice(const Tensor* srcTensor, const Tensor* dstTens #ifndef MNN_OPENCL_BUFFER_CLOSED if(mOpenCLRuntime->getGpuMemType() == BUFFER) { - OpenCL::convertNC4HW4BufferToNC4HW4Buffer(srcTensor, const_cast(dstTensor), - *const_cast(&mNC4HW4BufferToNC4HW4Buffer), mOpenCLRuntime.get(), NoTrans); + OpenCL::convertNC4HW4BufferToNC4HW4Buffer(srcTensor, const_cast(dstTensor), mOpenCLRuntime.get(), NoTrans); } else #endif /* MNN_OPENCL_BUFFER_CLOSED */ @@ -1341,11 +1270,12 @@ void OpenCLBackend::endRecord(cl_recording_qcom &recording, bool flag){ #endif //ENABLE_OPENCL_TIME_PROFILER } -void OpenCLBackend::recordKernel2d(const ::cl::Kernel &kernel, const std::vector &gws, const std::vector &lws) { +void OpenCLBackend::recordKernel2d(const std::shared_ptr &kernelW, const std::vector &gws, const std::vector &lws) { #if !defined(ENABLE_OPENCL_TIME_PROFILER) && defined(MNN_USE_LIB_WRAPPER) if(!mUseRecordQueue){ return; } + auto kernel = kernelW->get(); #ifdef LOG_VERBOSE MNN_PRINT("start record2dKernel !\n"); #endif @@ -1387,11 +1317,12 @@ void OpenCLBackend::recordKernel2d(const ::cl::Kernel &kernel, const std::vector #endif //ENABLE_OPENCL_TIME_PROFILER } -void OpenCLBackend::recordKernel3d(const ::cl::Kernel &kernel, const std::vector &gws, const std::vector &lws) { +void OpenCLBackend::recordKernel3d(const std::shared_ptr &kernelW, const std::vector &gws, const std::vector &lws) { #if !defined(ENABLE_OPENCL_TIME_PROFILER) && defined(MNN_USE_LIB_WRAPPER) if(!mUseRecordQueue){ return; } + auto kernel = kernelW->get(); #ifdef LOG_VERBOSE MNN_PRINT("start record3dKernel !\n"); #endif diff --git a/source/backend/opencl/core/OpenCLBackend.hpp b/source/backend/opencl/core/OpenCLBackend.hpp index b07cc037f..3e57bc941 100644 --- a/source/backend/opencl/core/OpenCLBackend.hpp +++ b/source/backend/opencl/core/OpenCLBackend.hpp @@ -65,30 +65,6 @@ class CLRuntime : public Runtime { friend class OpenCLBackend; TuneInfo* mTunedInfo; - cl::Kernel mImageToNCHWBufferFloat; - cl::Kernel mImageToNC4HW4BufferFloat; - cl::Kernel mImageToNHWCBufferFloat; - cl::Kernel mNC4HW4BufferToImageFloat; - cl::Kernel mNCHWBufferToImageFloat; - cl::Kernel mNHWCBufferToImageFloat; - cl::Kernel mNHWCBufferToImageInt8; - - cl::Kernel mNC4HW4BufferToNCHWBufferOut; - cl::Kernel mNC4HW4BufferToNHWCBufferOut; - cl::Kernel mNC4HW4BufferToNC4HW4BufferOut; - cl::Kernel mNC4HW4BufferToNC4HW4BufferInp; - cl::Kernel mNCHWBufferToNC4HW4BufferInp; - cl::Kernel mNHWCBufferToNC4HW4BufferInp; - cl::Kernel mNC4HW4BufferToNC4HW4Buffer; - -#ifdef MNN_SUPPORT_INTEL_SUBGROUP - cl::Kernel mNCHWBufferToNC16HW16BufferInp; - cl::Kernel mNHWCBufferToNC16HW16BufferInp; - cl::Kernel mNC4HW4BufferToNC16HW16BufferInp; - cl::Kernel mNC16HW16BufferToNHWCBufferOut; - cl::Kernel mNC16HW16BufferToNCHWBufferOut; - cl::Kernel mNC16HW16BufferToNC4HW4BufferOut; -#endif }; @@ -123,8 +99,9 @@ class OpenCLBackend : public Backend { static bool addCreator(std::pair t, Creator *c); BufferPool *getBufferPool() const { - return mBufferPool.get(); + return mBufferPool; } + virtual bool onSelectDynamicAllocator(int index, int maxIndex) override; BackendConfig::PrecisionMode getPrecision() const { return mPrecision; @@ -151,8 +128,8 @@ class OpenCLBackend : public Backend { void addRecord(cl_recording_qcom &record){ mRecordings.emplace_back(record); } - void recordKernel2d(const ::cl::Kernel &kernel, const std::vector &gws, const std::vector &lws); - void recordKernel3d(const ::cl::Kernel &kernel, const std::vector &gws, const std::vector &lws); + void recordKernel2d(const std::shared_ptr &kernel, const std::vector &gws, const std::vector &lws); + void recordKernel3d(const std::shared_ptr &kernel, const std::vector &gws, const std::vector &lws); void startRecord(cl_recording_qcom &recording); void endRecord(cl_recording_qcom &recording, bool flag = false); @@ -171,8 +148,14 @@ class OpenCLBackend : public Backend { const CLRuntime* mCLRuntime; - std::shared_ptr mImagePool; - std::shared_ptr mBufferPool; + std::shared_ptr mImagePoolSecond; + std::shared_ptr mBufferPoolSecond; + + ImagePool* mImagePool; + BufferPool* mBufferPool; + + std::shared_ptr mImagePoolFirst; + std::shared_ptr mBufferPoolFirst; std::shared_ptr mStaticImagePool; std::shared_ptr mStaticBufferPool; diff --git a/source/backend/opencl/core/OpenCLRunningUtils.cpp b/source/backend/opencl/core/OpenCLRunningUtils.cpp index 55bb5417d..28c87e3c1 100644 --- a/source/backend/opencl/core/OpenCLRunningUtils.cpp +++ b/source/backend/opencl/core/OpenCLRunningUtils.cpp @@ -9,6 +9,7 @@ #include "backend/opencl/core/OpenCLRunningUtils.hpp" #include #include +#include #include #include "core/Macro.h" @@ -43,9 +44,9 @@ void getImageShape(const std::vector &shape, const OpenCLBufferFormat type, } std::pair, uint32_t> localWS3DDefault(const std::vector &gws, const uint32_t maxWorkGroupSize, - OpenCLRuntime *runtime, const std::string &kernelName, const cl::Kernel &mKernel) { + OpenCLRuntime *runtime, const std::string &kernelName, const std::shared_ptr &mKernelW) { MNN_ASSERT(gws.size() == 3); - + auto mKernel = mKernelW->get(); auto maxWorkItemSizes = runtime->getMaxWorkItemSizes(); MNN_ASSERT(maxWorkItemSizes.size() >= 3); auto& tunedLws = runtime->tunedLwsMap(); @@ -273,8 +274,9 @@ std::pair, uint32_t> localWS3DDefault(const std::vector, uint32_t> localWS2DDefault(const std::vector &gws, const uint32_t maxWorkGroupSize, - OpenCLRuntime *runtime, const std::string &kernelName, const cl::Kernel &mKernel) { + OpenCLRuntime *runtime, const std::string &kernelName, const std::shared_ptr &mKernelW) { MNN_ASSERT(gws.size() == 2); + auto mKernel = mKernelW->get(); auto maxWorkItemSizes = runtime->getMaxWorkItemSizes(); MNN_ASSERT(maxWorkItemSizes.size() >= 2); @@ -471,26 +473,23 @@ std::pair, uint32_t> localWS2DDefault(const std::vector &gws, const std::vector &lws, +void run3DKernelDefault(const ::std::shared_ptr &kernelw, const std::vector &gws, const std::vector &lws, OpenCLRuntime *runtime, cl::Event* eventPtr) { #ifdef LOG_VERBOSE MNN_PRINT("start run3DKernelDefault !\n"); #endif + auto kernel = kernelw->get(); MNN_ASSERT(lws.size() >= 3); - std::vector internalGlobalWS = gws; - for (size_t i = 0; i < 3; ++i) { - internalGlobalWS[i] = ROUND_UP(gws[i], std::max((uint32_t)1, lws[i])); - } cl_int res = CL_SUCCESS; if(lws[0]==0 || lws[1]==0 || lws[2]==0){ res = runtime->commandQueue().enqueueNDRangeKernel( - kernel, cl::NullRange, cl::NDRange(internalGlobalWS[0], internalGlobalWS[1], internalGlobalWS[2]), + kernel, cl::NullRange, cl::NDRange(gws[0], gws[1], gws[2]), cl::NullRange, nullptr, eventPtr); }else{ res = runtime->commandQueue().enqueueNDRangeKernel( - kernel, cl::NullRange, cl::NDRange(internalGlobalWS[0], internalGlobalWS[1], internalGlobalWS[2]), + kernel, cl::NullRange, cl::NDRange(gws[0], gws[1], gws[2]), cl::NDRange(lws[0], lws[1], lws[2]), nullptr, eventPtr); } MNN_CHECK_CL_SUCCESS(res, "run3d"); @@ -512,25 +511,20 @@ void run3DKernelDefault(const ::cl::Kernel &kernel, const std::vector #endif } -void runKernel2D(const ::cl::Kernel &kernel, const std::vector &gws, const std::vector &lws, +void runKernel2D(const ::std::shared_ptr &kernelw, const std::vector &gws, const std::vector &lws, OpenCLRuntime *runtime, cl::Event* eventPtr) { #ifdef LOG_VERBOSE MNN_PRINT("start runKernel2D !\n"); #endif - - std::vector internalGlobalWS = gws; - for (size_t i = 0; i < 2; ++i) { - internalGlobalWS[i] = ROUND_UP(gws[i], std::max((uint32_t)1, lws[i])); - } - + auto kernel = kernelw->get(); cl_int res = CL_SUCCESS; if(lws[0]==0 || lws[1]==0){ res = runtime->commandQueue().enqueueNDRangeKernel( - kernel, cl::NullRange, cl::NDRange(internalGlobalWS[0], internalGlobalWS[1]), cl::NullRange, nullptr, eventPtr); + kernel, cl::NullRange, cl::NDRange(gws[0], gws[1]), cl::NullRange, nullptr, eventPtr); }else{ res = runtime->commandQueue().enqueueNDRangeKernel( - kernel, cl::NullRange, cl::NDRange(internalGlobalWS[0], internalGlobalWS[1]), cl::NDRange(lws[0], lws[1]), nullptr, eventPtr); + kernel, cl::NullRange, cl::NDRange(gws[0], gws[1]), cl::NDRange(lws[0], lws[1]), nullptr, eventPtr); } MNN_CHECK_CL_SUCCESS(res, "run2d"); @@ -557,7 +551,8 @@ void copyBufferToImage(OpenCLRuntime *runtime, const cl::Buffer &buffer, const c if(runtime->isWeightCpuTransHalf() == false) { buildOptions.emplace("-DBUFFER_INP_FP32"); } - auto kernel = runtime->buildKernel("copy_buffer_to_image2d", "copy_buffer_to_image2d", buildOptions); + auto kernelW = runtime->buildKernelWithCache("copy_buffer_to_image2d", "copy_buffer_to_image2d", buildOptions); + auto kernel = kernelW->get(); auto status = kernel.setArg(0, buffer); MNN_ASSERT(status == CL_SUCCESS); status = kernel.setArg(1, image); @@ -578,25 +573,20 @@ bool localWSTune(const std::mapsecond; int size = gws.size(); - int minPoint = INT_MAX; + uint32_t minPoint = UINT_MAX; int index = -1; for(int i = 0; i < gwsAndLws.size(); ++i){ int point = 0; for(int j = 0; j < size; ++j){ - point += std::abs((int)gws[j] - (int)gwsAndLws[i].first[j]); + point += ((uint32_t)gws[j] - (uint32_t)gwsAndLws[i].first[j]) * ((uint32_t)gws[j] - (uint32_t)gwsAndLws[i].first[j]); } + point = sqrt(point); if(point < minPoint){ index = i; minPoint = point; } } if(index != -1){ -// for(int i = 0; i < size; ++i){ -// float scale = (std::abs((float)gws[i] - (float)gwsAndLws[index].second[i])) / (float)gws[i]; -// if(scale >= minScale){ -// return localSize; -// } -// } res = gwsAndLws[index].second; } return true; diff --git a/source/backend/opencl/core/OpenCLRunningUtils.hpp b/source/backend/opencl/core/OpenCLRunningUtils.hpp index aebb302bd..eb5090e79 100644 --- a/source/backend/opencl/core/OpenCLRunningUtils.hpp +++ b/source/backend/opencl/core/OpenCLRunningUtils.hpp @@ -106,24 +106,24 @@ inline cl::Image &openCLImage(const Tensor *tensor) { void getImageShape(const std::vector &shape, /* NHWC */ const OpenCLBufferFormat type, std::vector *imageShape); -std::vector turnLocalSize(cl::Kernel *kernel, std::vector &gws, OpenCLRuntime *runtime); +std::vector turnLocalSize(std::shared_ptr *kernel, std::vector &gws, OpenCLRuntime *runtime); -void run3DKernelDefault(const ::cl::Kernel &kernel, const std::vector &gws, const std::vector &lws, +void run3DKernelDefault(const ::std::shared_ptr &kernel, const std::vector &gws, const std::vector &lws, OpenCLRuntime *runtime, cl::Event* eventPtr = nullptr); -void runKernel2D(const ::cl::Kernel &kernel, const std::vector &gws, const std::vector &lws, +void runKernel2D(const ::std::shared_ptr &kernel, const std::vector &gws, const std::vector &lws, OpenCLRuntime *runtime, cl::Event* eventPtr = nullptr); -void runTurnKernelLWS2D(const ::cl::Kernel &kernel, const std::vector &gws, const std::vector &lws, +void runTurnKernelLWS2D(const ::std::shared_ptr &kernel, const std::vector &gws, const std::vector &lws, OpenCLRuntime *runtime); std::pair, uint32_t> localWS3DDefault(const std::vector &gws, const uint32_t maxWorkGroupSize, - OpenCLRuntime *runtime, const std::string &kernelName, const cl::Kernel &mKernel); + OpenCLRuntime *runtime, const std::string &kernelName, const std::shared_ptr &mKernel); bool localWSTune(const std::map, std::pair, uint32_t>>>> &tuneMap, const std::vector &gws, const std::string &kernelName, std::pair, uint32_t> &res); std::pair, uint32_t> localWS2DDefault(const std::vector &gws, const uint32_t maxWorkGroupSize, - OpenCLRuntime *runtime, const std::string &kernelName, const cl::Kernel &mKernel); + OpenCLRuntime *runtime, const std::string &kernelName, const std::shared_ptr &mKernel); void copyBufferToImage(OpenCLRuntime *runtime, const cl::Buffer &buffer, const cl::Image &image, int w, int h); diff --git a/source/backend/opencl/core/runtime/OpenCLRuntime.cpp b/source/backend/opencl/core/runtime/OpenCLRuntime.cpp index e0c6364a2..99407c9bb 100644 --- a/source/backend/opencl/core/runtime/OpenCLRuntime.cpp +++ b/source/backend/opencl/core/runtime/OpenCLRuntime.cpp @@ -220,11 +220,17 @@ OpenCLRuntime::OpenCLRuntime(const BackendConfig::PrecisionMode precision, const mIsCreateError = true; return; } - +#ifdef ENABLE_OPENCL_TIME_PROFILER + mCommandQueueTuning = mCommandQueuePtr; +#else + mCommandQueueTuning = std::make_shared(*mContext, *mFirstGPUDevicePtr, CL_QUEUE_PROFILING_ENABLE, &res); +#endif + mCurrentCommandQueue = mCommandQueuePtr.get(); mFirstGPUDevicePtr->getInfo(CL_DEVICE_GLOBAL_MEM_CACHE_SIZE, &mGPUGlobalMemeryCacheSize); mFirstGPUDevicePtr->getInfo(CL_DEVICE_MAX_COMPUTE_UNITS, &mGPUComputeUnits); mFirstGPUDevicePtr->getInfo(CL_DEVICE_MAX_CLOCK_FREQUENCY, &mMaxFreq); - cl_device_fp_config fpConfig; + mFirstGPUDevicePtr->getInfo(CL_DEVICE_MAX_MEM_ALLOC_SIZE, &mMaxMemAllocSize); + cl_device_fp_config fpConfig; auto success = mFirstGPUDevicePtr->getInfo(CL_DEVICE_HALF_FP_CONFIG, &fpConfig); mIsDeviceSupportedFP16 = CL_SUCCESS == success && fpConfig > 0; @@ -238,7 +244,7 @@ OpenCLRuntime::OpenCLRuntime(const BackendConfig::PrecisionMode precision, const mMemType = IMAGE; } } - + auto permitFloat16 = false; if (precision == BackendConfig::Precision_Low || (mMemType == BUFFER && precision == BackendConfig::Precision_Normal)) {//buffer mode not support Normal Precision yet permitFloat16 = true; @@ -254,7 +260,9 @@ OpenCLRuntime::OpenCLRuntime(const BackendConfig::PrecisionMode precision, const #if !defined(ENABLE_OPENCL_TIME_PROFILER) && defined(MNN_USE_LIB_WRAPPER) { - if((false == OpenCLSymbolsOperator::getOpenclSymbolsPtr()->isQcomError()) && getDeviceSupportsExtension(*(mFirstGPUDevicePtr.get()), "cl_qcom_recordable_queues")){ + if((false == OpenCLSymbolsOperator::getOpenclSymbolsPtr()->isQcomError()) + && getDeviceSupportsExtension(*(mFirstGPUDevicePtr.get()), "cl_qcom_recordable_queues") + && (cl_mode & MNN_GPU_RECORD_OP || cl_mode & MNN_GPU_RECORD_BATCH)){ uint32_t MaxRecordableQueueSize = mFirstGPUDevicePtr->getInfo(); cl_int err; if(MaxRecordableQueueSize > 0){ @@ -280,6 +288,36 @@ OpenCLRuntime::OpenCLRuntime(const BackendConfig::PrecisionMode precision, const mIsCreateError = true; MNN_ASSERT(platforms.size() > 0); } + { + // Init info + size_t max_height, max_width; + res = mFirstGPUDevicePtr->getInfo(CL_DEVICE_IMAGE2D_MAX_HEIGHT, &max_height); + MNN_CHECK_CL_SUCCESS(res, "image2Dsize"); + res = mFirstGPUDevicePtr->getInfo(CL_DEVICE_IMAGE2D_MAX_WIDTH, &max_width); + MNN_CHECK_CL_SUCCESS(res, "image2Dsize"); + mMaxImageSize = {max_height, max_width}; + } + do { + int dims = 3; + res = mFirstGPUDevicePtr->getInfo(CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, &dims); + MNN_CHECK_CL_SUCCESS(res, "DeviceGetInfo"); + + if(dims < 3) { + std::vector workItem(3, 8); + mMaxWorkIterms = workItem; + break; + } + cl::vector _workItems(dims, 1); + res = mFirstGPUDevicePtr->getInfo(CL_DEVICE_MAX_WORK_ITEM_SIZES, &_workItems); + MNN_CHECK_CL_SUCCESS(res, "DeviceGetInfo"); + + std::vector workItems(dims, 1); + for (int i = 0; i < dims; ++i) { + workItems[i] = _workItems[i]; + } + mMaxWorkIterms = workItems; + } while(false); + } void OpenCLRuntime::setGpuMode(const int cl_mode_num) { @@ -352,23 +390,13 @@ void OpenCLRuntime::setGpuMode(const int cl_mode_num) { } void OpenCLRuntime::setCommandQueueProfileEnable() { - mCommandQueuePtr->finish(); - mCommandQueuePtr.reset(); - cl_command_queue_properties properties = CL_QUEUE_PROFILING_ENABLE; - - cl_int res; - mCommandQueuePtr = std::make_shared(*mContext, *mFirstGPUDevicePtr, properties, &res); - MNN_CHECK_CL_SUCCESS(res, "commandQueue"); + mCurrentCommandQueue->finish(); + mCurrentCommandQueue = mCommandQueueTuning.get(); } void OpenCLRuntime::setCommandQueueProfileDisable() { - mCommandQueuePtr->finish(); - mCommandQueuePtr.reset(); - cl_command_queue_properties properties = 0; - - cl_int res; - mCommandQueuePtr = std::make_shared(*mContext, *mFirstGPUDevicePtr, properties, &res); - MNN_CHECK_CL_SUCCESS(res, "commandQueue"); + mCurrentCommandQueue->finish(); + mCurrentCommandQueue = mCommandQueuePtr.get(); } unsigned int OpenCLRuntime::getQueueNum() { @@ -391,6 +419,7 @@ OpenCLRuntime::~OpenCLRuntime() { clearEvent(); mBuildProgramMap.clear(); mCommandQueuePtr.reset(); + mCommandQueueTuning.reset(); mRecordableQueuePtr.reset(); mContext.reset(); mFirstGPUDevicePtr.reset(); @@ -400,12 +429,7 @@ OpenCLRuntime::~OpenCLRuntime() { } std::vector OpenCLRuntime::getMaxImage2DSize() { - size_t max_height, max_width; - cl_int res = mFirstGPUDevicePtr->getInfo(CL_DEVICE_IMAGE2D_MAX_HEIGHT, &max_height); - MNN_CHECK_CL_SUCCESS(res, "image2Dsize"); - res = mFirstGPUDevicePtr->getInfo(CL_DEVICE_IMAGE2D_MAX_WIDTH, &max_width); - MNN_CHECK_CL_SUCCESS(res, "image2Dsize"); - return {max_height, max_width}; + return mMaxImageSize; } bool OpenCLRuntime::isSupportedFP16() const { @@ -443,7 +467,7 @@ cl::Context &OpenCLRuntime::context() { } cl::CommandQueue &OpenCLRuntime::commandQueue() { - return *mCommandQueuePtr; + return *mCurrentCommandQueue; } cl::CommandQueue &OpenCLRuntime::recordableQueue(){ @@ -502,8 +526,15 @@ bool OpenCLRuntime::buildProgram(const std::string &buildOptionsStr, cl::Program return true; } -cl::Kernel OpenCLRuntime::buildKernel(const std::string &programName, const std::string &kernelName, - const std::set &buildOptions) { + +std::shared_ptr OpenCLRuntime::buildKernel(const std::string &programName, const std::string &kernelName, + const std::set &buildOptions, const Tensor *input, const Tensor *output) { + auto kwp = buildKernelWithCache(programName, kernelName, buildOptions, input, output, true); + return kwp; +} + +std::shared_ptr OpenCLRuntime::buildKernelWithCache(const std::string &programName, const std::string &kernelName, + const std::set &buildOptions, const Tensor *input, const Tensor *output, bool useCache) { std::string buildOptionsStr; if (mIsSupportedFP16) { buildOptionsStr = "-DFLOAT=half -DFLOAT2=half2 -DFLOAT3=half3 -DFLOAT4=half4 -DFLOAT8=half8 -DFLOAT16=half16 -DRI_F=read_imageh -DWI_F=write_imageh -DCONVERT_FLOAT4=convert_half4 -DCONVERT_FLOAT8=convert_half8 -DCONVERT_FLOAT16=convert_half16 -DMNN_SUPPORT_FP16"; @@ -511,6 +542,112 @@ cl::Kernel OpenCLRuntime::buildKernel(const std::string &programName, const std: buildOptionsStr = "-DFLOAT=float -DFLOAT2=float2 -DFLOAT3=float3 -DFLOAT4=float4 -DFLOAT8=float8 -DRI_F=read_imagef -DFLOAT16=float16 -DWI_F=write_imagef -DCONVERT_FLOAT4=convert_float4 -DCONVERT_FLOAT8=convert_float8 -DCONVERT_FLOAT16=convert_float16"; } + if(nullptr != input){ + if(input->getType().code == halide_type_int) { + buildOptionsStr += " -DINPUT_TYPE_I=int"; + buildOptionsStr += " -DINPUT_TYPE_I4=int4"; + if(input->getType().bits == 8){ + buildOptionsStr += " -DINPUT_TYPE=char"; + buildOptionsStr += " -DINPUT_TYPE4=char4"; + buildOptionsStr += " -DRI_DATA=read_imagei"; + } else if(input->getType().bits == 32){ + buildOptionsStr += " -DINPUT_TYPE=int"; + buildOptionsStr += " -DINPUT_TYPE4=int4"; + buildOptionsStr += " -DRI_DATA=read_imagei"; + } else { + MNN_PRINT("opencl input datatype not support, bit:%d\n", input->getType().bits); + MNN_ASSERT(false); + } + } else if(input->getType().code == halide_type_uint){ + buildOptionsStr += " -DINPUT_TYPE_I=uint"; + buildOptionsStr += " -DINPUT_TYPE_I4=uint4"; + if(input->getType().bits == 8){ + buildOptionsStr += " -DINPUT_TYPE=uchar"; + buildOptionsStr += " -DINPUT_TYPE4=uchar4"; + buildOptionsStr += " -DRI_DATA=read_imageui"; + } else if(input->getType().bits == 32){ + buildOptionsStr += " -DINPUT_TYPE=uint"; + buildOptionsStr += " -DINPUT_TYPE4=uint4"; + buildOptionsStr += " -DRI_DATA=read_imageui"; + } else { + MNN_PRINT("opencl input datatype not support, bit:%d\n", input->getType().bits); + MNN_ASSERT(false); + } + } else { + if(mIsSupportedFP16){ + buildOptionsStr += " -DINPUT_TYPE_I=half"; + buildOptionsStr += " -DINPUT_TYPE_I4=half4"; + buildOptionsStr += " -DINPUT_TYPE=half"; + buildOptionsStr += " -DINPUT_TYPE4=half4"; + buildOptionsStr += " -DRI_DATA=read_imageh"; + }else{ + buildOptionsStr += " -DINPUT_TYPE_I=float"; + buildOptionsStr += " -DINPUT_TYPE_I4=float4"; + buildOptionsStr += " -DINPUT_TYPE=float"; + buildOptionsStr += " -DINPUT_TYPE4=float4"; + buildOptionsStr += " -DRI_DATA=read_imagef"; + } + } + } + + if(nullptr != output){ + if(output->getType().code == halide_type_int) { + buildOptionsStr += " -DOUTPUT_TYPE_I=int"; + buildOptionsStr += " -DOUTPUT_TYPE_I4=int4"; + buildOptionsStr += " -DCONVERT_OUTPUT_I4=convert_int4"; + if(output->getType().bits == 8){ + buildOptionsStr += " -DOUTPUT_TYPE=char"; + buildOptionsStr += " -DOUTPUT_TYPE4=char4"; + buildOptionsStr += " -DCONVERT_OUTPUT4=convert_char4"; + buildOptionsStr += " -DWI_DATA=write_imagei"; + } else if(output->getType().bits == 32){ + buildOptionsStr += " -DOUTPUT_TYPE=int"; + buildOptionsStr += " -DOUTPUT_TYPE4=int4"; + buildOptionsStr += " -DCONVERT_OUTPUT4=convert_int4"; + buildOptionsStr += " -DWI_DATA=write_imagei"; + } else { + MNN_PRINT("opencl input datatype not support, bit:%d\n", output->getType().bits); + MNN_ASSERT(false); + } + } else if(output->getType().code == halide_type_uint){ + buildOptionsStr += " -DOUTPUT_TYPE_I=uint"; + buildOptionsStr += " -DOUTPUT_TYPE_I4=uint4"; + buildOptionsStr += " -DCONVERT_OUTPUT_I4=convert_uint4"; + if(output->getType().bits == 8){ + buildOptionsStr += " -DOUTPUT_TYPE=uchar"; + buildOptionsStr += " -DOUTPUT_TYPE4=uchar4"; + buildOptionsStr += " -DCONVERT_OUTPUT4=convert_uchar4"; + buildOptionsStr += " -DWI_DATA=write_imageui"; + } else if(output->getType().bits == 32){ + buildOptionsStr += " -DOUTPUT_TYPE=uint"; + buildOptionsStr += " -DOUTPUT_TYPE4=uint4"; + buildOptionsStr += " -DCONVERT_OUTPUT4=convert_uint4"; + buildOptionsStr += " -DWI_DATA=write_imageui"; + } else { + MNN_PRINT("opencl input datatype not support, bit:%d\n", output->getType().bits); + MNN_ASSERT(false); + } + } else { + if(mIsSupportedFP16){ + buildOptionsStr += " -DOUTPUT_TYPE_I=half"; + buildOptionsStr += " -DOUTPUT_TYPE_I4=half4"; + buildOptionsStr += " -DCONVERT_OUTPUT_I4=convert_half4"; + buildOptionsStr += " -DOUTPUT_TYPE=half"; + buildOptionsStr += " -DOUTPUT_TYPE4=half4"; + buildOptionsStr += " -DCONVERT_OUTPUT4=convert_half4"; + buildOptionsStr += " -DWI_DATA=write_imageh"; + }else{ + buildOptionsStr += " -DOUTPUT_TYPE_I=float"; + buildOptionsStr += " -DOUTPUT_TYPE_I4=float4"; + buildOptionsStr += " -DCONVERT_OUTPUT_I4=convert_float4"; + buildOptionsStr += " -DOUTPUT_TYPE=float"; + buildOptionsStr += " -DOUTPUT_TYPE4=float4"; + buildOptionsStr += " -DCONVERT_OUTPUT4=convert_float4"; + buildOptionsStr += " -DWI_DATA=write_imagef"; + } + } + } + if(isSetWorkGroupAttribute) { buildOptionsStr += " -DSET_ATTRIBUTE=true"; } else { @@ -525,23 +662,43 @@ cl::Kernel OpenCLRuntime::buildKernel(const std::string &programName, const std: auto buildProgramInter = mBuildProgramMap.find(key); cl::Program program; if (buildProgramInter != mBuildProgramMap.end()) { - program = buildProgramInter->second; + program = buildProgramInter->second.program; } else { this->loadProgram(programName, &program); auto status = this->buildProgram(buildOptionsStr, &program); if (!status) { FUNC_PRINT_ALL(programName.c_str(), s); } - mBuildProgramMap.emplace(key, program); + ProgramWithKernel pwk; + pwk.program = program; + mBuildProgramMap.emplace(key, pwk); + buildProgramInter = mBuildProgramMap.find(key); + } + auto kiter = buildProgramInter->second.kernels.find(kernelName); + std::shared_ptr kernel; + bool firstCreate = false; + if (kiter == buildProgramInter->second.kernels.end()) { + KernelPool pool; + buildProgramInter->second.kernels.insert(std::make_pair(kernelName, pool)); + kiter = buildProgramInter->second.kernels.find(kernelName); + firstCreate = true; + } + if (kiter->second.recycle.empty()) { + cl_int res; + kernel.reset(new cl::Kernel(program, kernelName.c_str(), &res)); + MNN_CHECK_CL_SUCCESS(res, "getKernel"); + if (firstCreate) { + kernel->getWorkGroupInfo(*mFirstGPUDevicePtr, CL_KERNEL_WORK_GROUP_SIZE, &kiter->second.maxWorkGroupSize); + } + } else { + kernel = kiter->second.recycle.front(); + kiter->second.recycle.pop(); } - - cl_int res; - cl::Kernel kernel = cl::Kernel(program, kernelName.c_str(), &res); - MNN_CHECK_CL_SUCCESS(res, "getKernel"); - return kernel; + std::shared_ptr kw(new KernelWrap(kernel, &kiter->second)); + return kw; } -cl::Kernel OpenCLRuntime::buildKernelFromSource(const std::string& source, const std::string &kernelName, +std::shared_ptr OpenCLRuntime::buildKernelFromSource(const std::string& source, const std::string &kernelName, const std::set &buildOptions) { std::string buildOptionsStr; if (mIsSupportedFP16) { @@ -570,43 +727,31 @@ cl::Kernel OpenCLRuntime::buildKernelFromSource(const std::string& source, const // mBuildProgramMap.emplace(key, program); cl_int res; - cl::Kernel kernel = cl::Kernel(program, kernelName.c_str(), &res); + std::shared_ptr kernel; + kernel.reset(new cl::Kernel(program, kernelName.c_str(), &res)); MNN_CHECK_CL_SUCCESS(res, "getKernel"); - return kernel; + std::shared_ptr kw(new KernelWrap(kernel, nullptr)); + return kw; } -uint64_t OpenCLRuntime::getMaxWorkGroupSize(const cl::Kernel &kernel) { +uint64_t OpenCLRuntime::getMaxWorkGroupSize(std::shared_ptr kernel) { + if (nullptr != kernel->mRecycle) { + return kernel->mRecycle->maxWorkGroupSize; + } uint64_t maxWorkGroupSize = 0; - kernel.getWorkGroupInfo(*mFirstGPUDevicePtr, CL_KERNEL_WORK_GROUP_SIZE, &maxWorkGroupSize); + kernel->get().getWorkGroupInfo(*mFirstGPUDevicePtr, CL_KERNEL_WORK_GROUP_SIZE, &maxWorkGroupSize); return maxWorkGroupSize; } -uint64_t OpenCLRuntime::GetKernelWaveSize(const cl::Kernel &kernel) { +uint64_t OpenCLRuntime::GetKernelWaveSize(std::shared_ptr kernel) { uint64_t kernelWaveSize = 0; - kernel.getWorkGroupInfo(*mFirstGPUDevicePtr, CL_KERNEL_WAVE_SIZE_QCOM, &kernelWaveSize); + kernel->get().getWorkGroupInfo(*mFirstGPUDevicePtr, CL_KERNEL_WAVE_SIZE_QCOM, &kernelWaveSize); return kernelWaveSize; } std::vector OpenCLRuntime::getMaxWorkItemSizes() { - int dims = 3; - cl_int res = mFirstGPUDevicePtr->getInfo(CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, &dims); - MNN_CHECK_CL_SUCCESS(res, "DeviceGetInfo"); - - if(dims < 3) { - std::vector workItem(3, 8); - return workItem; - } - - cl::vector _workItems(dims, 1); - res = mFirstGPUDevicePtr->getInfo(CL_DEVICE_MAX_WORK_ITEM_SIZES, &_workItems); - MNN_CHECK_CL_SUCCESS(res, "DeviceGetInfo"); - - std::vector workItems(dims, 1); - for (int i = 0; i < dims; ++i) { - workItems[i] = _workItems[i]; - } - return workItems; + return mMaxWorkIterms; } double OpenCLRuntime::getCostTime(const cl::Event *event){ @@ -644,7 +789,7 @@ std::pair OpenCLRuntime::makeCache(void* tuneInfo) { // Get All program's binary for (auto& iter : mBuildProgramMap) { std::unique_ptr pro(new ShaderT); - auto program = iter.second; + auto program = iter.second.program; auto devicesNumber = program.getInfo(); auto devices = program.getInfo(); auto binSizes = program.getInfo(); @@ -725,7 +870,9 @@ bool OpenCLRuntime::setCache(std::pair cache) { MNN_ERROR("Can't build %s - %s load program\n", program.c_str(), buildinfo.c_str()); return false; } - mBuildProgramMap.insert(std::make_pair(std::make_tuple(program, buildinfo), pro)); + ProgramWithKernel pwk; + pwk.program = pro; + mBuildProgramMap.insert(std::make_pair(std::make_tuple(program, buildinfo), pwk)); } } @@ -759,6 +906,7 @@ void OpenCLRuntime::printEventTime(){ if(mEvents.empty()){ return; } + int raster_num = 0, raster_time = 0; for(int i = 0; i < mEvents.size(); ++i){ auto event = &mEvents[i].second; cl_int res = event->wait(); diff --git a/source/backend/opencl/core/runtime/OpenCLRuntime.hpp b/source/backend/opencl/core/runtime/OpenCLRuntime.hpp index bcef4c4f8..ea7085db9 100644 --- a/source/backend/opencl/core/runtime/OpenCLRuntime.hpp +++ b/source/backend/opencl/core/runtime/OpenCLRuntime.hpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -23,6 +24,7 @@ #include "Type_generated.h" #include "backend/opencl/core/runtime/OpenCLWrapper.hpp" #include "MNN/MNNForwardType.h" +#include "core/TensorUtils.hpp" namespace MNN { @@ -43,6 +45,27 @@ enum GpuMemObject { AUTO = 0, BUFFER = 1, IMAGE = 2}; enum CLTuneLevel { None = 0, Heavy = 1, Wide = 2, Normal = 3, Fast = 4}; enum SvmType { FINE_BUFFER = 0, COARSE_BUFFER = 1, SVM_NONE = 2}; +struct KernelPool { + uint64_t maxWorkGroupSize; + std::queue> recycle; +}; +class KernelWrap { +public: + KernelWrap(std::shared_ptr k, KernelPool* recycle) : mKernel(k), mRecycle(recycle) { + // Do nothing + } + ~ KernelWrap() { + if (nullptr != mRecycle) { + mRecycle->recycle.push(mKernel); + } + } + cl::Kernel& get() { + return *mKernel; + } + KernelPool* mRecycle; +private: + std::shared_ptr mKernel; +}; class OpenCLRuntime { public: OpenCLRuntime(const BackendConfig::PrecisionMode precision, const int cl_mode, int platformSize, int platformId, int deviceId, void *contextPtr, void *glShared); @@ -65,8 +88,8 @@ class OpenCLRuntime { uint32_t MaxThreadsPerDevice() const; uint32_t MaxWorkGroupSize() const; uint32_t maxFreq() const; - uint64_t getMaxWorkGroupSize(const ::cl::Kernel &kernel); - uint64_t GetKernelWaveSize(const cl::Kernel &kernel); + uint64_t getMaxWorkGroupSize(std::shared_ptr kernel); + uint64_t GetKernelWaveSize(std::shared_ptr kernel); std::vector getMaxWorkItemSizes(); uint64_t getMaxLocalMem() const; uint32_t getUseRecordableQueueSize(){ @@ -122,9 +145,11 @@ class OpenCLRuntime { std::map, std::pair, uint32_t>>>>& getTuneLwsMap(); - ::cl::Kernel buildKernel(const std::string &programName, const std::string &kernelName, - const std::set &buildOptions); - ::cl::Kernel buildKernelFromSource(const std::string&, const std::string &kernelName, + std::shared_ptr buildKernel(const std::string &programName, const std::string &kernelName, + const std::set &buildOptions, const Tensor *input = nullptr, const Tensor *output = nullptr); + std::shared_ptr buildKernelWithCache(const std::string &programName, const std::string &kernelName, + const std::set &buildOptions, const Tensor *input = nullptr, const Tensor *output = nullptr, bool useCache = true); + std::shared_ptr buildKernelFromSource(const std::string&, const std::string &kernelName, const std::set &buildOptions); std::vector getMaxImage2DSize(); @@ -149,15 +174,23 @@ class OpenCLRuntime { void setGpuMode(const int cl_mode_num); private: + std::vector mMaxImageSize; + std::vector mMaxWorkIterms; std::shared_ptr<::cl::Context> mContext; std::shared_ptr<::cl::Device> mFirstGPUDevicePtr; std::shared_ptr<::cl::CommandQueue> mCommandQueuePtr; - std::map, ::cl::Program> mBuildProgramMap; + std::shared_ptr<::cl::CommandQueue> mCommandQueueTuning; + struct ProgramWithKernel { + cl::Program program; + std::map kernels; + }; + cl::CommandQueue* mCurrentCommandQueue; + std::map, ProgramWithKernel> mBuildProgramMap; std::shared_ptr<::cl::CommandQueue> mRecordableQueuePtr; uint64_t mGPUGlobalMemeryCacheSize; uint32_t mGPUComputeUnits; uint32_t mMaxFreq; - uint32_t mMaxMemAllocSize; + uint64_t mMaxMemAllocSize; uint64_t mMaxLocalMemSize; uint32_t mMaxThreadsPerDevice; uint32_t mMaxWorkGroupSize; diff --git a/source/backend/opencl/core/runtime/OpenCLWrapper.cpp b/source/backend/opencl/core/runtime/OpenCLWrapper.cpp index ee75880d3..62cda7e4e 100644 --- a/source/backend/opencl/core/runtime/OpenCLWrapper.cpp +++ b/source/backend/opencl/core/runtime/OpenCLWrapper.cpp @@ -115,6 +115,10 @@ bool OpenCLSymbols::isQcomError() { return mQcomError; } +bool OpenCLSymbols::isGlError() { + return mGlError; +} + bool OpenCLSymbols::isCL1_2Error() { return mCL_12Error; } @@ -150,6 +154,11 @@ bool OpenCLSymbols::LoadLibraryFromPath(const std::string &library_path) { mCL_12Error = true; \ } +#define MNN_LOAD_GL_PTR(func_name) func_name = reinterpret_cast(GetProcAddress(handle_, #func_name)); \ + if(func_name == nullptr){ \ + mGlError = true; \ + } + #else handle_ = dlopen(library_path.c_str(), RTLD_NOW | RTLD_LOCAL); if (handle_ == nullptr) { @@ -204,6 +213,14 @@ bool OpenCLSymbols::LoadLibraryFromPath(const std::string &library_path) { mCL_12Error = true; \ } +#define MNN_LOAD_GL_PTR(func_name) func_name = reinterpret_cast(dlsym(handle_, #func_name)); \ + if(func_name == nullptr && loadOpenCLPointer != nullptr){ \ + func_name = reinterpret_cast(loadOpenCLPointer(#func_name)); \ + } \ + if(func_name == nullptr){ \ + mGlError = true; \ + } + #endif MNN_LOAD_FUNCTION_PTR(clGetPlatformIDs); @@ -253,10 +270,10 @@ bool OpenCLSymbols::LoadLibraryFromPath(const std::string &library_path) { MNN_LOAD_FUNCTION_PTR(clEnqueueCopyImage); MNN_LOAD_FUNCTION_PTR(clEnqueueReadImage); MNN_LOAD_FUNCTION_PTR(clEnqueueWriteImage); - MNN_LOAD_FUNCTION_PTR(clCreateFromGLBuffer); - MNN_LOAD_FUNCTION_PTR(clCreateFromGLTexture); - MNN_LOAD_FUNCTION_PTR(clEnqueueAcquireGLObjects); - MNN_LOAD_FUNCTION_PTR(clEnqueueReleaseGLObjects); + MNN_LOAD_GL_PTR(clCreateFromGLBuffer); + MNN_LOAD_GL_PTR(clCreateFromGLTexture); + MNN_LOAD_GL_PTR(clEnqueueAcquireGLObjects); + MNN_LOAD_GL_PTR(clEnqueueReleaseGLObjects); MNN_LOAD_CL_12_PTR(clCreateImage); MNN_LOAD_CL_12_PTR(clRetainDevice); MNN_LOAD_CL_12_PTR(clReleaseDevice); diff --git a/source/backend/opencl/core/runtime/OpenCLWrapper.hpp b/source/backend/opencl/core/runtime/OpenCLWrapper.hpp index 1e3eecb03..e3617d92d 100644 --- a/source/backend/opencl/core/runtime/OpenCLWrapper.hpp +++ b/source/backend/opencl/core/runtime/OpenCLWrapper.hpp @@ -55,6 +55,7 @@ class OpenCLSymbols { bool isPropError(); bool isQcomError(); bool isCL1_2Error(); + bool isGlError(); using clGetPlatformIDsFunc = cl_int (CL_API_CALL *)(cl_uint, cl_platform_id *, cl_uint *); using clGetPlatformInfoFunc = cl_int (CL_API_CALL *)(cl_platform_id, cl_platform_info, size_t, void *, size_t *); @@ -262,6 +263,7 @@ class OpenCLSymbols { bool mPropError{false}; bool mQcomError{false}; bool mCL_12Error{false}; + bool mGlError{false}; }; class OpenCLSymbolsOperator { diff --git a/source/backend/opencl/execution/buffer/ArgMaxBufExecution.cpp b/source/backend/opencl/execution/buffer/ArgMaxBufExecution.cpp index 1b4b57a26..d1faba8eb 100644 --- a/source/backend/opencl/execution/buffer/ArgMaxBufExecution.cpp +++ b/source/backend/opencl/execution/buffer/ArgMaxBufExecution.cpp @@ -8,22 +8,34 @@ #ifndef MNN_OPENCL_BUFFER_CLOSED #include "backend/opencl/execution/buffer/ArgMaxBufExecution.hpp" -#include "core/Macro.h" -#include "core/TensorUtils.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" namespace MNN { namespace OpenCL { -ArgMaxBufExecution::ArgMaxBufExecution(const std::string &compute, Backend* backend, const int axis) : Execution(backend) { +ArgMaxBufExecution::ArgMaxBufExecution(const std::string &compute, const MNN::Op* op, Backend* backend, const int axis) : CommonExecution(backend, op) { mBuildOptions.emplace(compute); mAxis = axis; // Do nothing + mOpenCLBackend = static_cast(backend); + std::set buildOptions = mBuildOptions; + buildOptions.emplace("-DARGMAX_LOCAL_SIZE=512"); + auto kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("argmax_buf", "argmax_channel_buf", buildOptions); + mMaxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(kernel)); } -ErrorCode ArgMaxBufExecution::onResize(const std::vector& inputs, const std::vector& outputs) { - auto openCLBackend = static_cast(backend()); - auto runtime = openCLBackend->getOpenCLRuntime(); - openCLBackend->startRecord(mRecording); + +int ArgMaxBufExecution::getLocalSize(int size, int maxGroupSize){ + int local_size = 1; + while(local_size * 2 <= maxGroupSize && local_size * 2 <= size){ + local_size *= 2; + } + return local_size; +} + +ErrorCode ArgMaxBufExecution::onEncode(const std::vector& inputs, const std::vector& outputs) { + mUnits.resize(1); + auto &unit = mUnits[0]; + auto runtime = mOpenCLBackend->getOpenCLRuntime(); + auto MaxLocalSize = std::min(runtime->getMaxWorkItemSizes()[0], mMaxWorkGroupSize); auto input = inputs[0]; auto output = outputs[0]; if(mAxis < 0){ @@ -52,81 +64,61 @@ ErrorCode ArgMaxBufExecution::onResize(const std::vector& inputs, const int outputWidth = outputShape.at(2); int outputChannels = outputShape.at(3); int outputChannelBlocks = (outputChannels + 3) / 4; - mGlobalWorkSize = { - static_cast(outputWidth), - static_cast(outputHeight), - static_cast(outputBatch * outputChannelBlocks) - }; + int localSize = getLocalSize(dim, MaxLocalSize); + if(localSize < 4){ + localSize = 1; + } + std::set buildOptions = mBuildOptions; + buildOptions.emplace("-DARGMAX_LOCAL_SIZE=" + std::to_string(localSize)); + std::string kernelName; if(batch * inputHeight * inputChannels == outside && 1 == inside && dim == inputWidth){ - mKernel = runtime->buildKernel("argmax_buf", "argmax_width_buf", mBuildOptions); + kernelName = "argmax_width_buf"; + unit.kernel = runtime->buildKernel("argmax_buf", kernelName, buildOptions); + mGlobalWorkSize = {static_cast(localSize), static_cast(outputHeight), static_cast(outputBatch * outputChannelBlocks)}; }else if(batch * inputChannels == outside && inputWidth == inside && dim == inputHeight){ - mKernel = runtime->buildKernel("argmax_buf", "argmax_height_buf", mBuildOptions); + kernelName = "argmax_height_buf"; + unit.kernel = runtime->buildKernel("argmax_buf", kernelName, buildOptions); + mGlobalWorkSize = {static_cast(localSize), static_cast(outputWidth), static_cast(outputBatch * outputChannelBlocks)}; }else if(batch == outside && inputWidth * inputHeight == inside && dim == inputChannels){ if(output->buffer().dimensions == 1){ - mKernel = runtime->buildKernel("argmax_buf", "argmax_channel_dim1_buf", mBuildOptions); - }else{ - mKernel = runtime->buildKernel("argmax_buf", "argmax_channel_buf", mBuildOptions); + buildOptions.emplace("-DARGMAX_CHANNEL_DIM1"); } - mGlobalWorkSize[2] = static_cast(outputBatch * outputChannels); + kernelName = "argmax_channel_buf"; + unit.kernel = runtime->buildKernel("argmax_buf", kernelName, buildOptions); + mGlobalWorkSize = {static_cast(localSize), static_cast(outputWidth * outputHeight), static_cast(outputBatch * outputChannels)}; }else if(1 == outside && inputWidth * inputHeight * inputChannels == inside && dim == batch){ - mKernel = runtime->buildKernel("argmax_buf", "argmax_batch_buf", mBuildOptions); + kernelName = "argmax_batch_buf"; + unit.kernel = runtime->buildKernel("argmax_buf", kernelName, buildOptions); + mGlobalWorkSize = {static_cast(localSize), static_cast(outputWidth * outputHeight), static_cast(outputChannelBlocks)}; } - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); + mLocalSize = {(uint32_t)(localSize), 1, 1}; uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[2]); - ret |= mKernel.setArg(idx++, openCLBuffer(input)); - ret |= mKernel.setArg(idx++, openCLBuffer(output)); - ret |= mKernel.setArg(idx++, inputWidth); - ret |= mKernel.setArg(idx++, inputHeight); - ret |= mKernel.setArg(idx++, inputChannels); - ret |= mKernel.setArg(idx++, batch); - ret |= mKernel.setArg(idx++, inputChannelBlocks); - ret |= mKernel.setArg(idx++, outputWidth); - ret |= mKernel.setArg(idx++, outputHeight); - ret |= mKernel.setArg(idx++, outputChannels); - ret |= mKernel.setArg(idx++, outputChannelBlocks); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(input)); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(idx++, inputWidth); + ret |= unit.kernel->get().setArg(idx++, inputHeight); + ret |= unit.kernel->get().setArg(idx++, inputChannels); + ret |= unit.kernel->get().setArg(idx++, batch); + ret |= unit.kernel->get().setArg(idx++, inputChannelBlocks); + ret |= unit.kernel->get().setArg(idx++, outputWidth); + ret |= unit.kernel->get().setArg(idx++, outputHeight); + ret |= unit.kernel->get().setArg(idx++, outputChannels); + ret |= unit.kernel->get().setArg(idx++, outputChannelBlocks); MNN_CHECK_CL_SUCCESS(ret, "setArg ArgMaxBufExecution"); - std::string kernelName = "gargmax_buf"; - mLocalSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), kernelName, mKernel).first; - openCLBackend->recordKernel3d(mKernel, mGlobalWorkSize, mLocalSize); - openCLBackend->endRecord(mRecording); - return NO_ERROR; -} - -ErrorCode ArgMaxBufExecution::onExecute(const std::vector& inputs, const std::vector& outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("start ArgMaxBufExecution onExecute..."); -#endif - auto mOpenCLBackend = static_cast(backend()); - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalSize, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"ArgMax", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End ArgMaxBufExecution onExecute... \n"); -#endif - return NO_ERROR; + if(localSize == 1){ + mLocalSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), kernelName, unit.kernel).first; } - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalSize, - mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end ArgMaxBufExecution onExecute..."); -#endif + mOpenCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; + unit.localWorkSize = {mLocalSize[0], mLocalSize[1], mLocalSize[2]}; return NO_ERROR; } @@ -146,9 +138,9 @@ class ArgMaxBufCreator : public OpenCLBackend::Creator { } int axis = op->main_as_ArgMax()->axis(); if (op->type() == OpType_ArgMax) { - return new ArgMaxBufExecution("-DARGMAX", backend, axis); + return new ArgMaxBufExecution("-DARGMAX", op, backend, axis); }else{ - return new ArgMaxBufExecution("", backend, axis); + return new ArgMaxBufExecution("", op, backend, axis); } } }; diff --git a/source/backend/opencl/execution/buffer/ArgMaxBufExecution.hpp b/source/backend/opencl/execution/buffer/ArgMaxBufExecution.hpp index de00a3591..760f909ce 100644 --- a/source/backend/opencl/execution/buffer/ArgMaxBufExecution.hpp +++ b/source/backend/opencl/execution/buffer/ArgMaxBufExecution.hpp @@ -10,32 +10,25 @@ #ifndef ArgMaxBufExecution_hpp #define ArgMaxBufExecution_hpp -#include "core/Execution.hpp" - -#include -#include "MNN_generated.h" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "backend/opencl/execution/image/CommonExecution.hpp" namespace MNN { namespace OpenCL { -class ArgMaxBufExecution : public Execution, public CommonExtension { +class ArgMaxBufExecution : public CommonExecution { public: - ArgMaxBufExecution(const std::string &compute, Backend *backend, const int axis); + ArgMaxBufExecution(const std::string &compute, const MNN::Op *op, Backend *backend, const int axis); virtual ~ArgMaxBufExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; - + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; + int getLocalSize(int size, int maxGroupSize); private: - cl::Kernel mKernel; uint32_t mMaxWorkGroupSize; std::vector mGlobalWorkSize = {1, 1, 1}; std::vector mLocalSize = {1, 1, 1}; std::set mBuildOptions; int mAxis; + OpenCLBackend *mOpenCLBackend; }; } // namespace OpenCL diff --git a/source/backend/opencl/execution/buffer/BinaryBufExecution.cpp b/source/backend/opencl/execution/buffer/BinaryBufExecution.cpp index 25a45f129..75d604db0 100644 --- a/source/backend/opencl/execution/buffer/BinaryBufExecution.cpp +++ b/source/backend/opencl/execution/buffer/BinaryBufExecution.cpp @@ -9,8 +9,6 @@ #ifndef MNN_OPENCL_BUFFER_CLOSED #include "backend/opencl/execution/buffer/BinaryBufExecution.hpp" -#include "core/Macro.h" -#include "core/TensorUtils.hpp" namespace MNN { namespace OpenCL { @@ -18,10 +16,6 @@ namespace OpenCL { BinaryBufExecution::BinaryBufExecution(const std::vector &inputs, const std::string &compute, const MNN::Op *op, Backend *backend) : CommonExecution(backend, op), mCompute(compute) { mBuildOptions.emplace("-DOPERATOR=" + compute); - auto dataType = inputs[0]->getType(); - if (dataType.code == halide_type_int){ - mBuildOptions.emplace("-DOPENCL_INPUT_INT"); - } } uint32_t BinaryBufExecution::realSize(const Tensor* tensor) { @@ -40,7 +34,6 @@ ErrorCode BinaryBufExecution::SubgroupOnResize(const std::vector &inpu auto inputShape1 = tensorShapeFormat(inputs[1]); auto outputShape = tensorShapeFormat(output); auto runTime = ((OpenCLBackend *)backend())->getOpenCLRuntime(); - openCLBackend->startRecord(mRecording); int shape[4] = {outputShape[0], outputShape[1], outputShape[2], outputShape[3]}; int fullCount[2] = {1, 1}; @@ -54,10 +47,65 @@ ErrorCode BinaryBufExecution::SubgroupOnResize(const std::vector &inpu activationType = mOp->main_as_BinaryOp()->activationType(); } auto &unit = mUnits[0]; - + std::set buildOptions = mBuildOptions; + if(output->getType().code == halide_type_int) { + if(output->getType().bits == 8){ + buildOptions.emplace("-DINTEL_DATA=uchar"); + buildOptions.emplace("-DAS_INPUT_DATA=as_char"); + buildOptions.emplace("-DAS_INPUT_DATA4=as_char4"); + buildOptions.emplace("-DAS_OUTPUT_DATA4=as_uchar4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ=intel_sub_group_block_read_uc"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ4=intel_sub_group_block_read_uc4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_WRITE4=intel_sub_group_block_write_uc4"); + } else if(output->getType().bits == 32){ + buildOptions.emplace("-DINTEL_DATA=uint"); + buildOptions.emplace("-DAS_INPUT_DATA=as_int"); + buildOptions.emplace("-DAS_INPUT_DATA4=as_int4"); + buildOptions.emplace("-DAS_OUTPUT_DATA4=as_uint4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ=intel_sub_group_block_read"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ4=intel_sub_group_block_read4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_WRITE4=intel_sub_group_block_write4"); + } + } else if(output->getType().code == halide_type_uint){ + if(output->getType().bits == 8){ + buildOptions.emplace("-DINTEL_DATA=uchar"); + buildOptions.emplace("-DAS_INPUT_DATA=as_uchar"); + buildOptions.emplace("-DAS_INPUT_DATA4=as_uchar4"); + buildOptions.emplace("-DAS_OUTPUT_DATA4=as_uchar4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ=intel_sub_group_block_read_uc"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ4=intel_sub_group_block_read_uc4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_WRITE4=intel_sub_group_block_write_uc4"); + } else if(output->getType().bits == 32){ + buildOptions.emplace("-DINTEL_DATA=uint"); + buildOptions.emplace("-DAS_INPUT_DATA=as_uint"); + buildOptions.emplace("-DAS_INPUT_DATA4=as_uint4"); + buildOptions.emplace("-DAS_OUTPUT_DATA4=as_uint4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ=intel_sub_group_block_read"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ4=intel_sub_group_block_read4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_WRITE4=intel_sub_group_block_write4"); + } + } else { + if(runTime->isSupportedFP16()){ + buildOptions.emplace("-DINTEL_DATA=ushort"); + buildOptions.emplace("-DAS_INPUT_DATA=as_half"); + buildOptions.emplace("-DAS_INPUT_DATA4=as_half4"); + buildOptions.emplace("-DAS_OUTPUT_DATA4=as_ushort4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ=intel_sub_group_block_read_us"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ4=intel_sub_group_block_read_us4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_WRITE4=intel_sub_group_block_write_us4"); + }else{ + buildOptions.emplace("-DINTEL_DATA=uint"); + buildOptions.emplace("-DAS_INPUT_DATA=as_float"); + buildOptions.emplace("-DAS_INPUT_DATA4=as_float4"); + buildOptions.emplace("-DAS_OUTPUT_DATA4=as_uint4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ=intel_sub_group_block_read"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ4=intel_sub_group_block_read4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_WRITE4=intel_sub_group_block_write4"); + } + } std::string kernelName = "binary_buf_c" + std::to_string(input0_c_pack) + "_c" + std::to_string(input1_c_pack) + "_c" + std::to_string(output_c_pack); - unit.kernel = runTime->buildKernel("binary_subgroup_buf", kernelName, mBuildOptions); + unit.kernel = runTime->buildKernel("binary_subgroup_buf", kernelName, buildOptions, inputs[0], output); mMaxWorkGroupSize = static_cast(runTime->getMaxWorkGroupSize(unit.kernel)); fullCount[0] = realSize(inputs[0]) == 1 ? 0 : 1; @@ -74,46 +122,46 @@ ErrorCode BinaryBufExecution::SubgroupOnResize(const std::vector &inpu (uint32_t)ROUND_UP(outputShape[3], 16), (uint32_t)outputShape[0]}; unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; unit.localWorkSize = {1, 16, 1}; - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[0]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[1]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[2]); - ret |= unit.kernel.setArg(index++, openCLBuffer(inputs[0])); - ret |= unit.kernel.setArg(index++, openCLBuffer(inputs[1])); - ret |= unit.kernel.setArg(index++, openCLBuffer(output)); - ret |= unit.kernel.setArg(index++, shape); - ret |= unit.kernel.setArg(index++, fullCount); - ret |= unit.kernel.setArg(index++, activationType); - ret |= unit.kernel.setArg(index++, static_cast(input0pad.left)); - ret |= unit.kernel.setArg(index++, static_cast(input0pad.right)); - ret |= unit.kernel.setArg(index++, static_cast(input1pad.left)); - ret |= ret |= unit.kernel.setArg(index++, static_cast(input1pad.right)); - ret |= unit.kernel.setArg(index++, static_cast(outputpad.left)); - ret |= unit.kernel.setArg(index++, static_cast(outputpad.right)); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(inputs[0])); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(inputs[1])); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(index++, shape); + ret |= unit.kernel->get().setArg(index++, fullCount); + ret |= unit.kernel->get().setArg(index++, activationType); + ret |= unit.kernel->get().setArg(index++, static_cast(input0pad.left)); + ret |= unit.kernel->get().setArg(index++, static_cast(input0pad.right)); + ret |= unit.kernel->get().setArg(index++, static_cast(input1pad.left)); + ret |= ret |= unit.kernel->get().setArg(index++, static_cast(input1pad.right)); + ret |= unit.kernel->get().setArg(index++, static_cast(outputpad.left)); + ret |= unit.kernel->get().setArg(index++, static_cast(outputpad.right)); MNN_CHECK_CL_SUCCESS(ret, "setArg BinaryBufExecution C16"); openCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); } else { mGlobalWorkSize = {(uint32_t)outputShape[2] * outputShape[1], (uint32_t)UP_DIV(outputShape[3], 4), (uint32_t)outputShape[0]}; - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[0]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[1]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[2]); - ret |= unit.kernel.setArg(index++, openCLBuffer(inputs[0])); - ret |= unit.kernel.setArg(index++, openCLBuffer(inputs[1])); - ret |= unit.kernel.setArg(index++, openCLBuffer(output)); - ret |= unit.kernel.setArg(index++, shape); - ret |= unit.kernel.setArg(index++, fullCount); - ret |= unit.kernel.setArg(index++, activationType); - ret |= unit.kernel.setArg(index++, static_cast(input0pad.left)); - ret |= unit.kernel.setArg(index++, static_cast(input0pad.right)); - ret |= unit.kernel.setArg(index++, static_cast(input1pad.left)); - ret |= unit.kernel.setArg(index++, static_cast(input1pad.right)); - ret |= unit.kernel.setArg(index++, static_cast(outputpad.left)); - ret |= unit.kernel.setArg(index++, static_cast(outputpad.right)); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(inputs[0])); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(inputs[1])); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(index++, shape); + ret |= unit.kernel->get().setArg(index++, fullCount); + ret |= unit.kernel->get().setArg(index++, activationType); + ret |= unit.kernel->get().setArg(index++, static_cast(input0pad.left)); + ret |= unit.kernel->get().setArg(index++, static_cast(input0pad.right)); + ret |= unit.kernel->get().setArg(index++, static_cast(input1pad.left)); + ret |= unit.kernel->get().setArg(index++, static_cast(input1pad.right)); + ret |= unit.kernel->get().setArg(index++, static_cast(outputpad.left)); + ret |= unit.kernel->get().setArg(index++, static_cast(outputpad.right)); MNN_CHECK_CL_SUCCESS(ret, "setArg BinaryBufExecution"); mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), kernelName, unit.kernel).first; - + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1], mLocalWorkSize[2]}; openCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); @@ -129,7 +177,7 @@ ErrorCode BinaryBufExecution::SubgroupOnResize(const std::vector &inpu int output_c_pack_tmp = TensorUtils::getTensorChannelPack(output); std::string kernelNameTmp = "binary_buf_c" + std::to_string(input0_c_pack_tmp) + "_c" + std::to_string(input1_c_pack_tmp) + "_c" + std::to_string(output_c_pack_tmp); - unit.kernel = runTime->buildKernel("binary_subgroup_buf", kernelNameTmp, mBuildOptions); + unit.kernel = runTime->buildKernel("binary_subgroup_buf", kernelNameTmp, buildOptions, inputs[i], output); mMaxWorkGroupSize = static_cast(runTime->getMaxWorkGroupSize(unit.kernel)); auto input0padtmp = TensorUtils::getDescribe(output)->mPads; @@ -143,57 +191,56 @@ ErrorCode BinaryBufExecution::SubgroupOnResize(const std::vector &inpu (uint32_t)ROUND_UP(outputShape[3], 16), (uint32_t)outputShape[0]}; unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; unit.localWorkSize = {1, 16, 1}; - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[0]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[1]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[2]); - ret |= unit.kernel.setArg(index++, openCLBuffer(output)); - ret |= unit.kernel.setArg(index++, openCLBuffer(inputs[i])); - ret |= unit.kernel.setArg(index++, openCLBuffer(output)); - ret |= unit.kernel.setArg(index++, shape); - ret |= unit.kernel.setArg(index++, fullCount); - ret |= unit.kernel.setArg(index++, activationType); - ret |= unit.kernel.setArg(index++, static_cast(input0padtmp.left)); - ret |= unit.kernel.setArg(index++, static_cast(input0padtmp.right)); - ret |= unit.kernel.setArg(index++, static_cast(input1padtmp.left)); - ret |= unit.kernel.setArg(index++, static_cast(input1padtmp.right)); - ret |= unit.kernel.setArg(index++, static_cast(outputpadtmp.left)); - ret |= unit.kernel.setArg(index++, static_cast(outputpadtmp.right)); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(inputs[i])); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(index++, shape); + ret |= unit.kernel->get().setArg(index++, fullCount); + ret |= unit.kernel->get().setArg(index++, activationType); + ret |= unit.kernel->get().setArg(index++, static_cast(input0padtmp.left)); + ret |= unit.kernel->get().setArg(index++, static_cast(input0padtmp.right)); + ret |= unit.kernel->get().setArg(index++, static_cast(input1padtmp.left)); + ret |= unit.kernel->get().setArg(index++, static_cast(input1padtmp.right)); + ret |= unit.kernel->get().setArg(index++, static_cast(outputpadtmp.left)); + ret |= unit.kernel->get().setArg(index++, static_cast(outputpadtmp.right)); MNN_CHECK_CL_SUCCESS(ret, "setArg BinaryBufExecution C16 MultiInput"); openCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); } else { mGlobalWorkSize = {(uint32_t)outputShape[2] * outputShape[1], (uint32_t)UP_DIV(outputShape[3], 4), (uint32_t)outputShape[0]}; - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[0]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[1]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[2]); - ret |= unit.kernel.setArg(index++, openCLBuffer(output)); - ret |= unit.kernel.setArg(index++, openCLBuffer(inputs[i])); - ret |= unit.kernel.setArg(index++, openCLBuffer(output)); - ret |= unit.kernel.setArg(index++, shape); - ret |= unit.kernel.setArg(index++, fullCount); - ret |= unit.kernel.setArg(index++, activationType); - ret |= unit.kernel.setArg(index++, static_cast(input0padtmp.left)); - ret |= unit.kernel.setArg(index++, static_cast(input0padtmp.right)); - ret |= unit.kernel.setArg(index++, static_cast(input1padtmp.left)); - ret |= unit.kernel.setArg(index++, static_cast(input1padtmp.right)); - ret |= unit.kernel.setArg(index++, static_cast(outputpadtmp.left)); - ret |= unit.kernel.setArg(index++, static_cast(outputpadtmp.right)); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(inputs[i])); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(index++, shape); + ret |= unit.kernel->get().setArg(index++, fullCount); + ret |= unit.kernel->get().setArg(index++, activationType); + ret |= unit.kernel->get().setArg(index++, static_cast(input0padtmp.left)); + ret |= unit.kernel->get().setArg(index++, static_cast(input0padtmp.right)); + ret |= unit.kernel->get().setArg(index++, static_cast(input1padtmp.left)); + ret |= unit.kernel->get().setArg(index++, static_cast(input1padtmp.right)); + ret |= unit.kernel->get().setArg(index++, static_cast(outputpadtmp.left)); + ret |= unit.kernel->get().setArg(index++, static_cast(outputpadtmp.right)); MNN_CHECK_CL_SUCCESS(ret, "setArg BinaryBufExecution MultiInput"); mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), kernelNameTmp, unit.kernel).first; - + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1], mLocalWorkSize[2]}; openCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); } } - openCLBackend->endRecord(mRecording); return NO_ERROR; } #endif /* MNN_SUPPORT_INTEL_SUBGROUP */ -ErrorCode BinaryBufExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode BinaryBufExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { MNN_ASSERT(inputs.size() >= 2); mUnits.resize(inputs.size() - 1); @@ -208,7 +255,6 @@ ErrorCode BinaryBufExecution::onResize(const std::vector &inputs, cons return SubgroupOnResize(inputs, outputs); } #endif /* MNN_SUPPORT_INTEL_SUBGROUP */ - openCLBackend->startRecord(mRecording); int shape[4] = {outputShape[0], outputShape[1], outputShape[2], UP_DIV(outputShape[3], 4)}; int fullCount[2] = {1, 1}; @@ -217,7 +263,7 @@ ErrorCode BinaryBufExecution::onResize(const std::vector &inputs, cons activationType = mOp->main_as_BinaryOp()->activationType(); } auto &unit = mUnits[0]; - unit.kernel = runTime->buildKernel("binary_buf", "binary_buf", mBuildOptions); + unit.kernel = runTime->buildKernel("binary_buf", "binary_buf", mBuildOptions, inputs[0], output); mMaxWorkGroupSize = static_cast(runTime->getMaxWorkGroupSize(unit.kernel)); mGlobalWorkSize = {(uint32_t)UP_DIV(outputShape[3], 4) * outputShape[0], @@ -227,14 +273,14 @@ ErrorCode BinaryBufExecution::onResize(const std::vector &inputs, cons uint32_t index = 0; cl_int ret = CL_SUCCESS; - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[0]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[1]); - ret |= unit.kernel.setArg(index++, openCLBuffer(inputs[0])); - ret |= unit.kernel.setArg(index++, openCLBuffer(inputs[1])); - ret |= unit.kernel.setArg(index++, openCLBuffer(output)); - ret |= unit.kernel.setArg(index++, shape); - ret |= unit.kernel.setArg(index++, fullCount); - ret |= unit.kernel.setArg(index++, activationType); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(inputs[0])); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(inputs[1])); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(index++, shape); + ret |= unit.kernel->get().setArg(index++, fullCount); + ret |= unit.kernel->get().setArg(index++, activationType); MNN_CHECK_CL_SUCCESS(ret, "setArg BinaryBufExecution"); std::string name = "binary_buf"; @@ -247,17 +293,17 @@ ErrorCode BinaryBufExecution::onResize(const std::vector &inputs, cons fullCount[0] = 1; fullCount[1] = realSize(inputs[i]) == 1 ? 0 : 1; auto &unit = mUnits[i-1]; - unit.kernel = runTime->buildKernel("binary_buf", "binary_buf", mBuildOptions); + unit.kernel = runTime->buildKernel("binary_buf", "binary_buf", mBuildOptions, inputs[i], output); uint32_t index = 0; - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[0]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[1]); - ret |= unit.kernel.setArg(index++, openCLBuffer(output)); - ret |= unit.kernel.setArg(index++, openCLBuffer(inputs[i])); - ret |= unit.kernel.setArg(index++, openCLBuffer(output)); - ret |= unit.kernel.setArg(index++, shape); - ret |= unit.kernel.setArg(index++, fullCount); - ret |= unit.kernel.setArg(index++, activationType); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(inputs[i])); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(index++, shape); + ret |= unit.kernel->get().setArg(index++, fullCount); + ret |= unit.kernel->get().setArg(index++, activationType); MNN_CHECK_CL_SUCCESS(ret, "setArg BinaryBufExecution MultiInput"); unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1]}; @@ -265,7 +311,6 @@ ErrorCode BinaryBufExecution::onResize(const std::vector &inputs, cons openCLBackend->recordKernel2d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); } - openCLBackend->endRecord(mRecording); return NO_ERROR; } @@ -275,7 +320,7 @@ class BinaryBufCreator : public OpenCLBackend::Creator { const MNN::Op *op, Backend *backend) const override { for (int i = 0; i < inputs.size(); ++i) { int channel = inputs[i]->channel(); - if (channel >= 16) { + if (channel >= 16 && static_cast(backend)->getOpenCLRuntime()->isSupportedIntelSubgroup()) { TensorUtils::setTensorChannelPack(inputs[i], 16); } } @@ -306,7 +351,7 @@ class BinaryBufCreator : public OpenCLBackend::Creator { case BinaryOpOperation_SUB: return new BinaryBufExecution(inputs, "in0-in1", op, backend); case BinaryOpOperation_REALDIV: - return new BinaryBufExecution(inputs, "sign(in1)*in0/(fabs(in1)>(FLOAT4)((FLOAT)0.0000001)?fabs(in1):(FLOAT4)((FLOAT)0.0000001))", op, backend); + return new BinaryBufExecution(inputs, "sign(in1)*in0/(fabs(in1)>(float4)((float)0.0000001)?fabs(in1):(float4)((float)0.0000001))", op, backend); case BinaryOpOperation_MINIMUM: return new BinaryBufExecution(inputs, "in0>in1?in1:in0", op, backend); case BinaryOpOperation_MAXIMUM: @@ -322,19 +367,19 @@ class BinaryBufCreator : public OpenCLBackend::Creator { case BinaryOpOperation_EQUAL: return new BinaryBufExecution(inputs, "convert_float4(-isequal(in0,in1))", op, backend); case BinaryOpOperation_FLOORDIV: - return new BinaryBufExecution(inputs, "floor(sign(in1)*in0/(fabs(in1)>(FLOAT4)((FLOAT)0.0000001)?fabs(in1):(FLOAT4)((FLOAT)0.0000001)))", op, backend); + return new BinaryBufExecution(inputs, "floor(sign(in1)*in0/(fabs(in1)>(float4)((float)0.0000001)?fabs(in1):(float4)((float)0.0000001)))", op, backend); case BinaryOpOperation_FLOORMOD: - return new BinaryBufExecution(inputs, "in0-floor(sign(in1)*in0/(fabs(in1)>(FLOAT4)((FLOAT)0.0000001)?fabs(in1):(FLOAT4)((FLOAT)0.0000001)))*in1", op, backend); + return new BinaryBufExecution(inputs, "in0-floor(sign(in1)*in0/(fabs(in1)>(float4)((float)0.0000001)?fabs(in1):(float4)((float)0.0000001)))*in1", op, backend); case BinaryOpOperation_POW: return new BinaryBufExecution(inputs, "pow(in0,in1)", op, backend); case BinaryOpOperation_SquaredDifference: return new BinaryBufExecution(inputs, "(in0-in1)*(in0-in1)", op, backend); case BinaryOpOperation_ATAN2: - return new BinaryBufExecution(inputs, "(in1==(FLOAT4)0?(sign(in0)*(FLOAT4)(PI/2)):(atan(in0/in1)+(in1>(FLOAT4)0?(FLOAT4)0:sign(in0)*(FLOAT4)PI)))", op, backend); + return new BinaryBufExecution(inputs, "(in1==(float)0?(sign(in0)*(float4)(PI/2)):(atan(in0/in1)+(in1>(float4)0?(float4)0:sign(in0)*(float)PI)))", op, backend); case BinaryOpOperation_NOTEQUAL: return new BinaryBufExecution(inputs, "convert_float4(-isnotequal(in0,in1))", op, backend); case BinaryOpOperation_MOD: - return new BinaryBufExecution(inputs, "in0-floor(sign(in1)*in0/(fabs(in1)>(FLOAT4)((FLOAT)0.0000001)?fabs(in1):(FLOAT4)((FLOAT)0.0000001)))*in1", op, backend); + return new BinaryBufExecution(inputs, "in0-floor(sign(in1)*in0/(fabs(in1)>(float4)((float)0.0000001)?fabs(in1):(float4)((float)0.0000001)))*in1", op, backend); default: break; } diff --git a/source/backend/opencl/execution/buffer/BinaryBufExecution.hpp b/source/backend/opencl/execution/buffer/BinaryBufExecution.hpp index b68f62edf..70af5efe0 100644 --- a/source/backend/opencl/execution/buffer/BinaryBufExecution.hpp +++ b/source/backend/opencl/execution/buffer/BinaryBufExecution.hpp @@ -21,13 +21,12 @@ class BinaryBufExecution : public CommonExecution { BinaryBufExecution(const std::vector &inputs, const std::string &compute, const MNN::Op *op, Backend *backend); virtual ~BinaryBufExecution() = default; uint32_t realSize(const Tensor* tensor); - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: #ifdef MNN_SUPPORT_INTEL_SUBGROUP ErrorCode SubgroupOnResize(const std::vector &inputs, const std::vector &outputs); #endif /* MNN_SUPPORT_INTEL_SUBGROUP */ - bool mBroadCast; std::string mCompute; std::set mBuildOptions; uint32_t mMaxWorkGroupSize; diff --git a/source/backend/opencl/execution/buffer/CastBufExecution.cpp b/source/backend/opencl/execution/buffer/CastBufExecution.cpp index 27198489f..ee7e51d35 100644 --- a/source/backend/opencl/execution/buffer/CastBufExecution.cpp +++ b/source/backend/opencl/execution/buffer/CastBufExecution.cpp @@ -8,24 +8,24 @@ #ifndef MNN_OPENCL_BUFFER_CLOSED #include "backend/opencl/execution/buffer/CastBufExecution.hpp" -#include "core/Macro.h" -#include "core/TensorUtils.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" namespace MNN { namespace OpenCL { -CastBufExecution::CastBufExecution(const std::string& compute, Backend* backend) : Execution(backend) { +CastBufExecution::CastBufExecution(const std::vector &inputs, const std::vector &outputs, const std::string& compute, const MNN::Op* op, Backend* backend) : CommonExecution(backend, op) { + mUnits.resize(1); + auto &unit = mUnits[0]; mBuildOptions.emplace(compute); + auto runtime = static_cast(backend)->getOpenCLRuntime(); + unit.kernel = runtime->buildKernel("cast_buf", "cast_buf", mBuildOptions, inputs[0], outputs[0]); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); } -ErrorCode CastBufExecution::onResize(const std::vector& inputs, const std::vector& outputs) { +ErrorCode CastBufExecution::onEncode(const std::vector& inputs, const std::vector& outputs) { + auto &unit = mUnits[0]; Tensor* input = inputs[0]; Tensor* output = outputs[0]; auto openCLBackend = static_cast(backend()); auto runtime = openCLBackend->getOpenCLRuntime(); - openCLBackend->startRecord(mRecording); - mKernel = runtime->buildKernel("cast_buf", "cast_buf", mBuildOptions); - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); std::vector inputShape = tensorShapeFormat(input); std::vector outputShape = tensorShapeFormat(output); @@ -45,51 +45,21 @@ ErrorCode CastBufExecution::onResize(const std::vector& inputs, const s uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[2]); - ret |= mKernel.setArg(idx++, openCLBuffer(input)); - ret |= mKernel.setArg(idx++, openCLBuffer(output)); - ret |= mKernel.setArg(idx++, outputWidth); - ret |= mKernel.setArg(idx++, outputHeight); - ret |= mKernel.setArg(idx++, channelBlocks); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(input)); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(idx++, outputWidth); + ret |= unit.kernel->get().setArg(idx++, outputHeight); + ret |= unit.kernel->get().setArg(idx++, channelBlocks); MNN_CHECK_CL_SUCCESS(ret, "setArg CastBufExecution"); std::string kernelName = "cast_buf"; - mLocalSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), kernelName, mKernel).first; - openCLBackend->recordKernel3d(mKernel, mGlobalWorkSize, mLocalSize); - openCLBackend->endRecord(mRecording); - return NO_ERROR; -} - -ErrorCode CastBufExecution::onExecute(const std::vector& inputs, const std::vector& outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("start CastBufExecution onExecute..."); -#endif - auto mOpenCLBackend = static_cast(backend()); - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalSize, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Cast", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End CastBufExecution onExecute... \n"); -#endif - return NO_ERROR; - } - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalSize, - mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end CastBufExecution onExecute..."); -#endif + mLocalSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), kernelName, unit.kernel).first; + openCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; + unit.localWorkSize = {mLocalSize[0], mLocalSize[1], mLocalSize[2]}; return NO_ERROR; } @@ -123,39 +93,10 @@ class CastBufCreator : public OpenCLBackend::Creator { const auto &inputDataType = inputs[0]->getType(); if (inputDataType.bytes() == 4 && cast->dstT() == MNN::DataType_DT_BOOL) { - return new CastBufExecution("-DTO_BOOL", backend); - } - if (inputs[0]->buffer().type == outputs[0]->buffer().type) { - return new CastBufExecution("", backend); - } - if (dstT == MNN::DataType_DT_INT32 && halide_type_of() == inputDataType) { - return new CastBufExecution("", backend); - } - if (dstT == MNN::DataType_DT_FLOAT && halide_type_of() == inputDataType) { - return new CastBufExecution("", backend); - } - if (dstT == MNN::DataType_DT_FLOAT && halide_type_of() == inputDataType) { - return new CastBufExecution("", backend); - } - if (dstT == MNN::DataType_DT_FLOAT && halide_type_of() == inputDataType) { - return new CastBufExecution("", backend); - } - if (dstT == MNN::DataType_DT_INT8 && halide_type_of() == inputDataType) { - return new CastBufExecution("", backend); - } - if (dstT == MNN::DataType_DT_UINT8 && halide_type_of() == inputDataType) { - return new CastBufExecution("", backend); - } - if (dstT == MNN::DataType_DT_UINT8 && halide_type_of() == inputDataType) { - return new CastBufExecution("", backend); - } - if (dstT == MNN::DataType_DT_INT32 && halide_type_of() == inputDataType) { - return new CastBufExecution("", backend); - } - if (dstT == MNN::DataType_DT_INT32 && halide_type_of() == inputDataType) { - return new CastBufExecution("", backend); + return new CastBufExecution(inputs, outputs, "-DTO_BOOL", op, backend); + } else { + return new CastBufExecution(inputs, outputs, "", op, backend); } - MNN_PRINT("Don't support cast form %d, %d to %d\n", inputDataType.code, inputDataType.bits, cast->dstT()); return nullptr; } }; diff --git a/source/backend/opencl/execution/buffer/CastBufExecution.hpp b/source/backend/opencl/execution/buffer/CastBufExecution.hpp index f192cb2de..850e6f4cb 100644 --- a/source/backend/opencl/execution/buffer/CastBufExecution.hpp +++ b/source/backend/opencl/execution/buffer/CastBufExecution.hpp @@ -10,27 +10,19 @@ #ifndef CastBufExecution_hpp #define CastBufExecution_hpp -#include "core/Execution.hpp" - -#include -#include "MNN_generated.h" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "backend/opencl/execution/image/CommonExecution.hpp" namespace MNN { namespace OpenCL { -class CastBufExecution : public Execution, public CommonExtension { +class CastBufExecution : public CommonExecution { public: - CastBufExecution(const std::string &compute, Backend *backend); + CastBufExecution(const std::vector &inputs, const std::vector &outputs, const std::string &compute, const MNN::Op* Op, Backend *backend); virtual ~CastBufExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: - cl::Kernel mKernel; uint32_t mMaxWorkGroupSize; std::vector mGlobalWorkSize = {1, 1, 1}; std::vector mLocalSize = {1, 1, 1}; diff --git a/source/backend/opencl/execution/buffer/ConvBufExecution.cpp b/source/backend/opencl/execution/buffer/ConvBufExecution.cpp index b0ffcc38d..3d5e1c000 100644 --- a/source/backend/opencl/execution/buffer/ConvBufExecution.cpp +++ b/source/backend/opencl/execution/buffer/ConvBufExecution.cpp @@ -18,9 +18,10 @@ namespace MNN { namespace OpenCL { -std::pair, uint32_t> ConvBufCommonExecution::gws2dLwsTune(const cl::Kernel &kernel, const std::vector &gws, const std::string &kernelName, const uint32_t maxWorkGroupSize) { +std::pair, uint32_t> ConvBufCommonExecution::gws2dLwsTune(const std::shared_ptr &kernelW, const std::vector &gws, const std::string &kernelName, const uint32_t maxWorkGroupSize) { MNN_ASSERT(gws.size() == 2); + auto kernel = kernelW->get(); auto runtime = mOpenCLBackend->getOpenCLRuntime(); auto maxWorkItemSizes = runtime->getMaxWorkItemSizes(); MNN_ASSERT(maxWorkItemSizes.size() >= 2); @@ -203,10 +204,10 @@ std::pair, uint32_t> ConvBufCommonExecution::gws2dLwsTune } return std::make_pair(lws_prefer, min_cost); } -ConvBufCommonExecution::ConvBufCommonExecution(Backend *backend) : Execution(backend) { +ConvBufCommonExecution::ConvBufCommonExecution(Backend *backend) { mOpenCLBackend = static_cast(backend); } -ConvBufCommonExecution::ConvBufCommonExecution(const Convolution2D *conv2dParams, Backend *backend) : Execution(backend) { +ConvBufCommonExecution::ConvBufCommonExecution(const Convolution2D *conv2dParams, Backend *backend) { auto openclBackend = (OpenCLBackend *)backend; int biasSize = conv2dParams->common()->outputCount(); int buffer_size = ROUND_UP(biasSize, 16);//pack to 16 @@ -216,9 +217,10 @@ ConvBufCommonExecution::ConvBufCommonExecution(const Convolution2D *conv2dParams buffer_size *= sizeof(float); } - mBias.reset(Tensor::createDevice({1, 1, 1, ROUND_UP(biasSize, 16)})); - backend->onAcquireBuffer(mBias.get(), Backend::STATIC); - cl::Buffer &biasBuffer = openCLBuffer(mBias.get()); + mResource.reset(new ConvBufResource); + mResource->mBias.reset(Tensor::createDevice({1, 1, 1, ROUND_UP(biasSize, 16)})); + backend->onAcquireBuffer(mResource->mBias.get(), Backend::STATIC); + cl::Buffer &biasBuffer = openCLBuffer(mResource->mBias.get()); cl_int res; auto biasPtrCL = openclBackend->getOpenCLRuntime()->commandQueue().enqueueMapBuffer( @@ -242,14 +244,12 @@ ConvBufCommonExecution::ConvBufCommonExecution(const Convolution2D *conv2dParams } ConvBufCommonExecution::~ConvBufCommonExecution() { - if (mBias) { - backend()->onReleaseBuffer(mBias.get(), Backend::STATIC); - } + // Do nothing } void ConvBufExecution::setConv1x1WeightBuffer(int packCout, int packCin, const float* filterDataPtr) { cl_int res; - std::shared_ptr filterBuffer(Tensor::createDevice({ROUND_UP(mOutputChannel, 8)/*Cout pack set to max 8*/, ROUND_UP(mInputChannel, packCin), mKernelWidth, mKernelHeight})); + std::shared_ptr filterBuffer(Tensor::createDevice({ROUND_UP(mResource->mOutputChannel, 8)/*Cout pack set to max 8*/, ROUND_UP(mResource->mInputChannel, packCin), mResource->mKernelWidth, mResource->mKernelHeight})); int buffer_size = filterBuffer->elementSize(); if(mOpenCLBackend->getOpenCLRuntime()->isSupportedFP16()) { @@ -257,14 +257,14 @@ void ConvBufExecution::setConv1x1WeightBuffer(int packCout, int packCin, const f } else { buffer_size *= sizeof(float); } - mKernelBuffer.reset(new cl::Buffer(mOpenCLBackend->getOpenCLRuntime()->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, buffer_size)); - auto kernelBufferPtr = mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueMapBuffer(*(mKernelBuffer.get()), true, CL_MAP_WRITE, 0, buffer_size, nullptr, nullptr, &res); + mResource->mKernelBuffer.reset(new cl::Buffer(mOpenCLBackend->getOpenCLRuntime()->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, buffer_size)); + auto kernelBufferPtr = mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueMapBuffer(*(mResource->mKernelBuffer.get()), true, CL_MAP_WRITE, 0, buffer_size, nullptr, nullptr, &res); if(kernelBufferPtr != nullptr && res == CL_SUCCESS){ ::memset(kernelBufferPtr, 0, buffer_size); - for(int o = 0; o < mOutputChannel; o++){ - for(int i = 0 ; i < mInputChannel; i++){ - int bufferIdx = (o/packCout) * ROUND_UP(mInputChannel, packCin)*packCout + (i/packCin)*packCin*packCout + (o%packCout)*packCin + (i%packCin);//(Co/packCout, Ci/packCin, packCout, packCin) - int filterIdx = o*mInputChannel + i; + for(int o = 0; o < mResource->mOutputChannel; o++){ + for(int i = 0 ; i < mResource->mInputChannel; i++){ + int bufferIdx = (o/packCout) * ROUND_UP(mResource->mInputChannel, packCin)*packCout + (i/packCin)*packCin*packCout + (o%packCout)*packCin + (i%packCin);//(Co/packCout, Ci/packCin, packCout, packCin) + int filterIdx = o*mResource->mInputChannel + i; if(mOpenCLBackend->getOpenCLRuntime()->isSupportedFP16()){ ((half_float::half*)kernelBufferPtr)[bufferIdx] = (half_float::half)(filterDataPtr[filterIdx]); }else{ @@ -276,28 +276,28 @@ void ConvBufExecution::setConv1x1WeightBuffer(int packCout, int packCin, const f MNN_ERROR("Map error ptrCL == nullptr \n"); MNN_ASSERT(false); } - mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(*(mKernelBuffer.get()), kernelBufferPtr); + mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(*(mResource->mKernelBuffer.get()), kernelBufferPtr); } void ConvBufExecution::_generateFilterConvertRegion(Tensor* virtualFilter, Tensor* originBuffer) const { auto filterDes = TensorUtils::getDescribe(virtualFilter); filterDes->regions.clear(); for (int so=0; so<4; ++so) { - int oSize = (mOutputChannel - so + 3) / 4; + int oSize = (mResource->mOutputChannel - so + 3) / 4; if (oSize <= 0) { continue; } Tensor::InsideDescribe::Region slice; slice.origin = originBuffer; slice.size[0] = oSize; - slice.size[1] = mInputChannel; - slice.size[2] = mKernelWidth * mKernelHeight; - slice.src.stride[0] = mInputChannel * mKernelWidth * mKernelHeight * 4; - slice.src.stride[1] = mKernelWidth * mKernelHeight; + slice.size[1] = mResource->mInputChannel; + slice.size[2] = mResource->mKernelWidth * mResource->mKernelHeight; + slice.src.stride[0] = mResource->mInputChannel * mResource->mKernelWidth * mResource->mKernelHeight * 4; + slice.src.stride[1] = mResource->mKernelWidth * mResource->mKernelHeight; slice.src.stride[2] = 1; - slice.src.offset = so * mInputChannel * mKernelWidth * mKernelHeight; - slice.dst.stride[0] = mKernelWidth * mKernelHeight * 4; - slice.dst.stride[1] = mKernelWidth * mKernelHeight * UP_DIV(mOutputChannel, 4) * 4; + slice.src.offset = so * mResource->mInputChannel * mResource->mKernelWidth * mResource->mKernelHeight; + slice.dst.stride[0] = mResource->mKernelWidth * mResource->mKernelHeight * 4; + slice.dst.stride[1] = mResource->mKernelWidth * mResource->mKernelHeight * UP_DIV(mResource->mOutputChannel, 4) * 4; slice.dst.stride[2] = 4; slice.dst.offset = so; filterDes->regions.emplace_back(std::move(slice)); @@ -305,51 +305,54 @@ void ConvBufExecution::_generateFilterConvertRegion(Tensor* virtualFilter, Tenso } ConvBufExecution::ConvBufExecution(const std::vector &inputs, const std::vector &outputs, const MNN::Op *op, Backend *backend) - : ConvBufCommonExecution(op->main_as_Convolution2D(), backend) { + : ConvBufCommonExecution(op->main_as_Convolution2D(), backend), CommonExecution(backend, op) { #ifdef LOG_VERBOSE MNN_PRINT("Start ConvExecution init !\n"); #endif mOpenCLBackend = static_cast(backend); const auto *conv2dParams = op->main_as_Convolution2D(); const auto *conv2dCommonParams = conv2dParams->common(); - mConv2dParams = conv2dParams; - mConv2dCommonParams = conv2dCommonParams; - mStrides = {conv2dCommonParams->strideY(), conv2dCommonParams->strideX()}; - mDilations = {conv2dCommonParams->dilateY(), conv2dCommonParams->dilateX()}; + mResource->mConv2dParams = conv2dParams; + mResource->mConv2dCommonParams = conv2dCommonParams; + mResource->mStrides = {conv2dCommonParams->strideY(), conv2dCommonParams->strideX()}; + mResource->mDilations = {conv2dCommonParams->dilateY(), conv2dCommonParams->dilateX()}; - auto padding = ConvolutionCommon::convolutionPad(inputs[0], outputs[0], mConv2dCommonParams); + auto padding = ConvolutionCommon::convolutionPad(inputs[0], outputs[0], mResource->mConv2dCommonParams); mPaddings[0] = padding.second;//padY mPaddings[1] = padding.first;//padX - mKernelWidth = conv2dCommonParams->kernelX(); - mKernelHeight = conv2dCommonParams->kernelY(); - mOutputChannel = conv2dCommonParams->outputCount(); - std::string kernelName = "conv_2d_c4h1w4"; - mInputChannel = inputs[0]->channel(); + mResource->mKernelWidth = conv2dCommonParams->kernelX(); + mResource->mKernelHeight = conv2dCommonParams->kernelY(); + mResource->mOutputChannel = conv2dCommonParams->outputCount(); + mResource->mInputChannel = inputs[0]->channel(); std::shared_ptr quanCommon; if (inputs.size() != 1) { // Multi - Input - mConv1x1Opt = false; - mRasterExe.reset(new RasterBufExecution({mFilter.get()}, op, mOpenCLBackend)); + mResource->mConv1x1Opt = false; + mResource->mRasterExe.reset(new RasterBufExecution({mResource->mFilter.get()}, op, mOpenCLBackend)); } else { int weightSize = 0; ConvolutionCommon::getConvParameters(&quanCommon, backend, conv2dParams, &mFilterDataPtr, &weightSize); //select opt conv method - mConv1x1Opt = (mKernelHeight == mKernelWidth && mKernelHeight == 1 && mPaddings[0] == 0 && - mPaddings[1] == 0 && mStrides[0] == 1 && mStrides[1] == 1 && inputs[0]->width() >= 4); + mResource->mConv1x1Opt = (mResource->mKernelHeight == mResource->mKernelWidth && mResource->mKernelHeight == 1 && mPaddings[0] == 0 && + mPaddings[1] == 0 && mResource->mStrides[0] == 1 && mResource->mStrides[1] == 1 && inputs[0]->width() >= 4); } - if (mConv1x1Opt) { + if (mResource->mConv1x1Opt) { //At first, set packCout equal to 4 - setConv1x1WeightBuffer(4, 4, mFilterDataPtr); - kernelName = "conv_2d_1x1_c4h1w4"; + if(mResource->mOutputChannel >= 16){ + setConv1x1WeightBuffer(8, 4, mFilterDataPtr); + mResource->mConv1x1C8Opt = true; + }else{ + setConv1x1WeightBuffer(4, 4, mFilterDataPtr); + } } else { - mFilter.reset( - Tensor::createDevice({ROUND_UP(mOutputChannel, 4) * ROUND_UP(mInputChannel, 4) * mKernelWidth * mKernelHeight})); + mResource->mFilter.reset( + Tensor::createDevice({ROUND_UP(mResource->mOutputChannel, 4) * ROUND_UP(mResource->mInputChannel, 4) * mResource->mKernelWidth * mResource->mKernelHeight})); if (mFilterDataPtr != nullptr) { - std::vector filterImageShape{ROUND_UP(mInputChannel, 4), (UP_DIV(mOutputChannel, 4) * mKernelWidth * mKernelHeight)}; + std::vector filterImageShape{ROUND_UP(mResource->mInputChannel, 4), (UP_DIV(mResource->mOutputChannel, 4) * mResource->mKernelWidth * mResource->mKernelHeight)}; std::shared_ptr filterBuffer( - Tensor::createDevice({mOutputChannel, ROUND_UP(mInputChannel, 4), mKernelWidth, mKernelHeight})); + Tensor::createDevice({mResource->mOutputChannel, ROUND_UP(mResource->mInputChannel, 4), mResource->mKernelWidth, mResource->mKernelHeight})); int buffer_size = filterBuffer->elementSize(); if(mOpenCLBackend->getOpenCLRuntime()->isWeightCpuTransHalf()) { @@ -365,12 +368,12 @@ ConvBufExecution::ConvBufExecution(const std::vector &inputs, const st if(ptrCL != nullptr && res == CL_SUCCESS) { ::memset(ptrCL, 0, buffer_size); if(mOpenCLBackend->getOpenCLRuntime()->isWeightCpuTransHalf()){ - for(int oc=0; ocmOutputChannel; oc++) { + for(int ic=0; icmInputChannel; ic++) { + for(int kh=0; khmKernelHeight; kh++) { + for(int kw=0; kwmKernelWidth; kw++) { + int dst_idx = ((oc * ROUND_UP(mResource->mInputChannel, 4) + ic) * mResource->mKernelHeight + kh)* mResource->mKernelWidth + kw; + int src_idx = ((oc * mResource->mInputChannel + ic) * mResource->mKernelHeight + kh)* mResource->mKernelWidth + kw; ((half_float::half*)ptrCL)[dst_idx] = (half_float::half)(mFilterDataPtr[src_idx]); } @@ -378,10 +381,10 @@ ConvBufExecution::ConvBufExecution(const std::vector &inputs, const st } } }else{ - const int copy_size = mKernelWidth * mKernelHeight * sizeof(float); - for(int oc=0; ocmKernelWidth * mResource->mKernelHeight * sizeof(float); + for(int oc=0; ocmOutputChannel; oc++) { + for(int ic=0; icmInputChannel; ic++) { + ::memcpy((float *)ptrCL + (oc * ROUND_UP(mResource->mInputChannel, 4) + ic) * mResource->mKernelWidth * mResource->mKernelHeight, mFilterDataPtr + (oc * mResource->mInputChannel + ic) * mResource->mKernelWidth * mResource->mKernelHeight, copy_size); } } } @@ -390,27 +393,24 @@ ConvBufExecution::ConvBufExecution(const std::vector &inputs, const st } mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(filterBufferCL, ptrCL); - mFilter.reset(Tensor::createDevice({1, filterImageShape[1], 1, 4 * filterImageShape[0]})); - mOpenCLBackend->onAcquireBuffer(mFilter.get(), Backend::STATIC); + mResource->mFilter.reset(Tensor::createDevice({1, filterImageShape[1], 1, 4 * filterImageShape[0]})); + mOpenCLBackend->onAcquireBuffer(mResource->mFilter.get(), Backend::STATIC); MNN::OpenCL::BufferConvertor bufferConvertor{mOpenCLBackend->getOpenCLRuntime()}; bool needTrans = false; if(mOpenCLBackend->getOpenCLRuntime()->isWeightCpuTransHalf() == false){ needTrans = true; } - bufferConvertor.convertToNC4HW4Buffer(filterBuffer.get(), MNN::OpenCL::CONV2D_FILTER, mFilter.get(), needTrans); + bufferConvertor.convertToNC4HW4Buffer(filterBuffer.get(), MNN::OpenCL::CONV2D_FILTER, mResource->mFilter.get(), needTrans); } } - // Create Kernel - if (mConv2dCommonParams->relu()) { - mBuildOptions.emplace("-DRELU"); - } else if (mConv2dCommonParams->relu6()) { - mBuildOptions.emplace("-DRELU6"); + + if (mResource->mConv2dCommonParams->relu()) { + mResource->mBuildOptions.emplace("-DRELU"); + } else if (mResource->mConv2dCommonParams->relu6()) { + mResource->mBuildOptions.emplace("-DRELU6"); } - mKernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d_buf", kernelName, mBuildOptions); - mMaxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(mKernel)); - #ifdef LOG_VERBOSE MNN_PRINT("end ConvExecution init !\n"); #endif @@ -420,6 +420,26 @@ ConvBufExecution::~ConvBufExecution() { // Do nothing } +ConvBufExecution::ConvBufExecution(std::shared_ptr resource, const MNN::Op* op, Backend *backend) + : ConvBufCommonExecution(backend), CommonExecution(backend, op) { + mResource = resource; + const auto *conv2dParams = op->main_as_Convolution2D(); + const auto *conv2dCommonParams = conv2dParams->common(); + mResource->mConv2dParams = conv2dParams; + mResource->mConv2dCommonParams = conv2dCommonParams; +} + +bool ConvBufExecution::onClone(Backend* bn, const Op* op, Execution** dst) { + if (!mValid) { + return false; + } + if (nullptr == dst) { + return true; + } + *dst = new ConvBufExecution(mResource, op, bn); + return true; +} + ErrorCode ConvBufExecution::onResize(const std::vector &inputs, const std::vector &outputs) { #ifdef LOG_VERBOSE MNN_PRINT("Start ConvExecution onResize !\n"); @@ -428,12 +448,12 @@ ErrorCode ConvBufExecution::onResize(const std::vector &inputs, const auto output = outputs[0]; if (inputs.size() > 1) { // Multi Input, need pretreat - _generateFilterConvertRegion(mFilter.get(), inputs[1]); - bool res = backend()->onAcquireBuffer(mFilter.get(), Backend::DYNAMIC); + _generateFilterConvertRegion(mResource->mFilter.get(), inputs[1]); + bool res = backend()->onAcquireBuffer(mResource->mFilter.get(), Backend::DYNAMIC); if (!res) { return OUT_OF_MEMORY; } - mRasterExe->onResize({}, {mFilter.get()}); + mResource->mRasterExe->onResize({}, {mResource->mFilter.get()}); } mOpenCLBackend->startRecord(mRecording); std::vector inputShape = tensorShapeFormat(input); @@ -447,45 +467,37 @@ ErrorCode ConvBufExecution::onResize(const std::vector &inputs, const const int inputChannels = inputShape.at(3); const int inputChannelBlocks = UP_DIV(inputChannels, 4); - auto padding = ConvolutionCommon::convolutionPad(input, output, mConv2dCommonParams); + auto padding = ConvolutionCommon::convolutionPad(input, output, mResource->mConv2dCommonParams); mPaddings[0] = padding.second;//padY mPaddings[1] = padding.first;//padX - std::string info = std::to_string(inputChannels) + "_" + std::to_string(mKernelHeight) + "_" + std::to_string(mKernelWidth) + "_" + std::to_string(mStrides[0]) + "_" + std::to_string(mStrides[1]) + "_" + std::to_string(mDilations[0]) + "_" + std::to_string(mDilations[1]); - if (mConv1x1Opt) { + std::string info = std::to_string(inputChannels) + "_" + std::to_string(outChannel) + "_" + std::to_string(mResource->mKernelHeight) + "_" + std::to_string(mResource->mKernelWidth) + "_" + std::to_string(mResource->mStrides[0]) + "_" + std::to_string(mResource->mStrides[1]) + "_" + std::to_string(mResource->mDilations[0]) + "_" + std::to_string(mResource->mDilations[1]); + if (mResource->mConv1x1Opt) { // {"conv_2d_1x1_c4h1w4", "conv_2d_1x1_c4h1w2", "conv_2d_1x1_c4h1w1", "conv_2d_1x1_c8h1w4"}; - const int total_kernel = 5; - std::string kernelName[total_kernel] = {"conv_2d_1x1_c4h1w4", "conv_2d_1x1_c4h1w2", "conv_2d_1x1_c4h1w1", "conv_2d_1x1_c8h1w4", "conv_2d_1x1_c8h1w2"}; - int itemC[total_kernel] = {4, 4, 4, 8, 8}; - int itemW[total_kernel] = {4, 2, 1, 4, 2}; - int c8_index_start = 3; + const int total_kernel = 3; + std::string kernelName[total_kernel] = {"conv_2d_1x1_c4h1w4", "conv_2d_1x1_c4h1w2", "conv_2d_1x1_c4h1w1"}; + int itemC[total_kernel] = {4, 4, 4}; + int itemW[total_kernel] = {4, 2, 1}; int actual_kernel = total_kernel; - if(mOpenCLBackend->getOpenCLRuntime()->getCLTuneLevel() == Normal) { + if(mResource->mConv1x1C8Opt) { actual_kernel = 2; - kernelName[0] = "conv_2d_1x1_c4h1w1"; - itemC[0] = 4; - itemW[0] = 1; + kernelName[0] = "conv_2d_1x1_c8h1w4"; + itemC[0] = 8; + itemW[0] = 4; kernelName[1] = "conv_2d_1x1_c8h1w2"; itemC[1] = 8; itemW[1] = 2; - c8_index_start = 1; - } else if(mOpenCLBackend->getOpenCLRuntime()->getCLTuneLevel() == Fast || mOpenCLBackend->getOpenCLRuntime()->getCLTuneLevel() == None) { - actual_kernel = 1; - - kernelName[0] = "conv_2d_1x1_c4h1w1"; - itemC[0] = 4; - itemW[0] = 1; } - cl::Kernel kernel[total_kernel]; + std::shared_ptr kernel[total_kernel]; std::vector globalWorkSize[total_kernel]; std::vector localWorkSize[total_kernel]; std::pair min_cost(INT_MAX, 0);//(min_time, min_index) for(int knl_idx = 0; knl_idx < actual_kernel; knl_idx++) { - std::set buildOption = mBuildOptions; + std::set buildOption = mResource->mBuildOptions; if(outputShape.at(3) % itemC[knl_idx] != 0){ buildOption.emplace("-DCHANNEL_LEAVE"); } @@ -499,21 +511,21 @@ ErrorCode ConvBufExecution::onResize(const std::vector &inputs, const cl_int ret = CL_SUCCESS; globalWorkSize[knl_idx] = {static_cast(UP_DIV(outputShape.at(3), itemC[knl_idx]) * UP_DIV(outputShape.at(2), itemW[knl_idx])), static_cast(outputShape.at(0) * outputShape.at(1))}; - ret |= kernel[knl_idx].setArg(idx++, globalWorkSize[knl_idx][0]); - ret |= kernel[knl_idx].setArg(idx++, globalWorkSize[knl_idx][1]); - ret |= kernel[knl_idx].setArg(idx++, UP_DIV(width, itemW[knl_idx])); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(input)); - ret |= kernel[knl_idx].setArg(idx++, *mKernelBuffer.get()); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(mBias.get())); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(output)); - ret |= kernel[knl_idx].setArg(idx++, static_cast(inputChannelBlocks)); - ret |= kernel[knl_idx].setArg(idx++, height); - ret |= kernel[knl_idx].setArg(idx++, width); - ret |= kernel[knl_idx].setArg(idx++, UP_DIV(outChannel, 4)); + ret |= kernel[knl_idx]->get().setArg(idx++, globalWorkSize[knl_idx][0]); + ret |= kernel[knl_idx]->get().setArg(idx++, globalWorkSize[knl_idx][1]); + ret |= kernel[knl_idx]->get().setArg(idx++, UP_DIV(width, itemW[knl_idx])); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(input)); + ret |= kernel[knl_idx]->get().setArg(idx++, *mResource->mKernelBuffer.get()); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(mResource->mBias.get())); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(output)); + ret |= kernel[knl_idx]->get().setArg(idx++, static_cast(inputChannelBlocks)); + ret |= kernel[knl_idx]->get().setArg(idx++, height); + ret |= kernel[knl_idx]->get().setArg(idx++, width); + ret |= kernel[knl_idx]->get().setArg(idx++, UP_DIV(outChannel, 4)); MNN_CHECK_CL_SUCCESS(ret, "setArg Conv1x1Buf Kernel Select"); std::pair, int> retTune; - retTune = gws2dLwsTune(kernel[knl_idx], globalWorkSize[knl_idx], kernelName[knl_idx], maxWorkGroupSize); + retTune = gws2dLwsTune(kernel[knl_idx], globalWorkSize[knl_idx], kernelName[knl_idx] + info, maxWorkGroupSize); //printf("cov1x1 %d, %d\n", knl_idx, retTune.second); if(min_cost.first > retTune.second) { min_cost.first = retTune.second; @@ -524,14 +536,9 @@ ErrorCode ConvBufExecution::onResize(const std::vector &inputs, const std::shared_ptr quanCommon; int min_index = min_cost.second; - if(min_index >= c8_index_start) {//if best kernel is "conv_2d_1x1_c8h1w4", set weight packCout to 8 - int weightSize = 0; - ConvolutionCommon::getConvParameters(&quanCommon, backend(), mConv2dParams, &mFilterDataPtr, &weightSize); - setConv1x1WeightBuffer(8, 4, mFilterDataPtr); - } mGlobalWorkSize = {globalWorkSize[min_index][0], globalWorkSize[min_index][1]}; - std::set buildOption = mBuildOptions; + std::set buildOption = mResource->mBuildOptions; if(outputShape.at(3) % itemC[min_index] != 0){ buildOption.emplace("-DCHANNEL_LEAVE"); } @@ -542,27 +549,27 @@ ErrorCode ConvBufExecution::onResize(const std::vector &inputs, const uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, UP_DIV(width, itemW[min_index])); - ret |= mKernel.setArg(idx++, openCLBuffer(input)); - ret |= mKernel.setArg(idx++, *mKernelBuffer.get()); - ret |= mKernel.setArg(idx++, openCLBuffer(mBias.get())); - ret |= mKernel.setArg(idx++, openCLBuffer(output)); - ret |= mKernel.setArg(idx++, static_cast(inputChannelBlocks)); - ret |= mKernel.setArg(idx++, height); - ret |= mKernel.setArg(idx++, width); - ret |= mKernel.setArg(idx++, UP_DIV(outChannel, 4)); + ret |= mKernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= mKernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= mKernel->get().setArg(idx++, UP_DIV(width, itemW[min_index])); + ret |= mKernel->get().setArg(idx++, openCLBuffer(input)); + ret |= mKernel->get().setArg(idx++, *mResource->mKernelBuffer.get()); + ret |= mKernel->get().setArg(idx++, openCLBuffer(mResource->mBias.get())); + ret |= mKernel->get().setArg(idx++, openCLBuffer(output)); + ret |= mKernel->get().setArg(idx++, static_cast(inputChannelBlocks)); + ret |= mKernel->get().setArg(idx++, height); + ret |= mKernel->get().setArg(idx++, width); + ret |= mKernel->get().setArg(idx++, UP_DIV(outChannel, 4)); MNN_CHECK_CL_SUCCESS(ret, "setArg Conv1x1Buf"); //printf("conv1x1 %d, %d %d, %d %d, %d %d\n", min_index, mGlobalWorkSize[0], mGlobalWorkSize[1], mLocalWorkSize[0], mLocalWorkSize[1], outChannel, width); } else { int inputImageShape[2] = {inputHeight, inputWidth}; int outputImageShape[2] = {height, width}; - int kernelShape[2] = {mKernelHeight, mKernelWidth}; - int strideShape[2] = {mStrides[0], mStrides[1]}; + int kernelShape[2] = {mResource->mKernelHeight, mResource->mKernelWidth}; + int strideShape[2] = {mResource->mStrides[0],mResource->mStrides[1]}; int paddingShape[2] = {mPaddings[0], mPaddings[1]}; - int dilationShape[2] = {mDilations[0], mDilations[1]}; + int dilationShape[2] = {mResource->mDilations[0], mResource->mDilations[1]}; // {"conv_2d_c4h1w2", "conv_2d_c4h1w1", "conv_2d_c8h1w1", "conv_2d_c4h1w4", "conv_2d_c8h2w1", "conv_2d_c4h4w1"}; const int total_kernel = 7; @@ -575,12 +582,12 @@ ErrorCode ConvBufExecution::onResize(const std::vector &inputs, const int actual_kernel = total_kernel; - cl::Kernel kernel[total_kernel]; + std::shared_ptr kernel[total_kernel]; std::vector globalWorkSize[total_kernel]; std::vector localWorkSize[total_kernel]; std::pair min_cost(INT_MAX, 0);//(min_time, min_index) for(int knl_idx = 0; knl_idx < actual_kernel; knl_idx++) { - std::set buildOption = mBuildOptions; + std::set buildOption = mResource->mBuildOptions; if(outputShape.at(3) % itemC[knl_idx] != 0){ buildOption.emplace("-DCHANNEL_LEAVE"); } @@ -593,23 +600,23 @@ ErrorCode ConvBufExecution::onResize(const std::vector &inputs, const globalWorkSize[knl_idx] = {static_cast(UP_DIV(outputShape.at(3), itemC[knl_idx]) * UP_DIV(outputShape.at(2), itemW[knl_idx])), static_cast(outputShape.at(0) * UP_DIV(outputShape.at(1), itemH[knl_idx]))}; uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= kernel[knl_idx].setArg(idx++, globalWorkSize[knl_idx][0]); - ret |= kernel[knl_idx].setArg(idx++, globalWorkSize[knl_idx][1]); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(input)); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(mFilter.get())); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(mBias.get())); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(output)); - ret |= kernel[knl_idx].setArg(idx++, sizeof(inputImageShape), inputImageShape); - ret |= kernel[knl_idx].setArg(idx++, inputChannels); - ret |= kernel[knl_idx].setArg(idx++, inputChannelBlocks); - ret |= kernel[knl_idx].setArg(idx++, sizeof(outputImageShape), outputImageShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(kernelShape), kernelShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(strideShape), strideShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(paddingShape), paddingShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(dilationShape), dilationShape); - ret |= kernel[knl_idx].setArg(idx++, UP_DIV(width, itemW[knl_idx])); - ret |= kernel[knl_idx].setArg(idx++, UP_DIV(outChannel, 4)); - ret |= kernel[knl_idx].setArg(idx++, UP_DIV(height, itemH[knl_idx])); + ret |= kernel[knl_idx]->get().setArg(idx++, globalWorkSize[knl_idx][0]); + ret |= kernel[knl_idx]->get().setArg(idx++, globalWorkSize[knl_idx][1]); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(input)); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(mResource->mFilter.get())); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(mResource->mBias.get())); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(output)); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(inputImageShape), inputImageShape); + ret |= kernel[knl_idx]->get().setArg(idx++, inputChannels); + ret |= kernel[knl_idx]->get().setArg(idx++, inputChannelBlocks); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(outputImageShape), outputImageShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(kernelShape), kernelShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(strideShape), strideShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(paddingShape), paddingShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(dilationShape), dilationShape); + ret |= kernel[knl_idx]->get().setArg(idx++, UP_DIV(width, itemW[knl_idx])); + ret |= kernel[knl_idx]->get().setArg(idx++, UP_DIV(outChannel, 4)); + ret |= kernel[knl_idx]->get().setArg(idx++, UP_DIV(height, itemH[knl_idx])); MNN_CHECK_CL_SUCCESS(ret, "setArg ConvBuf Kernel Select"); std::pair, int> retTune; @@ -624,7 +631,7 @@ ErrorCode ConvBufExecution::onResize(const std::vector &inputs, const int min_index = min_cost.second; mGlobalWorkSize = {globalWorkSize[min_index][0], globalWorkSize[min_index][1]}; - std::set buildOption = mBuildOptions; + std::set buildOption = mResource->mBuildOptions; if(outputShape.at(3) % itemC[min_index] != 0){ buildOption.emplace("-DCHANNEL_LEAVE"); } @@ -636,29 +643,31 @@ ErrorCode ConvBufExecution::onResize(const std::vector &inputs, const uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, openCLBuffer(input)); - ret |= mKernel.setArg(idx++, openCLBuffer(mFilter.get())); - ret |= mKernel.setArg(idx++, openCLBuffer(mBias.get())); - ret |= mKernel.setArg(idx++, openCLBuffer(output)); - ret |= mKernel.setArg(idx++, sizeof(inputImageShape), inputImageShape); - ret |= mKernel.setArg(idx++, inputChannels); - ret |= mKernel.setArg(idx++, inputChannelBlocks); - ret |= mKernel.setArg(idx++, sizeof(outputImageShape), outputImageShape); - ret |= mKernel.setArg(idx++, sizeof(kernelShape), kernelShape); - ret |= mKernel.setArg(idx++, sizeof(strideShape), strideShape); - ret |= mKernel.setArg(idx++, sizeof(paddingShape), paddingShape); - ret |= mKernel.setArg(idx++, sizeof(dilationShape), dilationShape); - ret |= mKernel.setArg(idx++, UP_DIV(width, itemW[min_index])); - ret |= mKernel.setArg(idx++, UP_DIV(outChannel, 4)); - ret |= mKernel.setArg(idx++, UP_DIV(height, itemH[min_index])); + ret |= mKernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= mKernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= mKernel->get().setArg(idx++, openCLBuffer(input)); + ret |= mKernel->get().setArg(idx++, openCLBuffer(mResource->mFilter.get())); + ret |= mKernel->get().setArg(idx++, openCLBuffer(mResource->mBias.get())); + ret |= mKernel->get().setArg(idx++, openCLBuffer(output)); + ret |= mKernel->get().setArg(idx++, sizeof(inputImageShape), inputImageShape); + ret |= mKernel->get().setArg(idx++, inputChannels); + ret |= mKernel->get().setArg(idx++, inputChannelBlocks); + ret |= mKernel->get().setArg(idx++, sizeof(outputImageShape), outputImageShape); + ret |= mKernel->get().setArg(idx++, sizeof(kernelShape), kernelShape); + ret |= mKernel->get().setArg(idx++, sizeof(strideShape), strideShape); + ret |= mKernel->get().setArg(idx++, sizeof(paddingShape), paddingShape); + ret |= mKernel->get().setArg(idx++, sizeof(dilationShape), dilationShape); + ret |= mKernel->get().setArg(idx++, UP_DIV(width, itemW[min_index])); + ret |= mKernel->get().setArg(idx++, UP_DIV(outChannel, 4)); + ret |= mKernel->get().setArg(idx++, UP_DIV(height, itemH[min_index])); MNN_CHECK_CL_SUCCESS(ret, "setArg ConvBuf"); } if (inputs.size() > 1) { - backend()->onReleaseBuffer(mFilter.get(), Backend::DYNAMIC); + backend()->onReleaseBuffer(mResource->mFilter.get(), Backend::DYNAMIC); } mOpenCLBackend->recordKernel2d(mKernel, mGlobalWorkSize, mLocalWorkSize); + mGlobalWorkSize[0] = ROUND_UP(mGlobalWorkSize[0], std::max((uint32_t)1, mLocalWorkSize[0])); + mGlobalWorkSize[1] = ROUND_UP(mGlobalWorkSize[1], std::max((uint32_t)1, mLocalWorkSize[1])); mOpenCLBackend->endRecord(mRecording); #ifdef LOG_VERBOSE MNN_PRINT("end ConvExecution onResize !\n"); @@ -671,7 +680,7 @@ ErrorCode ConvBufExecution::onExecute(const std::vector &inputs, const MNN_PRINT("Start ConvExecution onExecute !\n"); #endif if (inputs.size() > 1) { - mRasterExe->onExecute({}, {mFilter.get()}); + mResource->mRasterExe->onExecute({}, {mResource->mFilter.get()}); if (inputs.size() > 2) { auto buffer_size = inputs[2]->elementSize(); if(mOpenCLBackend->getOpenCLRuntime()->isSupportedFP16()) { @@ -679,7 +688,7 @@ ErrorCode ConvBufExecution::onExecute(const std::vector &inputs, const } else { buffer_size *= sizeof(float); } - mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueCopyBuffer(openCLBuffer(inputs[2]), openCLBuffer(mBias.get()), 0, 0, buffer_size); + mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueCopyBuffer(openCLBuffer(inputs[2]), openCLBuffer(mResource->mBias.get()), 0, 0, buffer_size); } } #ifdef ENABLE_OPENCL_TIME_PROFILER @@ -760,14 +769,16 @@ class ConvolutionBufCreator : public OpenCLBackend::Creator { } if (ConvBufWinograd::valid(conv2D->common(), inputs[0], outputs[0], static_cast(backend)->getOpenCLRuntime()->getGpuType() == INTEL)) { - std::vector inputShape = tensorShapeFormat(input); - std::vector outputShape = tensorShapeFormat(output); - const int src_width = inputShape.at(2); - const int dst_width = outputShape.at(2); - int pad_right = (UP_DIV(dst_width, 2) - 1) * 2 + 3 - padding.first - src_width + 1; - TensorUtils::setTensorPad(input, padding.first, pad_right, 0, 0); - TensorUtils::setTensorChannelPack(input, 16); - return new ConvBufWinograd(conv2D, backend); + if(static_cast(backend)->getOpenCLRuntime()->isSupportedIntelSubgroup()){ + std::vector inputShape = tensorShapeFormat(input); + std::vector outputShape = tensorShapeFormat(output); + const int src_width = inputShape.at(2); + const int dst_width = outputShape.at(2); + int pad_right = (UP_DIV(dst_width, 2) - 1) * 2 + 3 - padding.first - src_width + 1; + TensorUtils::setTensorPad(input, padding.first, pad_right, 0, 0); + TensorUtils::setTensorChannelPack(input, 16); + } + return new ConvBufWinograd(op, backend); } #ifdef MNN_SUPPORT_INTEL_SUBGROUP if (static_cast(backend)->getOpenCLRuntime()->isSupportedIntelSubgroup() && outputChannel >= 16) { diff --git a/source/backend/opencl/execution/buffer/ConvBufExecution.hpp b/source/backend/opencl/execution/buffer/ConvBufExecution.hpp index f9d0e7f87..10e3deda2 100644 --- a/source/backend/opencl/execution/buffer/ConvBufExecution.hpp +++ b/source/backend/opencl/execution/buffer/ConvBufExecution.hpp @@ -11,61 +11,61 @@ #ifndef ConvBufExecution_hpp #define ConvBufExecution_hpp -#include "core/Execution.hpp" - -#include -#include -#include -#include -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "backend/opencl/execution/image/CommonExecution.hpp" namespace MNN { namespace OpenCL { -class ConvBufCommonExecution : public Execution, public CommonExtension { +struct ConvBufResource { + const Convolution2DCommon *mConv2dCommonParams; + const Convolution2D *mConv2dParams; + std::shared_ptr mKernelBuffer; + std::shared_ptr dequantScale; + std::shared_ptr dequantOffset; + std::shared_ptr mFilter; + std::shared_ptr mBias; + int mKernelWidth; + int mKernelHeight; + int mOutputChannel; + int mInputChannel; + std::vector mStrides{1, 1}; + std::vector mDilations{1, 1}; + std::set mBuildOptions; + bool mConv1x1Opt = false; + bool mConv1x1C8Opt = false; + std::shared_ptr mRasterExe; +}; + +class ConvBufCommonExecution { public: ConvBufCommonExecution(Backend *backend); ConvBufCommonExecution(const Convolution2D *op, Backend *backend); virtual ~ConvBufCommonExecution(); - std::pair, uint32_t> gws2dLwsTune(const cl::Kernel &kernel, const std::vector &gws, const std::string &kernelName, const uint32_t maxWorkGroupSize); + std::pair, uint32_t> gws2dLwsTune(const std::shared_ptr &kernel, const std::vector &gws, const std::string &kernelName, const uint32_t maxWorkGroupSize); protected: - std::shared_ptr mBias; + std::shared_ptr mResource; OpenCLBackend *mOpenCLBackend; }; -class ConvBufExecution : public ConvBufCommonExecution { +class ConvBufExecution : public ConvBufCommonExecution, public CommonExecution { public: ConvBufExecution(const std::vector &inputs, const std::vector &outputs, const MNN::Op *op, Backend *backend); + ConvBufExecution(std::shared_ptr resource, const MNN::Op* op, Backend* backend); virtual ~ConvBufExecution(); virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual bool onClone(Backend* bn, const Op* op, Execution** dst) override; void setConv1x1WeightBuffer(int packCout, int packCin, const float* filterDataPtr); private: void _generateFilterConvertRegion(Tensor *virtualFilter, Tensor *originBuffer) const; - const Convolution2DCommon *mConv2dCommonParams; - const Convolution2D *mConv2dParams; - std::vector mStrides{1, 1}; std::vector mPaddings{0, 0}; - std::vector mDilations{1, 1}; std::vector mGlobalWorkSize{1, 1, 1}; std::vector mLocalWorkSize{1, 1, 1, 1}; - std::shared_ptr mFilter; - cl::Kernel mKernel; - uint32_t mMaxWorkGroupSize; - bool mConv1x1Opt{false}; - std::shared_ptr mKernelBuffer; - int mKernelWidth; - int mKernelHeight; - int mOutputChannel; - int mInputChannel; + std::shared_ptr mKernel; const float* mFilterDataPtr = nullptr; - std::set mBuildOptions; - std::shared_ptr mRasterExe; }; } // namespace OpenCL diff --git a/source/backend/opencl/execution/buffer/ConvBufLowMemoryExecution.cpp b/source/backend/opencl/execution/buffer/ConvBufLowMemoryExecution.cpp index 1e616be2e..20e860f77 100644 --- a/source/backend/opencl/execution/buffer/ConvBufLowMemoryExecution.cpp +++ b/source/backend/opencl/execution/buffer/ConvBufLowMemoryExecution.cpp @@ -12,8 +12,8 @@ namespace OpenCL { // set mDequantScale mDequantOffset mNumQuantBit mFilterDataPtr from mConv2dParams void ConvBufLowMemoryExecution::getInfoFromOpLowMemory(std::shared_ptr & quanCommon) { - quanCommon = ConvolutionCommon::load(mConv2dParams, this->backend(), false, true); - if ((mOpenCLBackend->getMemory() == BackendConfig::Memory_Low) && (mConv2dParams->quanParameter() != nullptr)) { + quanCommon = ConvolutionCommon::load(mResource->mConv2dParams, this->backend(), false, true); + if ((mOpenCLBackend->getMemory() == BackendConfig::Memory_Low) && (mResource->mConv2dParams->quanParameter() != nullptr)) { mLowMemoryFlag = true; } else { MNN_ERROR("Conv buf low memory init error.\n"); @@ -27,39 +27,21 @@ void ConvBufLowMemoryExecution::getInfoFromOpLowMemory(std::shared_ptralpha.get(); - int numAlpha = mOutputChannel; + int numAlpha = mResource->mOutputChannel; // set mDequantScale mDequantOffset int numAlphaPack = ROUND_UP(numAlpha, 16); - int numBiasPack = ROUND_UP(mOutputChannel, 16); - mResource->bias.reset(Tensor::createDevice({1, 1, 1, ROUND_UP(mOutputChannel, 16)})); mResource->dequantScale.reset(Tensor::createDevice({numAlphaPack})); mResource->dequantOffset.reset(Tensor::createDevice({numAlphaPack})); - mOpenCLBackend->onAcquireBuffer(mResource->bias.get(), Backend::STATIC); mOpenCLBackend->onAcquireBuffer(mResource->dequantScale.get(), Backend::STATIC); mOpenCLBackend->onAcquireBuffer(mResource->dequantOffset.get(), Backend::STATIC); - cl::Buffer &biasBuffer = openCLBuffer(mResource->bias.get()); cl::Buffer &dequantScaleBuffer = openCLBuffer(mResource->dequantScale.get()); cl::Buffer &dequantOffsetBuffer = openCLBuffer(mResource->dequantOffset.get()); // transfer data from src in cpu to dst in gpu int bytes = mOpenCLBackend->fpBytes(); cl_int resBias, resScale, resOffset; - auto biasPtrCL = mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueMapBuffer(biasBuffer, true, CL_MAP_WRITE, 0, numBiasPack * bytes, nullptr, nullptr, &resBias); void * dequantScaleBufferMap = mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueMapBuffer(dequantScaleBuffer, true, CL_MAP_WRITE, 0, numAlphaPack * bytes, nullptr, nullptr, &resScale); void * dequantOffsetBufferMap = mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueMapBuffer(dequantOffsetBuffer, true, CL_MAP_WRITE, 0, numAlphaPack * bytes, nullptr, nullptr, &resOffset); - if (biasPtrCL != nullptr && resBias == CL_SUCCESS) { - ::memset(biasPtrCL, 0, numBiasPack * bytes); - if (nullptr != mConv2dParams->bias()) { - const float *biasDataPtr = mConv2dParams->bias()->data(); - if (bytes == 2){ - for(int i = 0; i < mOutputChannel; i++) { - ((half_float::half*)biasPtrCL)[i] = (half_float::half)(biasDataPtr[i]); - } - } else { - ::memcpy(biasPtrCL, biasDataPtr, mOutputChannel * sizeof(float)); - } - } - } ::memset(dequantScaleBufferMap, -1, numAlphaPack * bytes); ::memset(dequantOffsetBufferMap, 0, numAlphaPack * bytes); if (dequantScaleBufferMap != nullptr && dequantOffsetBufferMap != nullptr && resScale == CL_SUCCESS && resOffset == CL_SUCCESS) { @@ -92,7 +74,6 @@ void ConvBufLowMemoryExecution::getInfoFromOpLowMemory(std::shared_ptrgetOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(biasBuffer, biasPtrCL); mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(dequantScaleBuffer, dequantScaleBufferMap); mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(dequantOffsetBuffer, dequantOffsetBufferMap); // set mFilterDataPtr @@ -101,7 +82,7 @@ void ConvBufLowMemoryExecution::getInfoFromOpLowMemory(std::shared_ptr & quanCommon) { cl_int res; - std::shared_ptr filterBuffer(Tensor::createDevice({ROUND_UP(mOutputChannel, 8)/*Cout pack set to max 8*/, ROUND_UP(mInputChannel, packCin), mResource->mKernelWidth, mResource->mKernelHeight})); + std::shared_ptr filterBuffer(Tensor::createDevice({ROUND_UP(mResource->mOutputChannel, 8)/*Cout pack set to max 8*/, ROUND_UP(mResource->mInputChannel, packCin), mResource->mKernelWidth, mResource->mKernelHeight})); size_t buffer_size = filterBuffer->usize() / sizeof(float); float *dequantAlpha = quanCommon->alpha.get(); // shared part for all cases @@ -112,20 +93,20 @@ void ConvBufLowMemoryExecution::set1x1WeightLowMemory(int packCout, int packCin, // int4 case buffer_size /= 2; } else {/* More types to be supported. */} - mResource->kernelBuffer.reset(new cl::Buffer(mOpenCLBackend->getOpenCLRuntime()->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, buffer_size)); - auto kernelBufferPtr = mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueMapBuffer(*(mResource->kernelBuffer.get()), true, CL_MAP_WRITE, 0, buffer_size, nullptr, nullptr, &res); + mResource->mKernelBuffer.reset(new cl::Buffer(mOpenCLBackend->getOpenCLRuntime()->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, buffer_size)); + auto kernelBufferPtr = mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueMapBuffer(*(mResource->mKernelBuffer.get()), true, CL_MAP_WRITE, 0, buffer_size, nullptr, nullptr, &res); if(kernelBufferPtr != nullptr && res == CL_SUCCESS){ ::memset(kernelBufferPtr, 0, buffer_size); - for(int o = 0; o < mOutputChannel; o++){ + for(int o = 0; o < mResource->mOutputChannel; o++){ float zero = 0; if(quanCommon->asymmetric){ zero = (-dequantAlpha[2 * o + 1])/dequantAlpha[2 * o]; } int i = 0; - for(; i < mInputChannel; i++){ - int bufferIdx = (o/packCout) * packCin*packCout + (i/packCin)*packCin*ROUND_UP(mOutputChannel, packCout) + (i%packCin)*packCout + (o%packCout);//(Ci/packCin, Co/packCout, packCin, packCout) - int filterIdx = o*mInputChannel + i; + for(; i < mResource->mInputChannel; i++){ + int bufferIdx = (o/packCout) * packCin*packCout + (i/packCin)*packCin*ROUND_UP(mResource->mOutputChannel, packCout) + (o%packCout)*packCin + (i%packCin);//(Ci/packCin, Co/packCout,packCout, packCin) + int filterIdx = o*mResource->mInputChannel + i; if (mNumQuantBit == 8) { // int8 case ((int8_t *)kernelBufferPtr)[bufferIdx] = (int8_t)(((int8_t *)filterDataPtr)[filterIdx]); @@ -138,8 +119,8 @@ void ConvBufLowMemoryExecution::set1x1WeightLowMemory(int packCout, int packCin, } } else {/* More types to be supported. */} } - for(; i < ROUND_UP(mInputChannel, 4); i++){ - int bufferIdx = (o/packCout) * packCin*packCout + (i/packCin)*packCin*ROUND_UP(mOutputChannel, packCout) + (i%packCin)*packCout + (o%packCout);//(Ci/packCin, Co/packCout, packCin, packCout) + for(; i < ROUND_UP(mResource->mInputChannel, 4); i++){ + int bufferIdx = (o/packCout) * packCin*packCout + (i/packCin)*packCin*ROUND_UP(mResource->mOutputChannel, packCout) + (i%packCin)*packCout + (o%packCout);//(Ci/packCin, Co/packCout, packCin, packCout) if (mNumQuantBit == 8) { // int8 case ((int8_t *)kernelBufferPtr)[bufferIdx] = (int8_t)(zero); @@ -157,13 +138,13 @@ void ConvBufLowMemoryExecution::set1x1WeightLowMemory(int packCout, int packCin, MNN_ERROR("set1x1WeightLowMemory: Map error ptrCL == nullptr \n"); MNN_ASSERT(false); } - mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(*(mResource->kernelBuffer.get()), kernelBufferPtr); + mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(*(mResource->mKernelBuffer.get()), kernelBufferPtr); } // set mFilter for the general kernels void ConvBufLowMemoryExecution::setGeneralWeightLowMemory(void* filterDataPtr, std::shared_ptr & quanCommon) { if (filterDataPtr != nullptr) { - std::vector filterImageShape{ROUND_UP(mInputChannel, 4), (UP_DIV(mOutputChannel, 4) * mResource->mKernelWidth * mResource->mKernelHeight)}; - std::shared_ptr filterBuffer(Tensor::createDevice({mOutputChannel, ROUND_UP(mInputChannel, 4), mResource->mKernelWidth, mResource->mKernelHeight})); + std::vector filterImageShape{ROUND_UP(mResource->mInputChannel, 4), (UP_DIV(mResource->mOutputChannel, 4) * mResource->mKernelWidth * mResource->mKernelHeight)}; + std::shared_ptr filterBuffer(Tensor::createDevice({mResource->mOutputChannel, ROUND_UP(mResource->mInputChannel, 4), mResource->mKernelWidth, mResource->mKernelHeight})); // int buffer_size = filterBuffer->elementSize(); size_t buffer_size = filterBuffer->usize() / sizeof(float); buffer_size *= sizeof(int8_t); @@ -176,17 +157,17 @@ void ConvBufLowMemoryExecution::setGeneralWeightLowMemory(void* filterDataPtr, s if(ptrCL != nullptr && res == CL_SUCCESS) { ::memset(ptrCL, 0, buffer_size); const int copy_size = mResource->mKernelWidth * mResource->mKernelHeight * sizeof(int8_t); - for(int oc=0; ocmOutputChannel; oc++) { float zero = 0; if(quanCommon->asymmetric){ zero = (-dequantAlpha[2 * oc + 1])/dequantAlpha[2 * oc]; } int ic = 0; - for(; icmKernelWidth * mResource->mKernelHeight, ((int8_t *)filterDataPtr) + (oc * mInputChannel + ic) * mResource->mKernelWidth * mResource->mKernelHeight, copy_size); + for(; icmInputChannel; ic++) { + ::memcpy((int8_t *)ptrCL + (oc * ROUND_UP(mResource->mInputChannel, 4) + ic) * mResource->mKernelWidth * mResource->mKernelHeight, ((int8_t *)filterDataPtr) + (oc * mResource->mInputChannel + ic) * mResource->mKernelWidth * mResource->mKernelHeight, copy_size); } - for(; icmKernelWidth * mResource->mKernelHeight] = (int8_t)(zero); + for(; icmInputChannel, 4); ic++) { + ((int8_t *)ptrCL)[(oc * ROUND_UP(mResource->mInputChannel, 4) + ic) * mResource->mKernelWidth * mResource->mKernelHeight] = (int8_t)(zero); } } } else { @@ -196,143 +177,32 @@ void ConvBufLowMemoryExecution::setGeneralWeightLowMemory(void* filterDataPtr, s // convert to NC4HW4 if (mNumQuantBit == 8) { // ROUND_UP(IC, 4), UP_DIV(OC, 4) * mKernelWidth * mKernelHeight - mResource->filter.reset(Tensor::createDevice({1, filterImageShape[1], 1, 4 * filterImageShape[0]})); - mOpenCLBackend->onAcquireBuffer(mResource->filter.get(), Backend::STATIC); + mResource->mFilter.reset(Tensor::createDevice({1, filterImageShape[1], 1, 4 * filterImageShape[0]})); + mOpenCLBackend->onAcquireBuffer(mResource->mFilter.get(), Backend::STATIC); MNN::OpenCL::BufferConvertor bufferConvertor{mOpenCLBackend->getOpenCLRuntime()}; // filterBuffer shape: {OC, ROUND_UP(IC, 4), mKernelWidth, mKernelHeight} - bufferConvertor.convertToNC4HW4Buffer(filterBuffer.get(), MNN::OpenCL::CONV2D_FILTER, mResource->filter.get(), false, true, mLowMemoryFlag, mNumQuantBit); + bufferConvertor.convertToNC4HW4Buffer(filterBuffer.get(), MNN::OpenCL::CONV2D_FILTER, mResource->mFilter.get(), false, true, mLowMemoryFlag, mNumQuantBit); } else if (mNumQuantBit == 4){ // ROUND_UP(IC, 4), UP_DIV(OC, 4) * mKernelWidth * mKernelHeight // For int4 case, data stored in mFilter should be uint8_t, // while "Tensor::createDevice" occupies more memory than "Tensor::createDevice". // Therefore, we use "Tensor::createDevice" currently, leaving "Tensor::createDevice" to be supported. - mResource->filter.reset(Tensor::createDevice({1, filterImageShape[1], 1, 2 * filterImageShape[0]})); - mOpenCLBackend->onAcquireBuffer(mResource->filter.get(), Backend::STATIC); + mResource->mFilter.reset(Tensor::createDevice({1, filterImageShape[1], 1, 2 * filterImageShape[0]})); + mOpenCLBackend->onAcquireBuffer(mResource->mFilter.get(), Backend::STATIC); MNN::OpenCL::BufferConvertor bufferConvertor{mOpenCLBackend->getOpenCLRuntime()}; // filterBuffer shape: {OC, ROUND_UP(IC, 4), mKernelWidth, mKernelHeight} - bufferConvertor.convertToNC4HW4Buffer(filterBuffer.get(), MNN::OpenCL::CONV2D_FILTER, mResource->filter.get(), false, true, mLowMemoryFlag, mNumQuantBit); + bufferConvertor.convertToNC4HW4Buffer(filterBuffer.get(), MNN::OpenCL::CONV2D_FILTER, mResource->mFilter.get(), false, true, mLowMemoryFlag, mNumQuantBit); } else {/* More types to be supported. */} } else { MNN_ERROR("GetConvParams Error: filterDataPtr == nullptr. \n"); MNN_ASSERT(false); } } -// select the fastest kernel for the 1x1 cases by tuning -void ConvBufLowMemoryExecution::tune1x1CaseLowMemory(Tensor * input, Tensor * output) { - std::vector inputShape = tensorShapeFormat(input); - std::vector outputShape = tensorShapeFormat(output); - auto runTime = ((OpenCLBackend *)backend())->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); - const int height = outputShape.at(1); - const int width = outputShape.at(2); - const int outChannel = outputShape.at(3); - const int inputHeight = inputShape.at(1); - const int inputWidth = inputShape.at(2); - const int inputChannels = inputShape.at(3); - const int inputChannelBlocks = UP_DIV(inputChannels, 4); - std::string info = std::to_string(inputChannels) + "_" + std::to_string(mResource->mKernelHeight) + "_" + std::to_string(mResource->mKernelWidth) + "_" + std::to_string(mResource->mStrides[0]) + "_" + std::to_string(mResource->mStrides[1]) + "_" + std::to_string(mResource->mDilations[0]) + "_" + std::to_string(mResource->mDilations[1]); - // {"conv_2d_1x1_c4h1w4", "conv_2d_1x1_c4h1w2", "conv_2d_1x1_c4h1w1", "conv_2d_1x1_c8h1w4"}; - const int total_kernel = 5; - std::string kernelName[total_kernel] = {"conv_2d_1x1_c4h1w4", "conv_2d_1x1_c4h1w2", "conv_2d_1x1_c4h1w1", "conv_2d_1x1_c8h1w4", "conv_2d_1x1_c8h1w2"}; - int itemC[total_kernel] = {4, 4, 4, 8, 8}; - int itemW[total_kernel] = {4, 2, 1, 4, 2}; - int actual_kernel = total_kernel; - if(mOpenCLBackend->getOpenCLRuntime()->getCLTuneLevel() == Normal) { - actual_kernel = 2; - kernelName[0] = "conv_2d_1x1_c4h1w1"; - itemC[0] = 4; - itemW[0] = 1; - kernelName[1] = "conv_2d_1x1_c8h1w2"; - itemC[1] = 8; - itemW[1] = 2; - } else if(mOpenCLBackend->getOpenCLRuntime()->getCLTuneLevel() == Fast || mOpenCLBackend->getOpenCLRuntime()->getCLTuneLevel() == None) { - actual_kernel = 1; - kernelName[0] = "conv_2d_1x1_c4h1w1"; - itemC[0] = 4; - itemW[0] = 1; - } - - cl::Kernel kernel[total_kernel]; - std::vector globalWorkSize[total_kernel]; - std::vector localWorkSize[total_kernel]; - std::pair min_cost(INT_MAX, 0);//(min_time, min_index) - for(int knl_idx = 0; knl_idx < actual_kernel; knl_idx++) { - std::set buildOption = mResource->buildOptions; - if(outputShape.at(3) % itemC[knl_idx] != 0){ - buildOption.emplace("-DCHANNEL_LEAVE"); - } - if((outputShape.at(2) % itemW[knl_idx]) != 0){ - buildOption.emplace("-DBLOCK_LEAVE"); - } - kernel[knl_idx] = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d_buf", kernelName[knl_idx], buildOption); - uint32_t maxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(kernel[knl_idx])); - - uint32_t idx = 0; - cl_int ret = CL_SUCCESS; - globalWorkSize[knl_idx] = {static_cast(UP_DIV(outputShape.at(3), itemC[knl_idx]) * UP_DIV(outputShape.at(2), itemW[knl_idx])), static_cast(outputShape.at(0) * outputShape.at(1))}; - - ret |= kernel[knl_idx].setArg(idx++, globalWorkSize[knl_idx][0]); - ret |= kernel[knl_idx].setArg(idx++, globalWorkSize[knl_idx][1]); - ret |= kernel[knl_idx].setArg(idx++, UP_DIV(width, itemW[knl_idx])); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(input)); - ret |= kernel[knl_idx].setArg(idx++, *mResource->kernelBuffer.get()); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(mResource->dequantScale.get())); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(mResource->dequantOffset.get())); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(mResource->bias.get())); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(output)); - ret |= kernel[knl_idx].setArg(idx++, static_cast(inputChannelBlocks)); - ret |= kernel[knl_idx].setArg(idx++, height); - ret |= kernel[knl_idx].setArg(idx++, width); - ret |= kernel[knl_idx].setArg(idx++, UP_DIV(outChannel, 4)); - MNN_CHECK_CL_SUCCESS(ret, "setArg Conv1x1BufLowMemory Kernel Select"); - std::pair, int> retTune; - retTune = gws2dLwsTune(kernel[knl_idx], globalWorkSize[knl_idx], kernelName[knl_idx], maxWorkGroupSize); - //printf("cov1x1 %d, %d\n", knl_idx, retTune.second); - if(min_cost.first > retTune.second) { - min_cost.first = retTune.second; - min_cost.second = knl_idx; - mLocalWorkSize = {retTune.first[0], retTune.first[1]}; - } - } - - std::shared_ptr quanCommon; - int min_index = min_cost.second; - mGlobalWorkSize = {globalWorkSize[min_index][0], globalWorkSize[min_index][1]}; - std::set buildOption = mResource->buildOptions; - if(outputShape.at(3) % itemC[min_index] != 0){ - buildOption.emplace("-DCHANNEL_LEAVE"); - } - if((outputShape.at(2) % itemW[min_index]) != 0){ - buildOption.emplace("-DBLOCK_LEAVE"); - } - mKernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d_buf", kernelName[min_index], buildOption); - // MNN_PRINT("Kernel is %d.\n", min_index); - uint32_t idx = 0; - cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, UP_DIV(width, itemW[min_index])); - ret |= mKernel.setArg(idx++, openCLBuffer(input)); - ret |= mKernel.setArg(idx++, *mResource->kernelBuffer.get()); - ret |= mKernel.setArg(idx++, openCLBuffer(mResource->dequantScale.get())); - ret |= mKernel.setArg(idx++, openCLBuffer(mResource->dequantOffset.get())); - ret |= mKernel.setArg(idx++, openCLBuffer(mResource->bias.get())); - ret |= mKernel.setArg(idx++, openCLBuffer(output)); - ret |= mKernel.setArg(idx++, static_cast(inputChannelBlocks)); - ret |= mKernel.setArg(idx++, height); - ret |= mKernel.setArg(idx++, width); - ret |= mKernel.setArg(idx++, UP_DIV(outChannel, 4)); - MNN_CHECK_CL_SUCCESS(ret, "setArg Conv1x1BufLowMemory"); - mOpenCLBackend->recordKernel2d(mKernel, mGlobalWorkSize, mLocalWorkSize); - mOpenCLBackend->endRecord(mRecording); - return; -} // select the fastest kernel for the general cases by tuning void ConvBufLowMemoryExecution::tuneGeneralCaseLowMemory(Tensor * input, Tensor * output) { + auto &unit = mUnits[0]; std::vector inputShape = tensorShapeFormat(input); std::vector outputShape = tensorShapeFormat(output); - auto runTime = ((OpenCLBackend *)backend())->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); const int height = outputShape.at(1); const int width = outputShape.at(2); const int outChannel = outputShape.at(3); @@ -340,7 +210,7 @@ void ConvBufLowMemoryExecution::tuneGeneralCaseLowMemory(Tensor * input, Tensor const int inputWidth = inputShape.at(2); const int inputChannels = inputShape.at(3); const int inputChannelBlocks = UP_DIV(inputChannels, 4); - std::string info = std::to_string(inputChannels) + "_" + std::to_string(mResource->mKernelHeight) + "_" + std::to_string(mResource->mKernelWidth) + "_" + std::to_string(mResource->mStrides[0]) + "_" + std::to_string(mResource->mStrides[1]) + "_" + std::to_string(mResource->mDilations[0]) + "_" + std::to_string(mResource->mDilations[1]); + std::string info = std::to_string(inputChannels) + "_" + std::to_string(outChannel) + "_" + std::to_string(mResource->mKernelHeight) + "_" + std::to_string(mResource->mKernelWidth) + "_" + std::to_string(mResource->mStrides[0]) + "_" + std::to_string(mResource->mStrides[1]) + "_" + std::to_string(mResource->mDilations[0]) + "_" + std::to_string(mResource->mDilations[1]); int inputImageShape[2] = {inputHeight, inputWidth}; int outputImageShape[2] = {height, width}; int kernelShape[2] = {mResource->mKernelHeight, mResource->mKernelWidth}; @@ -349,49 +219,49 @@ void ConvBufLowMemoryExecution::tuneGeneralCaseLowMemory(Tensor * input, Tensor int dilationShape[2] = {mResource->mDilations[0], mResource->mDilations[1]}; // {"conv_2d_c4h1w2", "conv_2d_c4h1w1", "conv_2d_c8h1w1", "conv_2d_c4h1w4", "conv_2d_c8h2w1", "conv_2d_c4h4w1"}; const int total_kernel = 7; - std::string kernelName[total_kernel] = {"conv_2d_c4h1w1", "conv_2d_c4h1w2", "conv_2d_c4h4w1", "conv_2d_c8h2w1", "conv_2d_c8h4w1", "conv_2d_c4h1w4", "conv_2d_c8h1w4"}; + std::string kernelName[total_kernel] = {"conv_2d_int_c4h1w1", "conv_2d_int_c4h1w2", "conv_2d_int_c4h4w1", "conv_2d_int_c8h2w1", "conv_2d_int_c8h4w1", "conv_2d_int_c4h1w4", "conv_2d_int_c8h1w4"}; int itemC[total_kernel] = {4, 4, 4, 8, 8, 4, 8}; int itemH[total_kernel] = {1, 1, 4, 2, 4, 1, 1}; int itemW[total_kernel] = {1, 2, 1, 1, 1, 4, 4}; int actual_kernel = total_kernel; - cl::Kernel kernel[total_kernel]; + std::shared_ptr kernel[total_kernel]; std::vector globalWorkSize[total_kernel]; std::vector localWorkSize[total_kernel]; std::pair min_cost(INT_MAX, 0);//(min_time, min_index) // MNN_PRINT("Checking kernel %d.\n", knlCheck); for (int knl_idx = 0; knl_idx < actual_kernel; knl_idx++) { - std::set buildOption = mResource->buildOptions; + std::set buildOption = mResource->mBuildOptions; if(outputShape.at(3) % itemC[knl_idx] != 0){ buildOption.emplace("-DCHANNEL_LEAVE"); } if((outputShape.at(2) % itemW[knl_idx]) != 0 || (outputShape.at(1) % itemH[knl_idx]) != 0){ buildOption.emplace("-DBLOCK_LEAVE"); } - kernel[knl_idx] = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d_buf", kernelName[knl_idx], buildOption); + kernel[knl_idx] = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d_int_buf", kernelName[knl_idx], buildOption); uint32_t maxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(kernel[knl_idx])); globalWorkSize[knl_idx] = {static_cast(UP_DIV(outputShape.at(3), itemC[knl_idx]) * UP_DIV(outputShape.at(2), itemW[knl_idx])), static_cast(outputShape.at(0) * UP_DIV(outputShape.at(1), itemH[knl_idx]))}; uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= kernel[knl_idx].setArg(idx++, globalWorkSize[knl_idx][0]); - ret |= kernel[knl_idx].setArg(idx++, globalWorkSize[knl_idx][1]); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(input)); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(mResource->filter.get())); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(mResource->dequantScale.get())); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(mResource->dequantOffset.get())); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(mResource->bias.get())); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(output)); - ret |= kernel[knl_idx].setArg(idx++, sizeof(inputImageShape), inputImageShape); - ret |= kernel[knl_idx].setArg(idx++, inputChannels); - ret |= kernel[knl_idx].setArg(idx++, inputChannelBlocks); - ret |= kernel[knl_idx].setArg(idx++, sizeof(outputImageShape), outputImageShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(kernelShape), kernelShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(strideShape), strideShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(paddingShape), paddingShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(dilationShape), dilationShape); - ret |= kernel[knl_idx].setArg(idx++, UP_DIV(width, itemW[knl_idx])); - ret |= kernel[knl_idx].setArg(idx++, UP_DIV(outChannel, 4)); - ret |= kernel[knl_idx].setArg(idx++, UP_DIV(height, itemH[knl_idx])); + ret |= kernel[knl_idx]->get().setArg(idx++, globalWorkSize[knl_idx][0]); + ret |= kernel[knl_idx]->get().setArg(idx++, globalWorkSize[knl_idx][1]); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(input)); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(mResource->mFilter.get())); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(mResource->dequantScale.get())); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(mResource->dequantOffset.get())); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(mResource->mBias.get())); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(output)); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(inputImageShape), inputImageShape); + ret |= kernel[knl_idx]->get().setArg(idx++, inputChannels); + ret |= kernel[knl_idx]->get().setArg(idx++, inputChannelBlocks); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(outputImageShape), outputImageShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(kernelShape), kernelShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(strideShape), strideShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(paddingShape), paddingShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(dilationShape), dilationShape); + ret |= kernel[knl_idx]->get().setArg(idx++, UP_DIV(width, itemW[knl_idx])); + ret |= kernel[knl_idx]->get().setArg(idx++, UP_DIV(outChannel, 4)); + ret |= kernel[knl_idx]->get().setArg(idx++, UP_DIV(height, itemH[knl_idx])); MNN_CHECK_CL_SUCCESS(ret, "setArg ConvBufLowMemory Kernel Select"); std::pair, int> retTune; retTune = gws2dLwsTune(kernel[knl_idx], globalWorkSize[knl_idx], kernelName[knl_idx] + info, maxWorkGroupSize); @@ -404,93 +274,139 @@ void ConvBufLowMemoryExecution::tuneGeneralCaseLowMemory(Tensor * input, Tensor int min_index = min_cost.second; mGlobalWorkSize = {globalWorkSize[min_index][0], globalWorkSize[min_index][1]}; - std::set buildOption = mResource->buildOptions; + std::set buildOption = mResource->mBuildOptions; if(outputShape.at(3) % itemC[min_index] != 0){ buildOption.emplace("-DCHANNEL_LEAVE"); } if((outputShape.at(2) % itemW[min_index]) != 0 || (outputShape.at(1) % itemH[min_index]) != 0){ buildOption.emplace("-DBLOCK_LEAVE"); } - mKernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d_buf", kernelName[min_index], buildOption); + unit.kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d_int_buf", kernelName[min_index], buildOption); uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, openCLBuffer(input)); - ret |= mKernel.setArg(idx++, openCLBuffer(mResource->filter.get())); - ret |= mKernel.setArg(idx++, openCLBuffer(mResource->dequantScale.get())); - ret |= mKernel.setArg(idx++, openCLBuffer(mResource->dequantOffset.get())); - ret |= mKernel.setArg(idx++, openCLBuffer(mResource->bias.get())); - ret |= mKernel.setArg(idx++, openCLBuffer(output)); - ret |= mKernel.setArg(idx++, sizeof(inputImageShape), inputImageShape); - ret |= mKernel.setArg(idx++, inputChannels); - ret |= mKernel.setArg(idx++, inputChannelBlocks); - ret |= mKernel.setArg(idx++, sizeof(outputImageShape), outputImageShape); - ret |= mKernel.setArg(idx++, sizeof(kernelShape), kernelShape); - ret |= mKernel.setArg(idx++, sizeof(strideShape), strideShape); - ret |= mKernel.setArg(idx++, sizeof(paddingShape), paddingShape); - ret |= mKernel.setArg(idx++, sizeof(dilationShape), dilationShape); - ret |= mKernel.setArg(idx++, UP_DIV(width, itemW[min_index])); - ret |= mKernel.setArg(idx++, UP_DIV(outChannel, 4)); - ret |= mKernel.setArg(idx++, UP_DIV(height, itemH[min_index])); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(input)); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(mResource->mFilter.get())); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(mResource->dequantScale.get())); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(mResource->dequantOffset.get())); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(mResource->mBias.get())); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(idx++, sizeof(inputImageShape), inputImageShape); + ret |= unit.kernel->get().setArg(idx++, inputChannels); + ret |= unit.kernel->get().setArg(idx++, inputChannelBlocks); + ret |= unit.kernel->get().setArg(idx++, sizeof(outputImageShape), outputImageShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(kernelShape), kernelShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(strideShape), strideShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(paddingShape), paddingShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(dilationShape), dilationShape); + ret |= unit.kernel->get().setArg(idx++, UP_DIV(width, itemW[min_index])); + ret |= unit.kernel->get().setArg(idx++, UP_DIV(outChannel, 4)); + ret |= unit.kernel->get().setArg(idx++, UP_DIV(height, itemH[min_index])); MNN_CHECK_CL_SUCCESS(ret, "setArg ConvBufLowMemory"); - mOpenCLBackend->recordKernel2d(mKernel, mGlobalWorkSize, mLocalWorkSize); - mOpenCLBackend->endRecord(mRecording); + mOpenCLBackend->recordKernel2d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1]}; return; } void ConvBufLowMemoryExecution::tuneGemmLowMemory(Tensor * input, Tensor * output) { + auto &unit = mUnits[0]; std::vector inputShape = tensorShapeFormat(input); std::vector outputShape = tensorShapeFormat(output); - auto runTime = ((OpenCLBackend *)backend())->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); const int outChannel = outputShape.at(3); const int inputChannels = inputShape.at(3); const int batch = outputShape.at(0); + const int height = outputShape.at(1); + const int width = outputShape.at(2); const int inputChannelBlocks = UP_DIV(inputChannels, 4); const int outputChannelBlocks = UP_DIV(outChannel, 4); std::string kernelname = "gemm_conv_buf"; int global_x = outputChannelBlocks; - int global_y = batch; - if(batch > 1){ - kernelname = "gemm_conv_b2_buf"; - global_y = UP_DIV(batch, 2); + int global_y = batch * height; + + const int total_kernel = 3; + std::string kernelName[total_kernel] = {"gemm_conv_c1_buf", "gemm_conv_c2_buf", "gemm_conv_c4_buf",}; + int itemC[total_kernel] = {1, 2, 4}; + int actual_kernel = total_kernel; + std::shared_ptr kernel[total_kernel]; + std::vector globalWorkSize[total_kernel]; + std::vector localWorkSize[total_kernel]; + std::pair min_cost(INT_MAX, 0);//(min_time, min_index) + std::set buildOption = mResource->mBuildOptions; + if(width == 1 && height == 1){ + buildOption.emplace("-DWIDTH_HEIGHT_1"); + } + if(inputChannels % 16 != 0){ + buildOption.emplace("-DINPUT_CHANNEL_LEAVE"); + } + std::string info = std::to_string(inputChannels) + "_" + std::to_string(outChannel); + for (int knl_idx = 0; knl_idx < actual_kernel; knl_idx++) { + kernel[knl_idx] = mOpenCLBackend->getOpenCLRuntime()->buildKernel("gemm_buf", kernelName[knl_idx], buildOption); + uint32_t maxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(kernel[knl_idx])); + + globalWorkSize[knl_idx] = {static_cast(UP_DIV(outChannel, itemC[knl_idx]) * width), static_cast(global_y)}; + uint32_t idx = 0; + cl_int ret = CL_SUCCESS; + ret |= kernel[knl_idx]->get().setArg(idx++, globalWorkSize[knl_idx][0]); + ret |= kernel[knl_idx]->get().setArg(idx++, globalWorkSize[knl_idx][1]); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(input)); + ret |= kernel[knl_idx]->get().setArg(idx++, *mResource->mKernelBuffer.get()); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(mResource->dequantScale.get())); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(mResource->dequantOffset.get())); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(mResource->mBias.get())); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(output)); + ret |= kernel[knl_idx]->get().setArg(idx++, static_cast(outputChannelBlocks)); + ret |= kernel[knl_idx]->get().setArg(idx++, static_cast(inputChannelBlocks)); + ret |= kernel[knl_idx]->get().setArg(idx++, static_cast(batch)); + ret |= kernel[knl_idx]->get().setArg(idx++, static_cast(height)); + ret |= kernel[knl_idx]->get().setArg(idx++, static_cast(width)); + MNN_CHECK_CL_SUCCESS(ret, "setArg gemm_conv_buf Kernel Select"); + std::pair, int> retTune; + retTune = gws2dLwsTune(kernel[knl_idx], globalWorkSize[knl_idx], kernelName[knl_idx] + info, maxWorkGroupSize); + if(min_cost.first > retTune.second) { + min_cost.first = retTune.second; + min_cost.second = knl_idx; + mLocalWorkSize = {retTune.first[0], retTune.first[1]}; + } } - mKernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("gemm_buf", kernelname, mResource->buildOptions); - uint32_t maxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(mKernel)); - mGlobalWorkSize = {static_cast(global_x), static_cast(global_y)}; - // MNN_PRINT("Kernel is %d.\n", min_index); + int min_index = min_cost.second; + mGlobalWorkSize = {globalWorkSize[min_index][0], globalWorkSize[min_index][1]}; + + + unit.kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("gemm_buf", kernelName[min_index], buildOption); + //MNN_PRINT("Kernel is %d.\n", min_index); uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, openCLBuffer(input)); - ret |= mKernel.setArg(idx++, *mResource->kernelBuffer.get()); - ret |= mKernel.setArg(idx++, openCLBuffer(mResource->dequantScale.get())); - ret |= mKernel.setArg(idx++, openCLBuffer(mResource->dequantOffset.get())); - ret |= mKernel.setArg(idx++, openCLBuffer(mResource->bias.get())); - ret |= mKernel.setArg(idx++, openCLBuffer(output)); - ret |= mKernel.setArg(idx++, static_cast(outputChannelBlocks)); - ret |= mKernel.setArg(idx++, static_cast(inputChannelBlocks)); - ret |= mKernel.setArg(idx++, static_cast(batch)); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(input)); + ret |= unit.kernel->get().setArg(idx++, *mResource->mKernelBuffer.get()); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(mResource->dequantScale.get())); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(mResource->dequantOffset.get())); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(mResource->mBias.get())); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputChannelBlocks)); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputChannelBlocks)); + ret |= unit.kernel->get().setArg(idx++, static_cast(batch)); + ret |= unit.kernel->get().setArg(idx++, static_cast(height)); + ret |= unit.kernel->get().setArg(idx++, static_cast(width)); MNN_CHECK_CL_SUCCESS(ret, "setArg gemm_conv_buf"); - - mLocalWorkSize = gws2dLwsTune(mKernel, mGlobalWorkSize, kernelname, maxWorkGroupSize).first; - mOpenCLBackend->recordKernel2d(mKernel, mGlobalWorkSize, mLocalWorkSize); - mOpenCLBackend->endRecord(mRecording); + mOpenCLBackend->recordKernel2d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1]}; return; } ConvBufLowMemoryExecution::ConvBufLowMemoryExecution(const std::vector &inputs, const std::vector &outputs, const MNN::Op *op, Backend *backend) - : ConvBufCommonExecution(backend) { + : ConvBufCommonExecution(op->main_as_Convolution2D(), backend), CommonExecution(backend, op) { #ifdef LOG_VERBOSE MNN_PRINT("Start ConvBufLowMemoryExecution init !\n"); #endif - mResource.reset(new ConvBufResource); mOpenCLBackend = static_cast(backend); const auto *conv2dParams = op->main_as_Convolution2D(); const auto *conv2dCommonParams = conv2dParams->common(); - mConv2dParams = conv2dParams; - mResource->conv2dCommonParams = conv2dCommonParams; + mResource->mConv2dParams = conv2dParams; + mResource->mConv2dCommonParams = conv2dCommonParams; mResource->mStrides = {conv2dCommonParams->strideY(), conv2dCommonParams->strideX()}; mResource->mDilations = {conv2dCommonParams->dilateY(), conv2dCommonParams->dilateX()}; auto padding = ConvolutionCommon::convolutionPad(inputs[0], outputs[0], conv2dCommonParams); @@ -499,52 +415,45 @@ ConvBufLowMemoryExecution::ConvBufLowMemoryExecution(const std::vector mResource->mKernelWidth = conv2dCommonParams->kernelX(); mResource->mKernelHeight = conv2dCommonParams->kernelY(); - mOutputChannel = conv2dCommonParams->outputCount(); - std::string kernelName = "conv_2d_c4h1w4"; - mInputChannel = conv2dCommonParams->inputCount(); + mResource->mOutputChannel = conv2dCommonParams->outputCount(); + mResource->mInputChannel = conv2dCommonParams->inputCount(); std::shared_ptr quanCommon; // set mDequantScale, mDequantOffset, mFilterDataPtr // prepare mDequantScale mDequantOffset mFilterDataPtr getInfoFromOpLowMemory(quanCommon); //select opt conv method - //std::vector inputShape = tensorShapeFormat(inputs[0]); - //const int inputChannels = inputShape.at(3); - //const int batch = inputShape.at(0); - //printf("mConv1x1Opt = %d mKernelHeight = %d mKernelWidth = %d mPaddings[0] = %d mPaddings[1] = %d mStrides[0] = %d mStrides[1] = %d inputs[0]->width() = %d inputs[0]->height() = %d mOutputChannel = %d inputChannels = %d batch = %d\n", mConv1x1Opt, mKernelHeight, mKernelWidth, - //mPaddings[0], mPaddings[1], mStrides[0], mStrides[1], inputs[0]->width(), inputs[0]->height(), mOutputChannel, inputChannels, batch); if (mResource->mKernelHeight == mResource->mKernelWidth && mResource->mKernelHeight == 1 && mResource->mStrides[0] == 1 && mResource->mStrides[1] == 1) { - set1x1WeightLowMemory(4, 4, mFilterDataPtr, quanCommon); + set1x1WeightLowMemory(4, 16, mFilterDataPtr, quanCommon); + mResource->mConv1x1Opt = true; }else { // set mFilter for not 1x1 case setGeneralWeightLowMemory(mFilterDataPtr, quanCommon); } // Create Kernel if (conv2dCommonParams->relu()) { - mResource->buildOptions.emplace("-DRELU"); + mResource->mBuildOptions.emplace("-DRELU"); } else if (conv2dCommonParams->relu6()) { - mResource->buildOptions.emplace("-DRELU6"); + mResource->mBuildOptions.emplace("-DRELU6"); } if (mNumQuantBit == 8) { // int8 case - mResource->buildOptions.emplace("-DUSE_LOW_BIT_WEIGHT_INT8"); + mResource->mBuildOptions.emplace("-DUSE_LOW_BIT_WEIGHT_INT8"); } else if (mNumQuantBit == 4){ // int4 case - mResource->buildOptions.emplace("-DUSE_LOW_BIT_WEIGHT_INT4"); + mResource->mBuildOptions.emplace("-DUSE_LOW_BIT_WEIGHT_INT4"); } else {/* More types to be supported. */} - mKernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d_buf", kernelName, mResource->buildOptions); - mMaxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(mKernel)); #ifdef LOG_VERBOSE MNN_PRINT("end ConvExecution init !\n"); #endif } -ConvBufLowMemoryExecution::ConvBufLowMemoryExecution(std::shared_ptr resource, const Op* op, Backend *backend) - : ConvBufCommonExecution(backend) { +ConvBufLowMemoryExecution::ConvBufLowMemoryExecution(std::shared_ptr resource, const MNN::Op* op, Backend *backend) + : ConvBufCommonExecution(backend), CommonExecution(backend, op) { mResource = resource; const auto *conv2dParams = op->main_as_Convolution2D(); const auto *conv2dCommonParams = conv2dParams->common(); - mConv2dParams = conv2dParams; - mResource->conv2dCommonParams = conv2dCommonParams; + mResource->mConv2dParams = conv2dParams; + mResource->mConv2dCommonParams = conv2dCommonParams; } ConvBufLowMemoryExecution::~ConvBufLowMemoryExecution() { @@ -562,21 +471,18 @@ bool ConvBufLowMemoryExecution::onClone(Backend* bn, const Op* op, Execution** d return true; } -ErrorCode ConvBufLowMemoryExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode ConvBufLowMemoryExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { #ifdef LOG_VERBOSE MNN_PRINT("Start ConvExecution onResize !\n"); #endif + mUnits.resize(1); auto input = inputs[0]; auto output = outputs[0]; - auto padding = ConvolutionCommon::convolutionPad(input, output, mResource->conv2dCommonParams); + auto padding = ConvolutionCommon::convolutionPad(input, output, mResource->mConv2dCommonParams); mPaddings[0] = padding.second;//padY mPaddings[1] = padding.first;//padX // onclone default use conv1x1Opt, need reset - mResource->gemmOpt = (mResource->mKernelHeight == mResource->mKernelWidth && mResource->mKernelHeight == 1 && mPaddings[0] == 0 && mPaddings[1] == 0 && mResource->mStrides[0] == 1 && mResource->mStrides[1] == 1 && inputs[0]->width() == 1 && inputs[0]->height() == 1); - mResource->conv1x1Opt = (mResource->mKernelHeight == mResource->mKernelWidth && mResource->mKernelHeight == 1 && mPaddings[0] == 0 && mPaddings[1] == 0 && mResource->mStrides[0] == 1 && mResource->mStrides[1] == 1 && inputs[0]->width() >= 4); - if (mResource->conv1x1Opt) { - tune1x1CaseLowMemory(input, output); - } else if(mResource->gemmOpt){ + if (mResource->mConv1x1Opt) { tuneGemmLowMemory(input, output); } else { tuneGeneralCaseLowMemory(input, output); @@ -586,35 +492,6 @@ ErrorCode ConvBufLowMemoryExecution::onResize(const std::vector &input #endif return NO_ERROR; } -ErrorCode ConvBufLowMemoryExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("Start ConvExecution onExecute !\n"); -#endif -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - runKernel2D(mKernel, mGlobalWorkSize, mLocalWorkSize, mOpenCLBackend->getOpenCLRuntime(), &event); - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"ConvBuf2D", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End ConvExecution onExecute... \n"); -#endif - return NO_ERROR; - } - // gemm/gemv: - // input : (batch, ic/4, 4) - // weight: (ic/4, oc, 4) - // output: (batch, oc, 4) - runKernel2D(mKernel, mGlobalWorkSize, mLocalWorkSize, mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end ConvExecution onExecute !\n"); -#endif - return NO_ERROR; -} } // namespace OpenCL } // namespace MNN #endif /* MNN_OPENCL_BUFFER_CLOSED */ diff --git a/source/backend/opencl/execution/buffer/ConvBufLowMemoryExecution.hpp b/source/backend/opencl/execution/buffer/ConvBufLowMemoryExecution.hpp index 17fe1ae7d..8a99c7afc 100644 --- a/source/backend/opencl/execution/buffer/ConvBufLowMemoryExecution.hpp +++ b/source/backend/opencl/execution/buffer/ConvBufLowMemoryExecution.hpp @@ -16,46 +16,22 @@ namespace MNN { namespace OpenCL { -struct ConvBufResource { - const Convolution2DCommon *conv2dCommonParams; - std::shared_ptr kernelBuffer; - std::shared_ptr filter; - std::shared_ptr dequantScale; - std::shared_ptr dequantOffset; - std::shared_ptr bias; - int mKernelWidth; - int mKernelHeight; - std::vector mStrides{1, 1}; - std::vector mDilations{1, 1}; - std::set buildOptions; - bool conv1x1Opt = false; - bool gemmOpt = false; -}; - -class ConvBufLowMemoryExecution : public ConvBufCommonExecution { +class ConvBufLowMemoryExecution : public ConvBufCommonExecution, public CommonExecution { public: ConvBufLowMemoryExecution(const std::vector &inputs, const std::vector &outputs, const MNN::Op *op, Backend *backend); - ConvBufLowMemoryExecution(std::shared_ptr resource, const Op* op, Backend* b); + ConvBufLowMemoryExecution(std::shared_ptr resource, const MNN::Op* op, Backend* backend); virtual ~ConvBufLowMemoryExecution(); - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; virtual bool onClone(Backend* bn, const Op* op, Execution** dst) override; private: void getInfoFromOpLowMemory(std::shared_ptr & quanCommon); void set1x1WeightLowMemory(int packCout, int packCin, void * filterDataPtr, std::shared_ptr & quanCommon); void setGeneralWeightLowMemory(void * filterDataPtr, std::shared_ptr & quanCommon); - void tune1x1CaseLowMemory(Tensor * input, Tensor * output); void tuneGeneralCaseLowMemory(Tensor * input, Tensor * output); void tuneGemmLowMemory(Tensor * input, Tensor * output); - std::shared_ptr mResource; - const Convolution2D *mConv2dParams; std::vector mPaddings{0, 0}; std::vector mGlobalWorkSize{1, 1, 1}; std::vector mLocalWorkSize{1, 1, 1, 1}; - cl::Kernel mKernel; - uint32_t mMaxWorkGroupSize; - int mOutputChannel; - int mInputChannel; void *mFilterDataPtr = nullptr; bool mLowMemoryFlag = false; int mNumQuantBit = 0; diff --git a/source/backend/opencl/execution/buffer/ConvBufWinograd.cpp b/source/backend/opencl/execution/buffer/ConvBufWinograd.cpp index 49e462eac..8deb3dd50 100644 --- a/source/backend/opencl/execution/buffer/ConvBufWinograd.cpp +++ b/source/backend/opencl/execution/buffer/ConvBufWinograd.cpp @@ -9,10 +9,8 @@ #ifndef MNN_OPENCL_BUFFER_CLOSED #include "backend/opencl/execution/buffer/ConvBufWinograd.hpp" -#include "core/Backend.hpp" #include "core/ConvolutionCommon.hpp" #include "math/WingoradGenerater.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" #define UNIT 2 #define INTERP 1 @@ -41,23 +39,25 @@ bool ConvBufWinograd::valid(const Convolution2DCommon* common, const Tensor* inp return (input->width() <= 32 && input->height() <= 32); } -ConvBufWinograd::ConvBufWinograd(const MNN::Convolution2D* op, Backend* backend) : Execution(backend) { +ConvBufWinograd::ConvBufWinograd(const MNN::Op* op, Backend* backend) : CommonExecution(backend, op) { + mResource.reset(new ConvBufWinoResource); mOpenCLBackend = static_cast(backend); - mCommon = op->common(); - MNN_ASSERT((3 == mCommon->kernelY() && 3 == mCommon->kernelX())); - MNN_ASSERT(1 == mCommon->strideX() && 1 == mCommon->strideY()); - MNN_ASSERT(1 == mCommon->dilateX() && 1 == mCommon->dilateY()); + auto conv2D = op->main_as_Convolution2D(); + mResource->mCommon = conv2D->common(); + MNN_ASSERT((3 == mResource->mCommon->kernelY() && 3 == mResource->mCommon->kernelX())); + MNN_ASSERT(1 == mResource->mCommon->strideX() && 1 == mResource->mCommon->strideY()); + MNN_ASSERT(1 == mResource->mCommon->dilateX() && 1 == mResource->mCommon->dilateY()); auto runTime = mOpenCLBackend->getOpenCLRuntime(); - int ky = mCommon->kernelY(); - int kx = mCommon->kernelX(); + int ky = mResource->mCommon->kernelY(); + int kx = mResource->mCommon->kernelX(); int weightSize = 0; const float* filterDataPtr = nullptr; std::shared_ptr quanCommon; - ConvolutionCommon::getConvParameters(&quanCommon, backend, op, &filterDataPtr, &weightSize); + ConvolutionCommon::getConvParameters(&quanCommon, backend, conv2D, &filterDataPtr, &weightSize); - int oc = mCommon->outputCount(); - int ic = weightSize / oc / mCommon->kernelX() / mCommon->kernelY(); + int oc = mResource->mCommon->outputCount(); + int ic = weightSize / oc / mResource->mCommon->kernelX() / mResource->mCommon->kernelY(); auto ocC4 = UP_DIV(oc, 4); auto icC4 = UP_DIV(ic, 4); auto queue = runTime->commandQueue(); @@ -68,8 +68,8 @@ ConvBufWinograd::ConvBufWinograd(const MNN::Convolution2D* op, Backend* backend) } // Create Buffer Object #ifdef MNN_SUPPORT_INTEL_SUBGROUP - mUseSubgroup = runTime->isSupportedIntelSubgroup(); - if (mUseSubgroup) { + mResource->mUseSubgroup = runTime->isSupportedIntelSubgroup(); + if (mResource->mUseSubgroup) { // create buffer for intel subgroup cl_int ret_code; size_t bias_element = ALIGN_UP4(oc); @@ -80,9 +80,9 @@ ConvBufWinograd::ConvBufWinograd(const MNN::Convolution2D* op, Backend* backend) buffer_size = bias_element * sizeof(float); } - mBias.reset(Tensor::createDevice({1, 1, 1, (int)ALIGN_UP4(oc)})); - mOpenCLBackend->onAcquireBuffer(mBias.get(), Backend::STATIC); - cl::Buffer &bias_buffer = *(cl::Buffer *)mBias->buffer().device; + mResource->mBias.reset(Tensor::createDevice({1, 1, 1, (int)ALIGN_UP4(oc)})); + mOpenCLBackend->onAcquireBuffer(mResource->mBias.get(), Backend::STATIC); + cl::Buffer &bias_buffer = *(cl::Buffer *)mResource->mBias->buffer().device; auto bias_ptr = queue.enqueueMapBuffer(bias_buffer, CL_TRUE, CL_MAP_WRITE, 0, buffer_size, nullptr, nullptr, &ret_code); if(bias_ptr == nullptr || ret_code) { @@ -91,10 +91,10 @@ ConvBufWinograd::ConvBufWinograd(const MNN::Convolution2D* op, Backend* backend) ::memset(bias_ptr, 0, buffer_size); if(mOpenCLBackend->getOpenCLRuntime()->isSupportedFP16()) { for(int i=0; ibias()->data()[i]; + ((half_float::half *)bias_ptr)[i] = (half_float::half)conv2D->bias()->data()[i]; } } else { - ::memcpy(bias_ptr, op->bias()->data(), oc*sizeof(float)); + ::memcpy(bias_ptr, conv2D->bias()->data(), oc*sizeof(float)); } queue.enqueueUnmapMemObject(bias_buffer, bias_ptr); @@ -119,10 +119,10 @@ ConvBufWinograd::ConvBufWinograd(const MNN::Convolution2D* op, Backend* backend) buffer_size *= sizeof(float); } - mWeight.reset(Tensor::createDevice({alpha * alpha, ocC16, icC16, 16 * 16}, Tensor::CAFFE_C4)); // NHWC - mOpenCLBackend->onAcquireBuffer(mWeight.get(), Backend::STATIC); + mResource->mWeight.reset(Tensor::createDevice({alpha * alpha, ocC16, icC16, 16 * 16}, Tensor::CAFFE_C4)); // NHWC + mOpenCLBackend->onAcquireBuffer(mResource->mWeight.get(), Backend::STATIC); - cl::Buffer& weightBuffer = *(cl::Buffer*)mWeight->buffer().device; + cl::Buffer& weightBuffer = *(cl::Buffer*)mResource->mWeight->buffer().device; auto weight_ptr = queue.enqueueMapBuffer(weightBuffer, CL_TRUE, CL_MAP_WRITE, 0, buffer_size, nullptr, nullptr, &ret_code); @@ -151,9 +151,9 @@ ConvBufWinograd::ConvBufWinograd(const MNN::Convolution2D* op, Backend* backend) buffer_size = bias_element * sizeof(float); } - mBias.reset(Tensor::createDevice({1, 1, 1, (int)ALIGN_UP4(oc)})); - mOpenCLBackend->onAcquireBuffer(mBias.get(), Backend::STATIC); - cl::Buffer &bias_buffer = *(cl::Buffer *)mBias->buffer().device; + mResource->mBias.reset(Tensor::createDevice({1, 1, 1, (int)ALIGN_UP4(oc)})); + mOpenCLBackend->onAcquireBuffer(mResource->mBias.get(), Backend::STATIC); + cl::Buffer &bias_buffer = *(cl::Buffer *)mResource->mBias->buffer().device; auto bias_ptr = queue.enqueueMapBuffer(bias_buffer, CL_TRUE, CL_MAP_WRITE, 0, buffer_size, nullptr, nullptr, &ret_code); if(bias_ptr == nullptr || ret_code) { @@ -162,10 +162,10 @@ ConvBufWinograd::ConvBufWinograd(const MNN::Convolution2D* op, Backend* backend) ::memset(bias_ptr, 0, buffer_size); if(mOpenCLBackend->getOpenCLRuntime()->isSupportedFP16()) { for(int i=0; ibias()->data()[i]; + ((half_float::half *)bias_ptr)[i] = (half_float::half)conv2D->bias()->data()[i]; } } else { - ::memcpy(bias_ptr, op->bias()->data(), oc*sizeof(float)); + ::memcpy(bias_ptr, conv2D->bias()->data(), oc*sizeof(float)); } queue.enqueueUnmapMemObject(bias_buffer, bias_ptr); @@ -188,10 +188,10 @@ ConvBufWinograd::ConvBufWinograd(const MNN::Convolution2D* op, Backend* backend) buffer_size *= sizeof(float); } - mWeight.reset(Tensor::createDevice({1, ocC4 * alpha * alpha, icC4 * 4, 4}));//NHWC - mOpenCLBackend->onAcquireBuffer(mWeight.get(), Backend::STATIC); + mResource->mWeight.reset(Tensor::createDevice({1, ocC4 * alpha * alpha, icC4 * 4, 4}));//NHWC + mOpenCLBackend->onAcquireBuffer(mResource->mWeight.get(), Backend::STATIC); - cl::Buffer &weightBuffer = *(cl::Buffer *)mWeight->buffer().device; + cl::Buffer &weightBuffer = *(cl::Buffer *)mResource->mWeight->buffer().device; auto weight_ptr = queue.enqueueMapBuffer(weightBuffer, CL_TRUE, CL_MAP_WRITE, 0, buffer_size, nullptr, nullptr, &ret_code); if(weight_ptr != nullptr && ret_code == CL_SUCCESS){ @@ -212,192 +212,229 @@ ConvBufWinograd::ConvBufWinograd(const MNN::Convolution2D* op, Backend* backend) } ConvBufWinograd::~ConvBufWinograd() { - mOpenCLBackend->onReleaseBuffer(mWeight.get(), Backend::STATIC); - mOpenCLBackend->onReleaseBuffer(mBias.get(), Backend::STATIC); + // Do nothing } -ErrorCode ConvBufWinograd::onResize(const std::vector& inputs, const std::vector& outputs) { +ConvBufWinograd::ConvBufWinograd(std::shared_ptr resource, const MNN::Op* op, Backend *backend) : CommonExecution(backend, op) { + mResource = resource; + mOpenCLBackend = static_cast(backend); + auto conv2D = op->main_as_Convolution2D(); + mResource->mCommon = conv2D->common(); +} + +bool ConvBufWinograd::onClone(Backend* bn, const Op* op, Execution** dst) { + if (!mValid) { + return false; + } + if (nullptr == dst) { + return true; + } + *dst = new ConvBufWinograd(mResource, op, bn); + return true; +} +#ifdef MNN_SUPPORT_INTEL_SUBGROUP +ErrorCode ConvBufWinograd::SubgroupOnResize(const std::vector &inputs, const std::vector &outputs){ auto input = inputs[0]; auto output = outputs[0]; - mKernelX = mCommon->kernelX(); - mKernelY = mCommon->kernelY(); - mStrideX = mCommon->strideX(); - mStrideY = mCommon->strideY(); - int alpha = mKernelX + UNIT - 1; auto wUnit = UP_DIV(output->width(), UNIT); auto hUnit = UP_DIV(output->height(), UNIT); - - auto pad = ConvolutionCommon::convolutionPad(input, output, mCommon); + auto pad = ConvolutionCommon::convolutionPad(input, output, mResource->mCommon); int padY = pad.second; int padX = pad.first; - + uint32_t total_num = input->batch(); auto runTime = mOpenCLBackend->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); - -#ifdef MNN_SUPPORT_INTEL_SUBGROUP - if (mUseSubgroup) { + std::string info = std::to_string(input->channel()) + "_" + std::to_string(output->channel()); + mSource.reset(Tensor::createDevice(std::vector{alpha * alpha, UP_DIV(input->channel(), 16), ROUND_UP(wUnit * hUnit, 8), 16}, Tensor::CAFFE_C4)); + mDest.reset(Tensor::createDevice(std::vector{alpha * alpha, UP_DIV(output->channel(), 16), ROUND_UP(wUnit * hUnit, 8), 16}, Tensor::CAFFE_C4)); + + mOpenCLBackend->onAcquireBuffer(mSource.get(), Backend::DYNAMIC); + mOpenCLBackend->onAcquireBuffer(mDest.get(), Backend::DYNAMIC); + mOpenCLBackend->onReleaseBuffer(mSource.get(), Backend::DYNAMIC); + mOpenCLBackend->onReleaseBuffer(mDest.get(), Backend::DYNAMIC); + + auto icC4 = UP_DIV(input->channel(), 4); + auto icC16 = UP_DIV(input->channel(), 16); + auto ocC4 = UP_DIV(output->channel(), 4); + auto ocC16 = UP_DIV(output->channel(), 16); + auto inputpad = TensorUtils::getDescribe(input)->mPads; + auto outputpad = TensorUtils::getDescribe(output)->mPads; + int in_c_pack = TensorUtils::getTensorChannelPack(input); + int out_c_pack = TensorUtils::getTensorChannelPack(output); + + std::set basic; + std::string srcTranseKernelname = "_c16_c16"; + std::string dstTranseKernelname = "_c16_c16"; + if (in_c_pack == 4) { + srcTranseKernelname = "_c4_c16"; + } + if (out_c_pack == 4) { + dstTranseKernelname = "_c16_c4"; + } + /*Create Kernel*/ + for (int i = 0; i < total_num; i++) { + char format[20]; + ::memset(format, 0, sizeof(format)); + sprintf(format, "%d_%d_%d", UNIT, mKernelX, INTERP); + auto formatStr = std::string(format); + mUnits[i * 3].kernel = runTime->buildKernel("winogradTransform_subgroup_buf", "winoTransSrcBuf" + formatStr + srcTranseKernelname, basic); + mMaxWGS_S[i] = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(mUnits[i * 3].kernel)); + { + std::set buildOptions = basic; + if (mResource->mCommon->relu()) { + buildOptions.emplace("-DRELU"); + } + if (mResource->mCommon->relu6()) { + buildOptions.emplace("-DRELU6"); + } + if (output->width() % 2 != 0) { + buildOptions.emplace("-DOUTPUT_LEFTOVERS"); + } + mUnits[i * 3 + 2].kernel = runTime->buildKernel("winogradTransform_subgroup_buf", "winoTransDstBuf" + formatStr + dstTranseKernelname, buildOptions); + mMaxWGS_D[i] = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(mUnits[i * 3 + 2].kernel)); + } + } + + for (int b = 0; b < input->batch(); ++b) { + int hCount = hUnit; + int wCount = wUnit; + int width_pack = ROUND_UP(hCount * wCount, 8); - mSource.reset(Tensor::createDevice(std::vector{alpha * alpha, UP_DIV(input->channel(), 16), ROUND_UP(wUnit * hUnit, 8), 16}, Tensor::CAFFE_C4)); - mDest.reset(Tensor::createDevice(std::vector{alpha * alpha, UP_DIV(output->channel(), 16), ROUND_UP(wUnit * hUnit, 8), 16}, Tensor::CAFFE_C4)); - - mOpenCLBackend->onAcquireBuffer(mSource.get(), Backend::DYNAMIC); - mOpenCLBackend->onAcquireBuffer(mDest.get(), Backend::DYNAMIC); - mOpenCLBackend->onReleaseBuffer(mSource.get(), Backend::DYNAMIC); - mOpenCLBackend->onReleaseBuffer(mDest.get(), Backend::DYNAMIC); - - auto icC4 = UP_DIV(input->channel(), 4); - auto icC16 = UP_DIV(input->channel(), 16); - auto ocC4 = UP_DIV(output->channel(), 4); - auto ocC16 = UP_DIV(output->channel(), 16); - auto inputpad = TensorUtils::getDescribe(input)->mPads; - auto outputpad = TensorUtils::getDescribe(output)->mPads; - int in_c_pack = TensorUtils::getTensorChannelPack(input); - int out_c_pack = TensorUtils::getTensorChannelPack(output); - - uint32_t total_num = input->batch(); - mSourceTransform.resize(total_num); - mMatMul.resize(total_num); - mDestTransform.resize(total_num); - mMaxWGS_S.resize(total_num); - mMaxWGS_D.resize(total_num); - mMaxWGS_M.resize(total_num); - - std::set basic; - std::string srcTranseKernelname = "_c16_c16"; - std::string dstTranseKernelname = "_c16_c16"; - if (in_c_pack == 4) { - srcTranseKernelname = "_c4_c16"; + // Source Transform + { + mGWS_S[b] = {static_cast(wCount * hCount), static_cast(input->channel())}; + int index = 0; + cl_int ret = CL_SUCCESS; + ret |= mUnits[b * 3].kernel->get().setArg(index++, mGWS_S[b][0]); + ret |= mUnits[b * 3].kernel->get().setArg(index++, mGWS_S[b][1]); + ret |= mUnits[b * 3].kernel->get().setArg(index++, openCLBuffer(input)); + ret |= mUnits[b * 3].kernel->get().setArg(index++, openCLBuffer(mSource.get())); + ret |= mUnits[b * 3].kernel->get().setArg(index++, wCount); + ret |= mUnits[b * 3].kernel->get().setArg(index++, hCount); + ret |= mUnits[b * 3].kernel->get().setArg(index++, padX); + ret |= mUnits[b * 3].kernel->get().setArg(index++, padY); + ret |= mUnits[b * 3].kernel->get().setArg(index++, input->width()); + ret |= mUnits[b * 3].kernel->get().setArg(index++, input->height()); + ret |= mUnits[b * 3].kernel->get().setArg(index++, icC4); + ret |= mUnits[b * 3].kernel->get().setArg(index++, icC16); + ret |= mUnits[b * 3].kernel->get().setArg(index++, width_pack); + ret |= mUnits[b * 3].kernel->get().setArg(index++, b); + ret |= mUnits[b * 3].kernel->get().setArg(index++, static_cast(inputpad.left)); + ret |= mUnits[b * 3].kernel->get().setArg(index++, static_cast(inputpad.right)); + MNN_CHECK_CL_SUCCESS(ret, "setArg ConvWinogradBuf Source Trans"); + + if (in_c_pack == 4) { + mGWS_S[b] = {static_cast(wCount * hCount), static_cast(ROUND_UP(input->channel(), 16) / 4)}; + std::string kernelName = srcTranseKernelname + "_" + std::to_string(mGWS_S[b][0]) + "_" + std::to_string(mGWS_S[b][1]); + mLWS_S[b] = localWS2DDefault(mGWS_S[b], mMaxWGS_S[b], mOpenCLBackend->getOpenCLRuntime(), kernelName + info, mUnits[b * 3].kernel).first; + } else { + mLWS_S[b] = {1, 16}; + } + mOpenCLBackend->recordKernel2d(mUnits[b * 3].kernel, mGWS_S[b], mLWS_S[b]); + mUnits[b * 3].globalWorkSize = {mGWS_S[b][0], mGWS_S[b][1]}; + mUnits[b * 3].localWorkSize = {mLWS_S[b][0], mLWS_S[b][1]}; } - if (out_c_pack == 4) { - dstTranseKernelname = "_c16_c4"; + + // MatMul + { + auto gemmHeight = ocC4; + auto gemmWidth = wCount * hCount; + + mGWS_M[b] = {static_cast(UP_DIV(gemmWidth, 8)), static_cast(ROUND_UP(output->channel(), 16)), static_cast(alpha * alpha)}; + mLWS_M[b] = {1, 16, 1}; + std::set buildOptions = basic; + mUnits[b * 3 + 1].kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("winogradTransform_subgroup_buf", "gemm_buf_intel", buildOptions); + + int index = 0; + cl_int ret = CL_SUCCESS; + ret |= mUnits[b * 3 + 1].kernel->get().setArg(index++, openCLBuffer(mSource.get())); + ret |= mUnits[b * 3 + 1].kernel->get().setArg(index++, openCLBuffer(mResource->mWeight.get())); + ret |= mUnits[b * 3 + 1].kernel->get().setArg(index++, openCLBuffer(mDest.get())); + ret |= mUnits[b * 3 + 1].kernel->get().setArg(index++, width_pack); + ret |= mUnits[b * 3 + 1].kernel->get().setArg(index++, ocC16); + ret |= mUnits[b * 3 + 1].kernel->get().setArg(index++, icC16); + ret |= mUnits[b * 3 + 1].kernel->get().setArg(index++, alpha * alpha); + MNN_CHECK_CL_SUCCESS(ret, "setArg ConvWinogradBuf MatMul"); + mOpenCLBackend->recordKernel3d(mUnits[b * 3 + 1].kernel, mGWS_M[b], mLWS_M[b]); + mUnits[b * 3 + 1].globalWorkSize = {mGWS_M[b][0], mGWS_M[b][1], mGWS_M[b][2]}; + mUnits[b * 3 + 1].localWorkSize = {mLWS_M[b][0], mLWS_M[b][1], mLWS_M[b][2]}; } - /*Create Kernel*/ - for (int i = 0; i < total_num; i++) { - char format[20]; - ::memset(format, 0, sizeof(format)); - sprintf(format, "%d_%d_%d", UNIT, mKernelX, INTERP); - auto formatStr = std::string(format); - mSourceTransform[i] = runTime->buildKernel("winogradTransform_subgroup_buf", "winoTransSrcBuf" + formatStr + srcTranseKernelname, basic); - mMaxWGS_S[i] = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(mSourceTransform[i])); - { - std::set buildOptions = basic; - if (mCommon->relu()) { - buildOptions.emplace("-DRELU"); - } - if (mCommon->relu6()) { - buildOptions.emplace("-DRELU6"); - } - if (output->width() % 2 != 0) { - buildOptions.emplace("-DOUTPUT_LEFTOVERS"); - } - mDestTransform[i] = runTime->buildKernel("winogradTransform_subgroup_buf", "winoTransDstBuf" + formatStr + dstTranseKernelname, buildOptions); - mMaxWGS_D[i] = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(mDestTransform[i])); + + // Dest Transform + { + mGWS_D[b] = {static_cast(wCount * hCount), static_cast(output->channel())}; + + int index = 0; + cl_int ret = CL_SUCCESS; + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, mGWS_D[b][0]); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, mGWS_D[b][1]); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, openCLBuffer(mDest.get())); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, openCLBuffer(mResource->mBias.get())); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, openCLBuffer(output)); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, wCount); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, hCount); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, output->width()); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, output->height()); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, ocC4); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, ocC16); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, width_pack); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, b); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, static_cast(outputpad.left)); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, static_cast(outputpad.right)); + MNN_CHECK_CL_SUCCESS(ret, "setArg ConvWinogradBuf Dest Trans"); + + if (out_c_pack == 4) { + mGWS_D[b] = {static_cast(wCount * hCount), static_cast(ocC4)}; + std::string kernelName = dstTranseKernelname + "_" + std::to_string(mGWS_D[b][0]) + "_" + std::to_string(mGWS_D[b][1]); + mLWS_D[b] = localWS2DDefault(mGWS_D[b], mMaxWGS_D[b], mOpenCLBackend->getOpenCLRuntime(), kernelName + info, mUnits[b * 3 + 2].kernel).first; + } else { + mLWS_D[b] = {1, 16}; } + mOpenCLBackend->recordKernel2d(mUnits[b * 3 + 2].kernel, mGWS_D[b], mLWS_D[b]); + mUnits[b * 3 + 2].globalWorkSize = {mGWS_D[b][0], mGWS_D[b][1]}; + mUnits[b * 3 + 2].localWorkSize = {mLWS_D[b][0], mLWS_D[b][1]}; } + } + return NO_ERROR; +} +#endif /* MNN_SUPPORT_INTEL_SUBGROUP */ - mGWS_S.resize(total_num); - mGWS_D.resize(total_num); - mGWS_M.resize(total_num); - mLWS_S.resize(total_num); - mLWS_D.resize(total_num); - mLWS_M.resize(total_num); - - for (int b = 0; b < input->batch(); ++b) { - int hCount = hUnit; - int wCount = wUnit; - int width_pack = ROUND_UP(hCount * wCount, 8); - - // Source Transform - { - mGWS_S[b] = {static_cast(wCount * hCount), static_cast(input->channel())}; - int index = 0; - cl_int ret = CL_SUCCESS; - ret |= mSourceTransform[b].setArg(index++, mGWS_S[b][0]); - ret |= mSourceTransform[b].setArg(index++, mGWS_S[b][1]); - ret |= mSourceTransform[b].setArg(index++, openCLBuffer(input)); - ret |= mSourceTransform[b].setArg(index++, openCLBuffer(mSource.get())); - ret |= mSourceTransform[b].setArg(index++, wCount); - ret |= mSourceTransform[b].setArg(index++, hCount); - ret |= mSourceTransform[b].setArg(index++, padX); - ret |= mSourceTransform[b].setArg(index++, padY); - ret |= mSourceTransform[b].setArg(index++, input->width()); - ret |= mSourceTransform[b].setArg(index++, input->height()); - ret |= mSourceTransform[b].setArg(index++, icC4); - ret |= mSourceTransform[b].setArg(index++, icC16); - ret |= mSourceTransform[b].setArg(index++, width_pack); - ret |= mSourceTransform[b].setArg(index++, b); - ret |= mSourceTransform[b].setArg(index++, static_cast(inputpad.left)); - ret |= mSourceTransform[b].setArg(index++, static_cast(inputpad.right)); - MNN_CHECK_CL_SUCCESS(ret, "setArg ConvWinogradBuf Source Trans"); - - if (in_c_pack == 4) { - mGWS_S[b] = {static_cast(wCount * hCount), static_cast(ROUND_UP(input->channel(), 16) / 4)}; - std::string kernelName = srcTranseKernelname + "_" + std::to_string(mGWS_S[b][0]) + "_" + std::to_string(mGWS_S[b][1]); - mLWS_S[b] = localWS2DDefault(mGWS_S[b], mMaxWGS_S[b], mOpenCLBackend->getOpenCLRuntime(), kernelName, mSourceTransform[b]).first; - } else { - mLWS_S[b] = {1, 16}; - } - mOpenCLBackend->recordKernel2d(mSourceTransform[b], mGWS_S[b], mLWS_S[b]); - } - - // MatMul - { - auto gemmHeight = ocC4; - auto gemmWidth = wCount * hCount; - - mGWS_M[b] = {static_cast(UP_DIV(gemmWidth, 8)), static_cast(ROUND_UP(output->channel(), 16)), static_cast(alpha * alpha)}; - mLWS_M[b] = {1, 16, 1}; - std::set buildOptions = basic; - mMatMul[b] = mOpenCLBackend->getOpenCLRuntime()->buildKernel("winogradTransform_subgroup_buf", "gemm_buf_intel", buildOptions); - - int index = 0; - cl_int ret = CL_SUCCESS; - ret |= mMatMul[b].setArg(index++, openCLBuffer(mSource.get())); - ret |= mMatMul[b].setArg(index++, openCLBuffer(mWeight.get())); - ret |= mMatMul[b].setArg(index++, openCLBuffer(mDest.get())); - ret |= mMatMul[b].setArg(index++, width_pack); - ret |= mMatMul[b].setArg(index++, ocC16); - ret |= mMatMul[b].setArg(index++, icC16); - ret |= mMatMul[b].setArg(index++, alpha * alpha); - MNN_CHECK_CL_SUCCESS(ret, "setArg ConvWinogradBuf MatMul"); - mOpenCLBackend->recordKernel2d(mMatMul[b], mGWS_M[b], mLWS_M[b]); - } - - // Dest Transform - { - mGWS_D[b] = {static_cast(wCount * hCount), static_cast(output->channel())}; +ErrorCode ConvBufWinograd::onEncode(const std::vector& inputs, const std::vector& outputs) { + auto input = inputs[0]; + auto output = outputs[0]; + mKernelX = mResource->mCommon->kernelX(); + mKernelY = mResource->mCommon->kernelY(); + mStrideX = mResource->mCommon->strideX(); + mStrideY = mResource->mCommon->strideY(); + + int alpha = mKernelX + UNIT - 1; + auto wUnit = UP_DIV(output->width(), UNIT); + auto hUnit = UP_DIV(output->height(), UNIT); + + auto pad = ConvolutionCommon::convolutionPad(input, output, mResource->mCommon); + int padY = pad.second; + int padX = pad.first; + + auto runTime = mOpenCLBackend->getOpenCLRuntime(); + std::string info = std::to_string(input->channel()) + "_" + std::to_string(output->channel()); + + uint32_t total_num = input->batch(); + mUnits.resize(total_num * 3); + mMaxWGS_S.resize(total_num); + mMaxWGS_D.resize(total_num); + mMaxWGS_M.resize(total_num); + + mGWS_S.resize(total_num); + mGWS_D.resize(total_num); + mGWS_M.resize(total_num); + mLWS_S.resize(total_num); + mLWS_D.resize(total_num); + mLWS_M.resize(total_num); - int index = 0; - cl_int ret = CL_SUCCESS; - ret |= mDestTransform[b].setArg(index++, mGWS_D[b][0]); - ret |= mDestTransform[b].setArg(index++, mGWS_D[b][1]); - ret |= mDestTransform[b].setArg(index++, openCLBuffer(mDest.get())); - ret |= mDestTransform[b].setArg(index++, openCLBuffer(mBias.get())); - ret |= mDestTransform[b].setArg(index++, openCLBuffer(output)); - ret |= mDestTransform[b].setArg(index++, wCount); - ret |= mDestTransform[b].setArg(index++, hCount); - ret |= mDestTransform[b].setArg(index++, output->width()); - ret |= mDestTransform[b].setArg(index++, output->height()); - ret |= mDestTransform[b].setArg(index++, ocC4); - ret |= mDestTransform[b].setArg(index++, ocC16); - ret |= mDestTransform[b].setArg(index++, width_pack); - ret |= mDestTransform[b].setArg(index++, b); - ret |= mDestTransform[b].setArg(index++, static_cast(outputpad.left)); - ret |= mDestTransform[b].setArg(index++, static_cast(outputpad.right)); - MNN_CHECK_CL_SUCCESS(ret, "setArg ConvWinogradBuf Dest Trans"); - - if (out_c_pack == 4) { - mGWS_D[b] = {static_cast(wCount * hCount), static_cast(ocC4)}; - std::string kernelName = dstTranseKernelname + "_" + std::to_string(mGWS_D[b][0]) + "_" + std::to_string(mGWS_D[b][1]); - mLWS_D[b] = localWS2DDefault(mGWS_D[b], mMaxWGS_D[b], mOpenCLBackend->getOpenCLRuntime(), kernelName, mDestTransform[b]).first; - } else { - mLWS_D[b] = {1, 16}; - } - mOpenCLBackend->recordKernel2d(mDestTransform[b], mGWS_D[b], mLWS_D[b]); - } - } - } else +#ifdef MNN_SUPPORT_INTEL_SUBGROUP + if (mResource->mUseSubgroup) { + return SubgroupOnResize(inputs, outputs); + } else #endif /* MNN_SUPPORT_INTEL_SUBGROUP */ { mSource.reset(Tensor::createDevice( @@ -414,14 +451,6 @@ ErrorCode ConvBufWinograd::onResize(const std::vector& inputs, const st auto icC4 = UP_DIV(input->channel(), 4); auto ocC4 = UP_DIV(output->channel(), 4); - uint32_t total_num = input->batch(); - mSourceTransform.resize(total_num); - mMatMul.resize(total_num); - mDestTransform.resize(total_num); - mMaxWGS_S.resize(total_num); - mMaxWGS_D.resize(total_num); - mMaxWGS_M.resize(total_num); - std::set basic; /*Create Kernel*/ for (int i = 0; i < total_num; i++) { @@ -429,28 +458,21 @@ ErrorCode ConvBufWinograd::onResize(const std::vector& inputs, const st ::memset(format, 0, sizeof(format)); sprintf(format, "%d_%d_%d", UNIT, mKernelX, INTERP); auto formatStr = std::string(format); - mSourceTransform[i] = runTime->buildKernel("winogradTransform_buf", "winoTransSrcBuf" + formatStr, basic); - mMaxWGS_S[i] = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(mSourceTransform[i])); + mUnits[i * 3].kernel = runTime->buildKernel("winogradTransform_buf", "winoTransSrcBuf" + formatStr, basic); + mMaxWGS_S[i] = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(mUnits[i * 3].kernel)); { std::set buildOptions = basic; - if (mCommon->relu()) { + if (mResource->mCommon->relu()) { buildOptions.emplace("-DRELU"); } - if (mCommon->relu6()) { + if (mResource->mCommon->relu6()) { buildOptions.emplace("-DRELU6"); } - mDestTransform[i] = runTime->buildKernel("winogradTransform_buf", "winoTransDstBuf" + formatStr, buildOptions); - mMaxWGS_D[i] = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(mDestTransform[i])); + mUnits[i * 3 + 2].kernel = runTime->buildKernel("winogradTransform_buf", "winoTransDstBuf" + formatStr, buildOptions); + mMaxWGS_D[i] = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(mUnits[i * 3 + 2].kernel)); } } - mGWS_S.resize(total_num); - mGWS_D.resize(total_num); - mGWS_M.resize(total_num); - mLWS_S.resize(total_num); - mLWS_D.resize(total_num); - mLWS_M.resize(total_num); - for (int b = 0; b < input->batch(); ++b) { int hCount = hUnit; int wCount = wUnit; @@ -460,23 +482,25 @@ ErrorCode ConvBufWinograd::onResize(const std::vector& inputs, const st mGWS_S[b] = {static_cast(wCount * hCount), static_cast(icC4)}; int index = 0; cl_int ret = CL_SUCCESS; - ret |= mSourceTransform[b].setArg(index++, mGWS_S[b][0]); - ret |= mSourceTransform[b].setArg(index++, mGWS_S[b][1]); - ret |= mSourceTransform[b].setArg(index++, openCLBuffer(input)); - ret |= mSourceTransform[b].setArg(index++, openCLBuffer(mSource.get())); - ret |= mSourceTransform[b].setArg(index++, wCount); - ret |= mSourceTransform[b].setArg(index++, hCount); - ret |= mSourceTransform[b].setArg(index++, padX); - ret |= mSourceTransform[b].setArg(index++, padY); - ret |= mSourceTransform[b].setArg(index++, input->width()); - ret |= mSourceTransform[b].setArg(index++, input->height()); - ret |= mSourceTransform[b].setArg(index++, icC4); - ret |= mSourceTransform[b].setArg(index++, b); + ret |= mUnits[b * 3].kernel->get().setArg(index++, mGWS_S[b][0]); + ret |= mUnits[b * 3].kernel->get().setArg(index++, mGWS_S[b][1]); + ret |= mUnits[b * 3].kernel->get().setArg(index++, openCLBuffer(input)); + ret |= mUnits[b * 3].kernel->get().setArg(index++, openCLBuffer(mSource.get())); + ret |= mUnits[b * 3].kernel->get().setArg(index++, wCount); + ret |= mUnits[b * 3].kernel->get().setArg(index++, hCount); + ret |= mUnits[b * 3].kernel->get().setArg(index++, padX); + ret |= mUnits[b * 3].kernel->get().setArg(index++, padY); + ret |= mUnits[b * 3].kernel->get().setArg(index++, input->width()); + ret |= mUnits[b * 3].kernel->get().setArg(index++, input->height()); + ret |= mUnits[b * 3].kernel->get().setArg(index++, icC4); + ret |= mUnits[b * 3].kernel->get().setArg(index++, b); MNN_CHECK_CL_SUCCESS(ret, "setArg ConvWinogradBuf SubGroup Source Trans"); std::string kernelName = "winoTransSrcBuf"; - mLWS_S[b] = localWS2DDefault(mGWS_S[b], mMaxWGS_S[b], mOpenCLBackend->getOpenCLRuntime(), kernelName, mSourceTransform[b]).first; - mOpenCLBackend->recordKernel2d(mSourceTransform[b], mGWS_S[b], mLWS_S[b]); + mLWS_S[b] = localWS2DDefault(mGWS_S[b], mMaxWGS_S[b], mOpenCLBackend->getOpenCLRuntime(), kernelName + info, mUnits[b * 3].kernel).first; + mOpenCLBackend->recordKernel2d(mUnits[b * 3].kernel, mGWS_S[b], mLWS_S[b]); + mUnits[b * 3].globalWorkSize = {mGWS_S[b][0], mGWS_S[b][1]}; + mUnits[b * 3].localWorkSize = {mLWS_S[b][0], mLWS_S[b][1]}; } // MatMul @@ -493,7 +517,7 @@ ErrorCode ConvBufWinograd::onResize(const std::vector& inputs, const st actual_kernel = 1; } - cl::Kernel kernel[total_kernel]; + std::shared_ptr kernel[total_kernel]; std::vector globalWorkSize[total_kernel]; std::vector localWorkSize[total_kernel]; std::pair min_cost(UINT_MAX, 0); //(min_time, min_index) @@ -504,19 +528,19 @@ ErrorCode ConvBufWinograd::onResize(const std::vector& inputs, const st globalWorkSize[knl_idx] = {static_cast(UP_DIV(gemmWidth, itemW[knl_idx]) * gemmHeight), static_cast(alpha * alpha)}; uint32_t index = 0; cl_int ret = CL_SUCCESS; - ret |= kernel[knl_idx].setArg(index++, globalWorkSize[knl_idx][0]); - ret |= kernel[knl_idx].setArg(index++, globalWorkSize[knl_idx][1]); - ret |= kernel[knl_idx].setArg(index++, openCLBuffer(mSource.get())); - ret |= kernel[knl_idx].setArg(index++, openCLBuffer(mWeight.get())); - ret |= kernel[knl_idx].setArg(index++, openCLBuffer(mDest.get())); - ret |= kernel[knl_idx].setArg(index++, gemmWidth); - ret |= kernel[knl_idx].setArg(index++, gemmHeight); - ret |= kernel[knl_idx].setArg(index++, icC4); - ret |= kernel[knl_idx].setArg(index++, alpha * alpha); + ret |= kernel[knl_idx]->get().setArg(index++, globalWorkSize[knl_idx][0]); + ret |= kernel[knl_idx]->get().setArg(index++, globalWorkSize[knl_idx][1]); + ret |= kernel[knl_idx]->get().setArg(index++, openCLBuffer(mSource.get())); + ret |= kernel[knl_idx]->get().setArg(index++, openCLBuffer(mResource->mWeight.get())); + ret |= kernel[knl_idx]->get().setArg(index++, openCLBuffer(mDest.get())); + ret |= kernel[knl_idx]->get().setArg(index++, gemmWidth); + ret |= kernel[knl_idx]->get().setArg(index++, gemmHeight); + ret |= kernel[knl_idx]->get().setArg(index++, icC4); + ret |= kernel[knl_idx]->get().setArg(index++, alpha * alpha); MNN_CHECK_CL_SUCCESS(ret, "setArg ConvWinogradBuf SubGroup MatMul Kernel Select"); std::pair, uint32_t> retTune; - retTune = localWS2DDefault(globalWorkSize[knl_idx], maxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), kernelName[knl_idx], kernel[knl_idx]); + retTune = localWS2DDefault(globalWorkSize[knl_idx], maxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), kernelName[knl_idx] + info, kernel[knl_idx]); // printf("gemm %d, %d\n", knl_idx, retTune.second); if (min_cost.first > retTune.second) { min_cost.first = retTune.second; @@ -527,21 +551,23 @@ ErrorCode ConvBufWinograd::onResize(const std::vector& inputs, const st int min_index = min_cost.second; // mKernel = kernel[min_index]; mGWS_M[b] = {globalWorkSize[min_index][0], globalWorkSize[min_index][1]}; - mMatMul[b] = mOpenCLBackend->getOpenCLRuntime()->buildKernel("gemm_buf", kernelName[min_index], basic); + mUnits[b * 3 + 1].kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("gemm_buf", kernelName[min_index], basic); int index = 0; cl_int ret = CL_SUCCESS; - ret |= mMatMul[b].setArg(index++, mGWS_M[b][0]); - ret |= mMatMul[b].setArg(index++, mGWS_M[b][1]); - ret |= mMatMul[b].setArg(index++, openCLBuffer(mSource.get())); - ret |= mMatMul[b].setArg(index++, openCLBuffer(mWeight.get())); - ret |= mMatMul[b].setArg(index++, openCLBuffer(mDest.get())); - ret |= mMatMul[b].setArg(index++, gemmWidth); - ret |= mMatMul[b].setArg(index++, gemmHeight); - ret |= mMatMul[b].setArg(index++, icC4); - ret |= mMatMul[b].setArg(index++, alpha * alpha); + ret |= mUnits[b * 3 + 1].kernel->get().setArg(index++, mGWS_M[b][0]); + ret |= mUnits[b * 3 + 1].kernel->get().setArg(index++, mGWS_M[b][1]); + ret |= mUnits[b * 3 + 1].kernel->get().setArg(index++, openCLBuffer(mSource.get())); + ret |= mUnits[b * 3 + 1].kernel->get().setArg(index++, openCLBuffer(mResource->mWeight.get())); + ret |= mUnits[b * 3 + 1].kernel->get().setArg(index++, openCLBuffer(mDest.get())); + ret |= mUnits[b * 3 + 1].kernel->get().setArg(index++, gemmWidth); + ret |= mUnits[b * 3 + 1].kernel->get().setArg(index++, gemmHeight); + ret |= mUnits[b * 3 + 1].kernel->get().setArg(index++, icC4); + ret |= mUnits[b * 3 + 1].kernel->get().setArg(index++, alpha * alpha); MNN_CHECK_CL_SUCCESS(ret, "setArg ConvWinogradBuf SubGroup MatMul"); - mOpenCLBackend->recordKernel2d(mMatMul[b], mGWS_M[b], mLWS_M[b]); + mOpenCLBackend->recordKernel2d(mUnits[b * 3 + 1].kernel, mGWS_M[b], mLWS_M[b]); + mUnits[b * 3 + 1].globalWorkSize = {mGWS_M[b][0], mGWS_M[b][1]}; + mUnits[b * 3 + 1].localWorkSize = {mLWS_M[b][0], mLWS_M[b][1]}; } // Dest Transform @@ -550,90 +576,28 @@ ErrorCode ConvBufWinograd::onResize(const std::vector& inputs, const st int index = 0; cl_int ret = CL_SUCCESS; - ret |= mDestTransform[b].setArg(index++, mGWS_D[b][0]); - ret |= mDestTransform[b].setArg(index++, mGWS_D[b][1]); - ret |= mDestTransform[b].setArg(index++, openCLBuffer(mDest.get())); - ret |= mDestTransform[b].setArg(index++, openCLBuffer(mBias.get())); - ret |= mDestTransform[b].setArg(index++, openCLBuffer(output)); - ret |= mDestTransform[b].setArg(index++, wCount); - ret |= mDestTransform[b].setArg(index++, hCount); - ret |= mDestTransform[b].setArg(index++, output->width()); - ret |= mDestTransform[b].setArg(index++, output->height()); - ret |= mDestTransform[b].setArg(index++, ocC4); - ret |= mDestTransform[b].setArg(index++, b); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, mGWS_D[b][0]); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, mGWS_D[b][1]); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, openCLBuffer(mDest.get())); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, openCLBuffer(mResource->mBias.get())); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, openCLBuffer(output)); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, wCount); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, hCount); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, output->width()); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, output->height()); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, ocC4); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(index++, b); MNN_CHECK_CL_SUCCESS(ret, "setArg ConvWinogradBuf SubGroup Dest Trans"); std::string kernelName = "winoTransDstBuf"; - mLWS_D[b] = localWS2DDefault(mGWS_D[b], mMaxWGS_D[b], mOpenCLBackend->getOpenCLRuntime(), kernelName, mDestTransform[b]).first; - mOpenCLBackend->recordKernel2d(mDestTransform[b], mGWS_D[b], mLWS_D[b]); + mLWS_D[b] = localWS2DDefault(mGWS_D[b], mMaxWGS_D[b], mOpenCLBackend->getOpenCLRuntime(), kernelName + info, mUnits[b * 3 + 2].kernel).first; + mOpenCLBackend->recordKernel2d(mUnits[b * 3 + 2].kernel, mGWS_D[b], mLWS_D[b]); + mUnits[b * 3 + 2].globalWorkSize = {mGWS_D[b][0], mGWS_D[b][1]}; + mUnits[b * 3 + 2].localWorkSize = {mLWS_D[b][0], mLWS_D[b][1]}; } } } - mOpenCLBackend->endRecord(mRecording); - - return NO_ERROR; -} - -ErrorCode ConvBufWinograd::onExecute(const std::vector& inputs, const std::vector& outputs) { - auto input = inputs[0]; - auto output = outputs[0]; - -#ifndef ENABLE_OPENCL_TIME_PROFILER -if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); - return NO_ERROR; -} -#endif - for (int b = 0; b < input->batch(); ++b) { - int index = b; - /*Source Transform*/ - { - #ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - runKernel2D(mSourceTransform[index], mGWS_S[index], mLWS_S[index], - mOpenCLBackend->getOpenCLRuntime(), &event); - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"ConvWino0", event}); - #else - runKernel2D(mSourceTransform[index], mGWS_S[index], mLWS_S[index], - mOpenCLBackend->getOpenCLRuntime()); - #endif - } - - /*MatMul*/ - { - #ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - if (mUseSubgroup) { - run3DKernelDefault(mMatMul[index], mGWS_M[index], mLWS_M[index], mOpenCLBackend->getOpenCLRuntime(), &event); - } else { - runKernel2D(mMatMul[index], mGWS_M[index], mLWS_M[index], mOpenCLBackend->getOpenCLRuntime(), &event); - } - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"ConvWino1", event}); - #else - if (mUseSubgroup) { - run3DKernelDefault(mMatMul[index], mGWS_M[index], mLWS_M[index], mOpenCLBackend->getOpenCLRuntime()); - } else { - runKernel2D(mMatMul[index], mGWS_M[index], mLWS_M[index], mOpenCLBackend->getOpenCLRuntime()); - } - #endif - } - - // Dest Transform - { - #ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - runKernel2D(mDestTransform[index], mGWS_D[index], mLWS_D[index], - mOpenCLBackend->getOpenCLRuntime(), &event); - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"ConvWino2", event}); - #else - runKernel2D(mDestTransform[index], mGWS_D[index], mLWS_D[index], - mOpenCLBackend->getOpenCLRuntime()); - #endif - } - } - return NO_ERROR; } diff --git a/source/backend/opencl/execution/buffer/ConvBufWinograd.hpp b/source/backend/opencl/execution/buffer/ConvBufWinograd.hpp index c19f24b47..dc3c9a2e2 100644 --- a/source/backend/opencl/execution/buffer/ConvBufWinograd.hpp +++ b/source/backend/opencl/execution/buffer/ConvBufWinograd.hpp @@ -11,45 +11,43 @@ #ifndef __CONVBUF_WINOGRAD__ #define __CONVBUF_WINOGRAD__ -#include "core/Execution.hpp" - -#include -#include -#include #include "backend/opencl/execution/buffer/ConvBufExecution.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "backend/opencl/execution/image/CommonExecution.hpp" namespace MNN { namespace OpenCL { -class ConvBufWinograd : public Execution, public CommonExtension { + +struct ConvBufWinoResource { + const Convolution2DCommon* mCommon; + bool mUseSubgroup{false}; + std::shared_ptr mWeight; + std::shared_ptr mBias; +}; + +class ConvBufWinograd : public CommonExecution { public: - ConvBufWinograd(const MNN::Convolution2D* op, Backend* backend); + ConvBufWinograd(const MNN::Op* op, Backend* backend); + ConvBufWinograd(std::shared_ptr resource, const MNN::Op* op, Backend* backend); virtual ~ConvBufWinograd(); - virtual ErrorCode onResize(const std::vector& inputs, const std::vector& outputs) override; - virtual ErrorCode onExecute(const std::vector& inputs, const std::vector& outputs) override; + virtual ErrorCode onEncode(const std::vector& inputs, const std::vector& outputs) override; + virtual bool onClone(Backend* bn, const Op* op, Execution** dst) override; static bool valid(const Convolution2DCommon* common, const Tensor* input, const Tensor* output, bool isIntel = false, int limit = 8192); std::vector getLocalWS(std::string kernelName, int index, std::vector &gws, const uint32_t maxWorkGroupSize, cl::Kernel mKernel); - +#ifdef MNN_SUPPORT_INTEL_SUBGROUP + ErrorCode SubgroupOnResize(const std::vector &inputs, const std::vector &outputs); +#endif /* MNN_SUPPORT_INTEL_SUBGROUP */ private: OpenCLBackend* mOpenCLBackend; - const Convolution2DCommon* mCommon; + std::shared_ptr mResource; int mKernelX; int mKernelY; int mStrideX; int mStrideY; - bool mUseSubgroup{false}; - std::shared_ptr mWeight; - std::shared_ptr mBias; std::shared_ptr mSource; std::shared_ptr mDest; - std::vector mSourceTransform; - std::vector mDestTransform; - std::vector mMatMul; - std::vector mMaxWGS_S; std::vector mMaxWGS_D; std::vector mMaxWGS_M; diff --git a/source/backend/opencl/execution/buffer/ConvSubgroupBufExecution.cpp b/source/backend/opencl/execution/buffer/ConvSubgroupBufExecution.cpp index 7c1673bd6..142c49268 100644 --- a/source/backend/opencl/execution/buffer/ConvSubgroupBufExecution.cpp +++ b/source/backend/opencl/execution/buffer/ConvSubgroupBufExecution.cpp @@ -12,9 +12,6 @@ #include "ConvBufExecution.hpp" #include "ConvSubgroupBufExecution.hpp" #include "core/ConvolutionCommon.hpp" -#include "core/Backend.hpp" -#include "RasterBufExecution.hpp" -#include "math/WingoradGenerater.hpp" namespace MNN { namespace OpenCL { @@ -77,33 +74,34 @@ static std::pair GetTuningParams(const std::vector &inputs, ConvSubgroupBuf::ConvSubgroupBuf(const std::vector &inputs, const std::vector &outputs, const MNN::Op *op, Backend *backend) - : Execution(backend) { + : CommonExecution(backend, op) { #ifdef LOG_VERBOSE MNN_PRINT("Start ConvSubgroupBuf init !\n"); #endif + mResource.reset(new ConvSubgroupBufResource); mOpenCLBackend = static_cast(backend); const auto *conv2dParams = op->main_as_Convolution2D(); const auto *conv2dCommonParams = conv2dParams->common(); - mConv2dParams = conv2dParams; - mConv2dCommonParams = conv2dCommonParams; - mStrides = {conv2dCommonParams->strideY(), conv2dCommonParams->strideX()}; - mDilations = {conv2dCommonParams->dilateY(), conv2dCommonParams->dilateX()}; + mResource->mConv2dParams = conv2dParams; + mResource->mConv2dCommonParams = conv2dCommonParams; + mResource->mStrides = {conv2dCommonParams->strideY(), conv2dCommonParams->strideX()}; + mResource->mDilations = {conv2dCommonParams->dilateY(), conv2dCommonParams->dilateX()}; - auto padding = ConvolutionCommon::convolutionPad(inputs[0], outputs[0], mConv2dCommonParams); + auto padding = ConvolutionCommon::convolutionPad(inputs[0], outputs[0], mResource->mConv2dCommonParams); mPaddings[0] = padding.second; // padY mPaddings[1] = padding.first; // padX - mKernelWidth = conv2dCommonParams->kernelX(); - mKernelHeight = conv2dCommonParams->kernelY(); - mOutputChannel = conv2dCommonParams->outputCount(); - mInputChannel = inputs[0]->channel(); + mResource->mKernelWidth = conv2dCommonParams->kernelX(); + mResource->mKernelHeight = conv2dCommonParams->kernelY(); + mResource->mOutputChannel = conv2dCommonParams->outputCount(); + mResource->mInputChannel = inputs[0]->channel(); { // create tensor for intel filter - mFilter.reset(Tensor::createDevice(std::vector{ - UP_DIV(mOutputChannel, 16), UP_DIV(mInputChannel, 16), mKernelWidth * mKernelHeight, 16, 16})); - auto res = mOpenCLBackend->onAcquireBuffer(mFilter.get(), Backend::STATIC); + mResource->mFilter.reset(Tensor::createDevice(std::vector{ + UP_DIV(mResource->mOutputChannel, 16), UP_DIV(mResource->mInputChannel, 16), mResource->mKernelWidth * mResource->mKernelHeight, 16, 16})); + auto res = mOpenCLBackend->onAcquireBuffer(mResource->mFilter.get(), Backend::STATIC); cl_int ret_code; if (!res) { mValid = false; @@ -115,10 +113,10 @@ ConvSubgroupBuf::ConvSubgroupBuf(const std::vector &inputs, const std: ConvolutionCommon::getConvParameters(&quanCommon, backend, conv2dParams, &FilterDataPtr, &weightSize); if (FilterDataPtr != nullptr) { std::shared_ptr sourceWeight( - Tensor::create(std::vector{mOutputChannel, mInputChannel, mKernelWidth, mKernelHeight}, + Tensor::create(std::vector{mResource->mOutputChannel, mResource->mInputChannel, mResource->mKernelWidth, mResource->mKernelHeight}, (void *)FilterDataPtr, Tensor::CAFFE)); std::shared_ptr destWeight(Tensor::create(std::vector{ - UP_DIV(mOutputChannel, 16), UP_DIV(mInputChannel, 16), mKernelWidth * mKernelHeight, 16, 16})); + UP_DIV(mResource->mOutputChannel, 16), UP_DIV(mResource->mInputChannel, 16), mResource->mKernelWidth * mResource->mKernelHeight, 16, 16})); transformWeight(destWeight.get(), sourceWeight.get()); auto weightDestSize = destWeight->size(); @@ -130,7 +128,7 @@ ConvSubgroupBuf::ConvSubgroupBuf(const std::vector &inputs, const std: buffer_size *= sizeof(float); } - cl::Buffer &weightBuffer = *(cl::Buffer *)mFilter->buffer().device; + cl::Buffer &weightBuffer = *(cl::Buffer *)mResource->mFilter->buffer().device; auto runTime = mOpenCLBackend->getOpenCLRuntime(); auto queue = runTime->commandQueue(); @@ -161,9 +159,9 @@ ConvSubgroupBuf::ConvSubgroupBuf(const std::vector &inputs, const std: buffer_size *= sizeof(float); } - mBias.reset(Tensor::createDevice({1, 1, 1, ROUND_UP(biasSize, 16)})); - backend->onAcquireBuffer(mBias.get(), Backend::STATIC); - cl::Buffer &biasBuffer = openCLBuffer(mBias.get()); + mResource->mBias.reset(Tensor::createDevice({1, 1, 1, ROUND_UP(biasSize, 16)})); + backend->onAcquireBuffer(mResource->mBias.get(), Backend::STATIC); + cl::Buffer &biasBuffer = openCLBuffer(mResource->mBias.get()); cl_int res; auto biasPtrCL = mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueMapBuffer( @@ -186,10 +184,10 @@ ConvSubgroupBuf::ConvSubgroupBuf(const std::vector &inputs, const std: mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(biasBuffer, biasPtrCL); } - if (mConv2dCommonParams->relu()) { - mBuildOptions.emplace("-DRELU"); - } else if (mConv2dCommonParams->relu6()) { - mBuildOptions.emplace("-DRELU6"); + if (mResource->mConv2dCommonParams->relu()) { + mResource->mBuildOptions.emplace("-DRELU"); + } else if (mResource->mConv2dCommonParams->relu6()) { + mResource->mBuildOptions.emplace("-DRELU6"); } #ifdef LOG_VERBOSE MNN_PRINT("end ConvSubgroupBuf init !\n"); @@ -226,20 +224,38 @@ void ConvSubgroupBuf::transformWeight(const Tensor *weightDest, const Tensor *so } ConvSubgroupBuf::~ConvSubgroupBuf() { - mOpenCLBackend->onReleaseBuffer(mFilter.get(), Backend::STATIC); - mOpenCLBackend->onReleaseBuffer(mBias.get(), Backend::STATIC); + // Do nothing } -ErrorCode ConvSubgroupBuf::onResize(const std::vector &inputs, const std::vector &outputs) { +ConvSubgroupBuf::ConvSubgroupBuf(std::shared_ptr resource, const MNN::Op* op, Backend *backend) : CommonExecution(backend, op) { + mResource = resource; + mOpenCLBackend = static_cast(backend); + const auto *conv2dParams = op->main_as_Convolution2D(); + const auto *conv2dCommonParams = conv2dParams->common(); + mResource->mConv2dParams = conv2dParams; + mResource->mConv2dCommonParams = conv2dCommonParams; +} + +bool ConvSubgroupBuf::onClone(Backend* bn, const Op* op, Execution** dst) { + if (!mValid) { + return false; + } + if (nullptr == dst) { + return true; + } + *dst = new ConvSubgroupBuf(mResource, op, bn); + return true; +} + +ErrorCode ConvSubgroupBuf::onEncode(const std::vector &inputs, const std::vector &outputs) { #ifdef LOG_VERBOSE MNN_PRINT("Start ConvSubgroupBuf onResize !\n"); #endif + mUnits.clear(); auto input = inputs[0]; auto output = outputs[0]; std::vector inputShape = tensorShapeFormat(input); std::vector outputShape = tensorShapeFormat(output); - auto runTime = mOpenCLBackend->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); int in_c_pack = TensorUtils::getTensorChannelPack(input); int out_c_pack = TensorUtils::getTensorChannelPack(output); const int height = outputShape.at(1); @@ -250,7 +266,7 @@ ErrorCode ConvSubgroupBuf::onResize(const std::vector &inputs, const s const int inputWidth = inputShape.at(2); const int inputChannels = inputShape.at(3); - int input_width_pad = mStrides[1] * (8 - 1) + (mKernelWidth - 1) * mDilations[1] + 1 + width * mStrides[1] + mPaddings[1]; + int input_width_pad = mResource->mStrides[1] * (8 - 1) + (mResource->mKernelWidth - 1) * mResource->mDilations[1] + 1 + width * mResource->mStrides[1] + mPaddings[1]; int input_height_pad = inputHeight + 2 * mPaddings[0]; uint32_t MaxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->MaxWorkGroupSize()); uint32_t MaxThreadsPerDevice = static_cast(mOpenCLBackend->getOpenCLRuntime()->MaxThreadsPerDevice()); @@ -260,10 +276,10 @@ ErrorCode ConvSubgroupBuf::onResize(const std::vector &inputs, const s auto outputpad = TensorUtils::getDescribe(output)->mPads; int inputImageShape[2] = {inputHeight, inputWidth}; int outputImageShape[2] = {height, width}; - int kernelShape[2] = {mKernelHeight, mKernelWidth}; - int strideShape[2] = {mStrides[0], mStrides[1]}; + int kernelShape[2] = {mResource->mKernelHeight, mResource->mKernelWidth}; + int strideShape[2] = {mResource->mStrides[0], mResource->mStrides[1]}; int paddingShape[2] = {mPaddings[0], mPaddings[1]}; - int dilationShape[2] = {mDilations[0], mDilations[1]}; + int dilationShape[2] = {mResource->mDilations[0], mResource->mDilations[1]}; auto tune_param = GetTuningParams(inputs, outputs, MaxWorkGroupSize, isSupportedFP16, MaxThreadsPerDevice); uint32_t blockWidth = tune_param.first; uint32_t sub_group_size = 16; @@ -280,64 +296,69 @@ ErrorCode ConvSubgroupBuf::onResize(const std::vector &inputs, const s mLocalWorkSize = {1, static_cast(sub_group_size * slm_div_factor), 1}; if (in_c_pack == 4) { + Unit unit; mNeedTranse = true; if (inputChannels < 16) { mSource.reset(Tensor::createDevice(std::vector{inputShape.at(0), input->channel(), inputHeight, inputWidth}, Tensor::CAFFE_C4)); mOpenCLBackend->onAcquireBuffer(mSource.get(), Backend::DYNAMIC); mOpenCLBackend->onReleaseBuffer(mSource.get(), Backend::DYNAMIC); - mTranseKernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("input_transe_buf", "conv_transe_c4_c1", {}); + unit.kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("input_transe_buf", "conv_transe_c4_c1", {}); - uint32_t mMaxWGS_S = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(mTranseKernel)); + uint32_t mMaxWGS_S = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(unit.kernel)); mTranseGlobalWorkSize = {static_cast(inputWidth * inputHeight), static_cast(UP_DIV(inputShape.at(3), 4)), static_cast(inputShape.at(0))}; uint32_t idx = 0; - mTranseKernel.setArg(idx++, mTranseGlobalWorkSize[0]); - mTranseKernel.setArg(idx++, mTranseGlobalWorkSize[1]); - mTranseKernel.setArg(idx++, mTranseGlobalWorkSize[2]); - mTranseKernel.setArg(idx++, openCLBuffer(input)); - mTranseKernel.setArg(idx++, openCLBuffer(mSource.get())); - mTranseKernel.setArg(idx++, static_cast(inputWidth)); - mTranseKernel.setArg(idx++, static_cast(inputHeight)); - mTranseKernel.setArg(idx++, static_cast(inputChannels)); - mTranseKernel.setArg(idx++, UP_DIV(inputShape.at(3), 4)); - mTranseKernel.setArg(idx++, static_cast(inputpad.left)); - mTranseKernel.setArg(idx++, static_cast(inputpad.right)); + unit.kernel->get().setArg(idx++, mTranseGlobalWorkSize[0]); + unit.kernel->get().setArg(idx++, mTranseGlobalWorkSize[1]); + unit.kernel->get().setArg(idx++, mTranseGlobalWorkSize[2]); + unit.kernel->get().setArg(idx++, openCLBuffer(input)); + unit.kernel->get().setArg(idx++, openCLBuffer(mSource.get())); + unit.kernel->get().setArg(idx++, static_cast(inputWidth)); + unit.kernel->get().setArg(idx++, static_cast(inputHeight)); + unit.kernel->get().setArg(idx++, static_cast(inputChannels)); + unit.kernel->get().setArg(idx++, UP_DIV(inputShape.at(3), 4)); + unit.kernel->get().setArg(idx++, static_cast(inputpad.left)); + unit.kernel->get().setArg(idx++, static_cast(inputpad.right)); - mTranseLocalWorkSize = localWS3DDefault(mTranseGlobalWorkSize, mMaxWGS_S, mOpenCLBackend->getOpenCLRuntime(), "conv_transe_c4_c1", mTranseKernel).first; - mOpenCLBackend->recordKernel3d(mTranseKernel, mTranseGlobalWorkSize, mTranseLocalWorkSize); + mTranseLocalWorkSize = localWS3DDefault(mTranseGlobalWorkSize, mMaxWGS_S, mOpenCLBackend->getOpenCLRuntime(), "conv_transe_c4_c1", unit.kernel).first; + mOpenCLBackend->recordKernel3d(unit.kernel, mTranseGlobalWorkSize, mTranseLocalWorkSize); } else { mSource.reset(Tensor::createDevice(std::vector{inputShape.at(0), UP_DIV(input->channel(), 16),inputHeight * inputWidth, 16}, Tensor::CAFFE_C4)); mOpenCLBackend->onAcquireBuffer(mSource.get(), Backend::DYNAMIC); mOpenCLBackend->onReleaseBuffer(mSource.get(), Backend::DYNAMIC); - mTranseKernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("input_transe_buf", "conv_transe_c4_c16", {}); + unit.kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("input_transe_buf", "conv_transe_c4_c16", {}); - uint32_t mMaxWGS_S = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(mTranseKernel)); + uint32_t mMaxWGS_S = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(unit.kernel)); mTranseGlobalWorkSize = {static_cast(inputWidth * inputHeight), static_cast(UP_DIV(inputShape.at(3), 4)), static_cast(inputShape.at(0))}; uint32_t idx = 0; - mTranseKernel.setArg(idx++, mTranseGlobalWorkSize[0]); - mTranseKernel.setArg(idx++, mTranseGlobalWorkSize[1]); - mTranseKernel.setArg(idx++, mTranseGlobalWorkSize[2]); - mTranseKernel.setArg(idx++, openCLBuffer(input)); - mTranseKernel.setArg(idx++, openCLBuffer(mSource.get())); - mTranseKernel.setArg(idx++, static_cast(inputWidth)); - mTranseKernel.setArg(idx++, static_cast(inputHeight)); - mTranseKernel.setArg(idx++, static_cast(inputChannels)); - mTranseKernel.setArg(idx++, UP_DIV(inputShape.at(3), 4)); - mTranseKernel.setArg(idx++, static_cast(inputpad.left)); - mTranseKernel.setArg(idx++, static_cast(inputpad.right)); + unit.kernel->get().setArg(idx++, mTranseGlobalWorkSize[0]); + unit.kernel->get().setArg(idx++, mTranseGlobalWorkSize[1]); + unit.kernel->get().setArg(idx++, mTranseGlobalWorkSize[2]); + unit.kernel->get().setArg(idx++, openCLBuffer(input)); + unit.kernel->get().setArg(idx++, openCLBuffer(mSource.get())); + unit.kernel->get().setArg(idx++, static_cast(inputWidth)); + unit.kernel->get().setArg(idx++, static_cast(inputHeight)); + unit.kernel->get().setArg(idx++, static_cast(inputChannels)); + unit.kernel->get().setArg(idx++, UP_DIV(inputShape.at(3), 4)); + unit.kernel->get().setArg(idx++, static_cast(inputpad.left)); + unit.kernel->get().setArg(idx++, static_cast(inputpad.right)); - mTranseLocalWorkSize = localWS3DDefault(mTranseGlobalWorkSize, mMaxWGS_S, mOpenCLBackend->getOpenCLRuntime(), "conv_transe_c4_c16", mTranseKernel).first; - mOpenCLBackend->recordKernel3d(mTranseKernel, mTranseGlobalWorkSize, mTranseLocalWorkSize); + mTranseLocalWorkSize = localWS3DDefault(mTranseGlobalWorkSize, mMaxWGS_S, mOpenCLBackend->getOpenCLRuntime(), "conv_transe_c4_c16", unit.kernel).first; + mOpenCLBackend->recordKernel3d(unit.kernel, mTranseGlobalWorkSize, mTranseLocalWorkSize); } - } + unit.globalWorkSize = {mTranseGlobalWorkSize[0], mTranseGlobalWorkSize[1], mTranseGlobalWorkSize[2]}; + unit.localWorkSize = {mTranseLocalWorkSize[0], mTranseLocalWorkSize[1], mTranseLocalWorkSize[2]}; + mUnits.emplace_back(unit); + } + Unit unit; if (inputChannels < 16 && in_c_pack == 4) { - std::set buildOptions = mBuildOptions; + std::set buildOptions = mResource->mBuildOptions; buildOptions.emplace("-DINPUT_LINE_SIZE=" + std::to_string(input_line_size)); buildOptions.emplace("-DINPUT_BLOCK_SIZE=" + std::to_string(input_block_size)); buildOptions.emplace("-DINPUT_CHANNEL=" + std::to_string(inputChannels)); @@ -348,9 +369,9 @@ ErrorCode ConvSubgroupBuf::onResize(const std::vector &inputs, const s buildOptions.emplace("-DSTRIDE_HEIGHT=" + std::to_string(strideShape[0])); buildOptions.emplace("-DSTRIDE_WIDTH=" + std::to_string(strideShape[1])); std::string kernelname = "conv_2d_buf_subgroup_c1_c" + std::to_string(out_c_pack) + "_b" + std::to_string(blockWidth); - mKernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d_c1_subgroup_buf", kernelname, buildOptions); + unit.kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d_c1_subgroup_buf", kernelname, buildOptions); } else { - std::set buildOptions = mBuildOptions; + std::set buildOptions = mResource->mBuildOptions; buildOptions.emplace("-DINPUT_LINE_SIZE=" + std::to_string(input_line_size)); buildOptions.emplace("-DSLM_DIV_FACTOR=" + std::to_string(slm_div_factor)); buildOptions.emplace("-DWORK_GROUP_SIZE=" + std::to_string(work_group_size)); @@ -363,77 +384,40 @@ ErrorCode ConvSubgroupBuf::onResize(const std::vector &inputs, const s buildOptions.emplace("-DSTRIDE_HEIGHT=" + std::to_string(strideShape[0])); buildOptions.emplace("-DSTRIDE_WIDTH=" + std::to_string(strideShape[1])); std::string kernelname = "conv_2d_buf_subgroup_c16_c" + std::to_string(out_c_pack) + "_b" + std::to_string(blockWidth); - mKernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d_c16_subgroup_buf", kernelname, buildOptions); + unit.kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d_c16_subgroup_buf", kernelname, buildOptions); } uint32_t idx = 0; if (mNeedTranse) { - mKernel.setArg(idx++, openCLBuffer(mSource.get())); + unit.kernel->get().setArg(idx++, openCLBuffer(mSource.get())); } else { - mKernel.setArg(idx++, openCLBuffer(input)); + unit.kernel->get().setArg(idx++, openCLBuffer(input)); } - mKernel.setArg(idx++, openCLBuffer(output)); - mKernel.setArg(idx++, openCLBuffer(mFilter.get())); - mKernel.setArg(idx++, openCLBuffer(mBias.get())); - mKernel.setArg(idx++, static_cast(mPaddings[1])); - mKernel.setArg(idx++, static_cast(mPaddings[0])); - mKernel.setArg(idx++, static_cast(inputWidth)); - mKernel.setArg(idx++, static_cast(inputHeight)); - mKernel.setArg(idx++, static_cast(width)); - mKernel.setArg(idx++, static_cast(height)); - mKernel.setArg(idx++, static_cast(outChannel)); - mKernel.setArg(idx++, static_cast(x_blocks)); - mKernel.setArg(idx++, static_cast(inputpad.left)); - mKernel.setArg(idx++, static_cast(inputpad.right)); - mKernel.setArg(idx++, static_cast(outputpad.left)); - mKernel.setArg(idx++, static_cast(outputpad.right)); + unit.kernel->get().setArg(idx++, openCLBuffer(output)); + unit.kernel->get().setArg(idx++, openCLBuffer(mResource->mFilter.get())); + unit.kernel->get().setArg(idx++, openCLBuffer(mResource->mBias.get())); + unit.kernel->get().setArg(idx++, static_cast(mPaddings[1])); + unit.kernel->get().setArg(idx++, static_cast(mPaddings[0])); + unit.kernel->get().setArg(idx++, static_cast(inputWidth)); + unit.kernel->get().setArg(idx++, static_cast(inputHeight)); + unit.kernel->get().setArg(idx++, static_cast(width)); + unit.kernel->get().setArg(idx++, static_cast(height)); + unit.kernel->get().setArg(idx++, static_cast(outChannel)); + unit.kernel->get().setArg(idx++, static_cast(x_blocks)); + unit.kernel->get().setArg(idx++, static_cast(inputpad.left)); + unit.kernel->get().setArg(idx++, static_cast(inputpad.right)); + unit.kernel->get().setArg(idx++, static_cast(outputpad.left)); + unit.kernel->get().setArg(idx++, static_cast(outputpad.right)); #ifdef LOG_VERBOSE MNN_PRINT("end ConvSubgroupBuf onResize !\n"); #endif - mOpenCLBackend->recordKernel3d(mKernel, mGlobalWorkSize, mLocalWorkSize); - mOpenCLBackend->endRecord(mRecording); - return NO_ERROR; -} - -ErrorCode ConvSubgroupBuf::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("Start ConvSubgroupBuf onExecute !\n"); -#endif - -#ifndef ENABLE_OPENCL_TIME_PROFILER -if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("end ConvSubgroupBuf onExecute !\n"); -#endif + mOpenCLBackend->recordKernel3d(unit.kernel , mGlobalWorkSize, mLocalWorkSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1], mLocalWorkSize[2]}; + mUnits.emplace_back(unit); return NO_ERROR; } -#endif - if (mNeedTranse) { -#ifdef ENABLE_OPENCL_TIME_PROFILER - - cl::Event event; - run3DKernelDefault(mTranseKernel, mTranseGlobalWorkSize, mTranseLocalWorkSize, mOpenCLBackend->getOpenCLRuntime(), &event); - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"ConvSubgroup", event}); -#else - run3DKernelDefault(mTranseKernel, mTranseGlobalWorkSize, mTranseLocalWorkSize, mOpenCLBackend->getOpenCLRuntime()); -#endif - } -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalWorkSize, mOpenCLBackend->getOpenCLRuntime(), &event); - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"ConvSubgroupBuf2D", event}); -#else - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalWorkSize, mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end ConvSubgroupBuf onExecute !\n"); -#endif - return NO_ERROR; -} } // namespace OpenCL } // namespace MNN #endif /* MNN_SUPPORT_INTEL_SUBGROUP */ diff --git a/source/backend/opencl/execution/buffer/ConvSubgroupBufExecution.hpp b/source/backend/opencl/execution/buffer/ConvSubgroupBufExecution.hpp index 19eb531ad..7371eba60 100644 --- a/source/backend/opencl/execution/buffer/ConvSubgroupBufExecution.hpp +++ b/source/backend/opencl/execution/buffer/ConvSubgroupBufExecution.hpp @@ -12,27 +12,33 @@ #ifndef ConvSubgroupBufExecution_hpp #define ConvSubgroupBufExecution_hpp -#include "core/Execution.hpp" - -#include -#include -#include -#include -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "backend/opencl/execution/image/CommonExecution.hpp" namespace MNN { namespace OpenCL { +struct ConvSubgroupBufResource { + const Convolution2DCommon* mConv2dCommonParams; + const Convolution2D* mConv2dParams; + std::vector mStrides{1, 1}; + std::vector mDilations{1, 1}; + std::shared_ptr mFilter; + std::shared_ptr mBias; + int mKernelWidth; + int mKernelHeight; + int mOutputChannel; + int mInputChannel; + std::set mBuildOptions; +}; -class ConvSubgroupBuf : public Execution, public CommonExtension { +class ConvSubgroupBuf : public CommonExecution { public: virtual ~ConvSubgroupBuf(); ConvSubgroupBuf(const std::vector& inputs, const std::vector& outputs, const MNN::Op* op, Backend* backend); + ConvSubgroupBuf(std::shared_ptr resource, const MNN::Op* op, Backend* backend); - virtual ErrorCode onResize(const std::vector& inputs, const std::vector& outputs) override; - virtual ErrorCode onExecute(const std::vector& inputs, const std::vector& outputs) override; + virtual ErrorCode onEncode(const std::vector& inputs, const std::vector& outputs) override; + virtual bool onClone(Backend* bn, const Op* op, Execution** dst) override; static bool valid(const Convolution2DCommon* common, const Tensor* input, const Tensor* output, int maxWidth, int maxHeight, int limit = 8192); @@ -40,29 +46,15 @@ class ConvSubgroupBuf : public Execution, public CommonExtension { void transformWeight(const Tensor* weightDest, const Tensor* source); OpenCLBackend* mOpenCLBackend; - const Convolution2DCommon* mConv2dCommonParams; - const Convolution2D* mConv2dParams; - std::vector mStrides{1, 1}; + std::shared_ptr mResource; std::vector mPaddings{0, 0}; - std::vector mDilations{1, 1}; std::vector mGlobalWorkSize{1, 1, 1}; std::vector mLocalWorkSize{1, 1, 1, 1}; std::vector mTranseGlobalWorkSize{1, 1, 1}; std::vector mTranseLocalWorkSize{1, 1, 1, 1}; - std::shared_ptr mFilter; - std::shared_ptr mBias; std::shared_ptr mSource; - cl::Kernel mKernel; - cl::Kernel mTranseKernel; - uint32_t mMaxWorkGroupSize; - std::shared_ptr mKernelBuffer; - std::shared_ptr mBiasBuffer; - int mKernelWidth; - int mKernelHeight; - int mOutputChannel; - int mInputChannel; - std::set mBuildOptions; bool mNeedTranse = false; + }; } // namespace OpenCL diff --git a/source/backend/opencl/execution/buffer/DeconvBufExecution.cpp b/source/backend/opencl/execution/buffer/DeconvBufExecution.cpp index d662c7f4a..21d447038 100644 --- a/source/backend/opencl/execution/buffer/DeconvBufExecution.cpp +++ b/source/backend/opencl/execution/buffer/DeconvBufExecution.cpp @@ -19,17 +19,17 @@ namespace MNN { namespace OpenCL { DeconvBufExecution::DeconvBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend) - : ConvBufCommonExecution(op->main_as_Convolution2D(), backend) { + : ConvBufCommonExecution(op->main_as_Convolution2D(), backend), CommonExecution(backend, op) { mOpenCLBackend = static_cast(backend); const auto *conv2dParams = op->main_as_Convolution2D(); const auto *conv2dCommonParams = conv2dParams->common(); - mConv2dCommonParams = conv2dCommonParams; - mStrides = {conv2dCommonParams->strideY(), conv2dCommonParams->strideX()}; - mDilations = {conv2dCommonParams->dilateY(), conv2dCommonParams->dilateX()}; + mResource->mConv2dCommonParams = conv2dCommonParams; + mResource->mStrides = {conv2dCommonParams->strideY(), conv2dCommonParams->strideX()}; + mResource->mDilations = {conv2dCommonParams->dilateY(), conv2dCommonParams->dilateX()}; int kernelWidth = conv2dCommonParams->kernelX(); int kernelHeight = conv2dCommonParams->kernelY(); - MNN_ASSERT(mStrides[0] > 0 && mStrides[1] > 0); + MNN_ASSERT(mResource->mStrides[0] > 0 && mResource->mStrides[1] > 0); int outputChannel = conv2dCommonParams->outputCount(); const float* filterDataPtr = nullptr; @@ -71,42 +71,57 @@ DeconvBufExecution::DeconvBufExecution(const std::vector &inputs, cons } mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(filterBufferCL, ptrCL); - mFilter.reset(Tensor::createDevice({1, filterImageShape[1], 1, 4 * filterImageShape[0]})); - mOpenCLBackend->onAcquireBuffer(mFilter.get(), Backend::STATIC); + mResource->mFilter.reset(Tensor::createDevice({1, filterImageShape[1], 1, 4 * filterImageShape[0]})); + mOpenCLBackend->onAcquireBuffer(mResource->mFilter.get(), Backend::STATIC); MNN::OpenCL::BufferConvertor bufferConvertor{mOpenCLBackend->getOpenCLRuntime()}; bool needTrans = false; if(mOpenCLBackend->getOpenCLRuntime()->isWeightCpuTransHalf() == false){ needTrans = true; } - bufferConvertor.convertToNC4HW4Buffer(filterBuffer.get(), MNN::OpenCL::CONV2D_FILTER, mFilter.get(), needTrans); - - auto runtime = mOpenCLBackend->getOpenCLRuntime(); - - std::set buildOptions; - std::string kernelName = "deconv_2d"; - buildOptions.emplace("-DBIAS"); + bufferConvertor.convertToNC4HW4Buffer(filterBuffer.get(), MNN::OpenCL::CONV2D_FILTER, mResource->mFilter.get(), needTrans); + mResource->mBuildOptions.emplace("-DBIAS"); if (conv2dCommonParams->relu() == true) { - buildOptions.emplace("-DRELU"); + mResource->mBuildOptions.emplace("-DRELU"); } else if (conv2dCommonParams->relu6() == true) { - buildOptions.emplace("-DRELU6"); + mResource->mBuildOptions.emplace("-DRELU6"); } - buildOptions.emplace("-DUSE_BUFFER"); - mKernel = runtime->buildKernel("deconv_2d", kernelName, buildOptions); + mResource->mBuildOptions.emplace("-DUSE_BUFFER"); } DeconvBufExecution::~DeconvBufExecution() { - mOpenCLBackend->onReleaseBuffer(mFilter.get(), Backend::STATIC); + // Do nothing +} + +DeconvBufExecution::DeconvBufExecution(std::shared_ptr resource, const MNN::Op* op, Backend *backend) + : ConvBufCommonExecution(backend), CommonExecution(backend, op) { + mResource = resource; + const auto *conv2dParams = op->main_as_Convolution2D(); + const auto *conv2dCommonParams = conv2dParams->common(); + mResource->mConv2dParams = conv2dParams; + mResource->mConv2dCommonParams = conv2dCommonParams; +} + +bool DeconvBufExecution::onClone(Backend* bn, const Op* op, Execution** dst) { + if (!mValid) { + return false; + } + if (nullptr == dst) { + return true; + } + *dst = new DeconvBufExecution(mResource, op, bn); + return true; } -ErrorCode DeconvBufExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode DeconvBufExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { + mUnits.resize(1); + auto &unit = mUnits[0]; auto output = outputs[0]; auto input = inputs[0]; std::vector inputShape = tensorShapeFormat(input); std::vector outputShape = tensorShapeFormat(output); - auto runTime = mOpenCLBackend->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); + auto runtime = mOpenCLBackend->getOpenCLRuntime(); const int outputBatch = outputShape.at(0); const int outputHeight = outputShape.at(1); @@ -116,25 +131,24 @@ ErrorCode DeconvBufExecution::onResize(const std::vector &inputs, cons const int inputChannels = inputShape.at(3); const int outputChannelBlocks = UP_DIV(outputChannels, 4); - const int strideHeight = mStrides[0]; - const int strideWidth = mStrides[1]; + const int strideHeight = mResource->mStrides[0]; + const int strideWidth = mResource->mStrides[1]; - auto pad = ConvolutionCommon::convolutionTransposePad(input, output, mConv2dCommonParams); + auto pad = ConvolutionCommon::convolutionTransposePad(input, output, mResource->mConv2dCommonParams); const int paddingHeight = pad.second; const int paddingWidth = pad.first; - auto ky = mConv2dCommonParams->kernelY(); - auto kx = mConv2dCommonParams->kernelX(); + auto ky = mResource->mConv2dCommonParams->kernelY(); + auto kx = mResource->mConv2dCommonParams->kernelX(); auto kernelSize = kx * ky; const int transPadH = ky - 1 - pad.second; const int transPadW = kx - 1 - pad.first; - const int alignHeight = mStrides[0] - 1 - transPadH; - const int alignWidth = mStrides[1] - 1 - transPadW; + const int alignHeight = mResource->mStrides[0] - 1 - transPadH; + const int alignWidth = mResource->mStrides[1] - 1 - transPadW; - auto runtime = mOpenCLBackend->getOpenCLRuntime(); - auto kernel = &mKernel; - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + unit.kernel = runtime->buildKernel("deconv_2d", "deconv_2d", mResource->mBuildOptions); + auto maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); mGWS = {static_cast(outputChannelBlocks), static_cast(outputWidth), static_cast(outputHeight * outputBatch)}; @@ -146,59 +160,28 @@ ErrorCode DeconvBufExecution::onResize(const std::vector &inputs, cons int kernelShape[2] = {ky, kx}; uint32_t idx = 0; - kernel->setArg(idx++, mGWS[0]); - kernel->setArg(idx++, mGWS[1]); - kernel->setArg(idx++, mGWS[2]); - kernel->setArg(idx++, openCLBuffer(input)); - kernel->setArg(idx++, openCLBuffer(mFilter.get())); - kernel->setArg(idx++, openCLBuffer(mBias.get())); - kernel->setArg(idx++, openCLBuffer(output)); - kernel->setArg(idx++, sizeof(inputImageShape), inputImageShape); - kernel->setArg(idx++, sizeof(outputImageShape), outputImageShape); - kernel->setArg(idx++, sizeof(strideShape), strideShape); - kernel->setArg(idx++, sizeof(alignShape), alignShape); - kernel->setArg(idx++, sizeof(paddingShape), paddingShape); - kernel->setArg(idx++, sizeof(kernelShape), kernelShape); - kernel->setArg(idx++, static_cast(kernelSize)); - kernel->setArg(idx++, static_cast(UP_DIV(inputChannels, 4))); - kernel->setArg(idx++, static_cast(outputChannelBlocks)); + unit.kernel->get().setArg(idx++, mGWS[0]); + unit.kernel->get().setArg(idx++, mGWS[1]); + unit.kernel->get().setArg(idx++, mGWS[2]); + unit.kernel->get().setArg(idx++, openCLBuffer(input)); + unit.kernel->get().setArg(idx++, openCLBuffer(mResource->mFilter.get())); + unit.kernel->get().setArg(idx++, openCLBuffer(mResource->mBias.get())); + unit.kernel->get().setArg(idx++, openCLBuffer(output)); + unit.kernel->get().setArg(idx++, sizeof(inputImageShape), inputImageShape); + unit.kernel->get().setArg(idx++, sizeof(outputImageShape), outputImageShape); + unit.kernel->get().setArg(idx++, sizeof(strideShape), strideShape); + unit.kernel->get().setArg(idx++, sizeof(alignShape), alignShape); + unit.kernel->get().setArg(idx++, sizeof(paddingShape), paddingShape); + unit.kernel->get().setArg(idx++, sizeof(kernelShape), kernelShape); + unit.kernel->get().setArg(idx++, static_cast(kernelSize)); + unit.kernel->get().setArg(idx++, static_cast(UP_DIV(inputChannels, 4))); + unit.kernel->get().setArg(idx++, static_cast(outputChannelBlocks)); std::string name = "deconv2d_buf"; - mLWS = localWS3DDefault(mGWS, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), name, mKernel).first; - mOpenCLBackend->recordKernel3d(mKernel, mGWS, mLWS); - mOpenCLBackend->endRecord(mRecording); - return NO_ERROR; -} - -ErrorCode DeconvBufExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("Start DeconvBufExecution onExecute... \n"); -#endif - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGWS, mLWS, - mOpenCLBackend->getOpenCLRuntime(), - &event); - - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"DeconvBuf", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End DeconvBufExecution onExecute... \n"); -#endif - return NO_ERROR; - } - run3DKernelDefault(mKernel, mGWS, mLWS, - mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("End DeconvBufExecution onExecute... \n"); -#endif + mLWS = localWS3DDefault(mGWS, maxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), name, unit.kernel).first; + mOpenCLBackend->recordKernel3d(unit.kernel, mGWS, mLWS); + unit.globalWorkSize = {mGWS[0], mGWS[1], mGWS[2]}; + unit.localWorkSize = {mLWS[0], mLWS[1], mLWS[2]}; return NO_ERROR; } diff --git a/source/backend/opencl/execution/buffer/DeconvBufExecution.hpp b/source/backend/opencl/execution/buffer/DeconvBufExecution.hpp index daf63d448..e7b83f25a 100644 --- a/source/backend/opencl/execution/buffer/DeconvBufExecution.hpp +++ b/source/backend/opencl/execution/buffer/DeconvBufExecution.hpp @@ -15,24 +15,18 @@ namespace MNN { namespace OpenCL { -class DeconvBufExecution : public ConvBufCommonExecution { +class DeconvBufExecution : public ConvBufCommonExecution, public CommonExecution { public: DeconvBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend); + DeconvBufExecution(std::shared_ptr resource, const MNN::Op* op, Backend* backend); virtual ~DeconvBufExecution(); - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; + virtual bool onClone(Backend* bn, const Op* op, Execution** dst) override; private: - const Convolution2DCommon *mConv2dCommonParams; std::vector mLWS{0, 0, 0, 0}; std::vector mGWS{0, 0, 0, 0}; - std::vector mStrides{0, 0}; - std::vector mDilations{0, 0}; - std::shared_ptr mFilter; - cl::Kernel mKernel; - uint32_t mMaxWorkGroupSize; - OpenCLBackend *mOpenCLBackend; }; } // namespace OpenCL diff --git a/source/backend/opencl/execution/buffer/DepthwiseConvBufExecution.cpp b/source/backend/opencl/execution/buffer/DepthwiseConvBufExecution.cpp index 05d393a6a..2937f4eaa 100644 --- a/source/backend/opencl/execution/buffer/DepthwiseConvBufExecution.cpp +++ b/source/backend/opencl/execution/buffer/DepthwiseConvBufExecution.cpp @@ -10,23 +10,22 @@ #include "backend/opencl/execution/buffer/DepthwiseConvBufExecution.hpp" #include "backend/opencl/execution/buffer/DepthwiseConvSubgroupBufExecution.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" #include "core/ConvolutionCommon.hpp" namespace MNN { namespace OpenCL { DepthwiseConvBufExecution::DepthwiseConvBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend) - : ConvBufCommonExecution(op->main_as_Convolution2D(), backend) { + : ConvBufCommonExecution(op->main_as_Convolution2D(), backend), CommonExecution(backend, op) { mOpenCLBackend = static_cast(backend); - mCon2dParams = op->main_as_Convolution2D(); - mConv2dCommonParams = mCon2dParams->common(); - mStrides = {mConv2dCommonParams->strideY(), mConv2dCommonParams->strideX()}; - mDilations = {mConv2dCommonParams->dilateY(), mConv2dCommonParams->dilateX()}; + mResource->mConv2dParams = op->main_as_Convolution2D(); + mResource->mConv2dCommonParams = mResource->mConv2dParams->common(); + mResource->mStrides = {mResource->mConv2dCommonParams->strideY(), mResource->mConv2dCommonParams->strideX()}; + mResource->mDilations = {mResource->mConv2dCommonParams->dilateY(), mResource->mConv2dCommonParams->dilateX()}; - int kernelWidth = mConv2dCommonParams->kernelX(); - int kernelHeight = mConv2dCommonParams->kernelY(); - int outputChannel = mConv2dCommonParams->outputCount(); + int kernelWidth = mResource->mConv2dCommonParams->kernelX(); + int kernelHeight = mResource->mConv2dCommonParams->kernelY(); + int outputChannel = mResource->mConv2dCommonParams->outputCount(); std::vector filterShape{1, outputChannel, kernelHeight, kernelWidth}; std::vector filterImageShape{(int)kernelHeight * kernelWidth, (int)UP_DIV(outputChannel, 4)}; @@ -35,9 +34,9 @@ DepthwiseConvBufExecution::DepthwiseConvBufExecution(const std::vector const float* filterDataPtr = nullptr; int filterDataSize = 0; std::shared_ptr quanCommon; - ConvolutionCommon::getConvParameters(&quanCommon, backend, mCon2dParams, &filterDataPtr, &filterDataSize); + ConvolutionCommon::getConvParameters(&quanCommon, backend, mResource->mConv2dParams, &filterDataPtr, &filterDataSize); - mFilter.reset(Tensor::createDevice({1, ROUND_UP(filterImageShape[1], 2)/*for kernel C8 read*/, 1, 4 * filterImageShape[0]})); + mResource->mFilter.reset(Tensor::createDevice({1, ROUND_UP(filterImageShape[1], 2)/*for kernel C8 read*/, 1, 4 * filterImageShape[0]})); std::shared_ptr filterBuffer(Tensor::createDevice(filterShape)); int buffer_size = filterBuffer->elementSize(); @@ -63,47 +62,60 @@ DepthwiseConvBufExecution::DepthwiseConvBufExecution(const std::vector } mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(filterBufferCL, ptrCL); - mOpenCLBackend->onAcquireBuffer(mFilter.get(), Backend::STATIC); + mOpenCLBackend->onAcquireBuffer(mResource->mFilter.get(), Backend::STATIC); MNN::OpenCL::BufferConvertor bufferConvertor{mOpenCLBackend->getOpenCLRuntime()}; bool needTrans = false; if(mOpenCLBackend->getOpenCLRuntime()->isWeightCpuTransHalf() == false){ needTrans = true; } - bufferConvertor.convertToNC4HW4Buffer(filterBuffer.get(), MNN::OpenCL::DW_CONV2D_FILTER, mFilter.get(), needTrans); - auto runtime = mOpenCLBackend->getOpenCLRuntime(); - std::string kernelName = "depthwise_conv2d_c4h1w2"; - if (mConv2dCommonParams->strideX() == 1 && mConv2dCommonParams->strideY() == 1 && - mConv2dCommonParams->dilateX() == 1 && mConv2dCommonParams->dilateY() == 1) { - mStride_1 = true; - } - if(mStride_1) { - kernelName = "depthwise_conv2d_s1_c4h1w4"; - } + bufferConvertor.convertToNC4HW4Buffer(filterBuffer.get(), MNN::OpenCL::DW_CONV2D_FILTER, mResource->mFilter.get(), needTrans); - if (mConv2dCommonParams->relu() == true) { - mBuildOptions.emplace("-DRELU"); - } else if (mConv2dCommonParams->relu6() == true) { - mBuildOptions.emplace("-DRELU6"); + if (mResource->mConv2dCommonParams->relu() == true) { + mResource->mBuildOptions.emplace("-DRELU"); + } else if (mResource->mConv2dCommonParams->relu6() == true) { + mResource->mBuildOptions.emplace("-DRELU6"); } - - mKernel = runtime->buildKernel("depthwise_conv2d_buf", kernelName, mBuildOptions); - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); } DepthwiseConvBufExecution::~DepthwiseConvBufExecution() { - mOpenCLBackend->onReleaseBuffer(mFilter.get(), Backend::STATIC); + // Do nothing } -ErrorCode DepthwiseConvBufExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +DepthwiseConvBufExecution::DepthwiseConvBufExecution(std::shared_ptr resource, const MNN::Op* op, Backend *backend) + : ConvBufCommonExecution(backend), CommonExecution(backend, op) { + mResource = resource; + const auto *conv2dParams = op->main_as_Convolution2D(); + const auto *conv2dCommonParams = conv2dParams->common(); + mResource->mConv2dParams = conv2dParams; + mResource->mConv2dCommonParams = conv2dCommonParams; +} + +bool DepthwiseConvBufExecution::onClone(Backend* bn, const Op* op, Execution** dst) { + if (!mValid) { + return false; + } + if (nullptr == dst) { + return true; + } + *dst = new DepthwiseConvBufExecution(mResource, op, bn); + return true; +} + +ErrorCode DepthwiseConvBufExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { + mUnits.resize(1); + auto &unit = mUnits[0]; auto input = inputs[0]; auto output = outputs[0]; std::vector inputShape = tensorShapeFormat(input); std::vector outputShape = tensorShapeFormat(output); auto runTime = mOpenCLBackend->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); + if (mResource->mConv2dCommonParams->strideX() == 1 && mResource->mConv2dCommonParams->strideY() == 1 && + mResource->mConv2dCommonParams->dilateX() == 1 && mResource->mConv2dCommonParams->dilateY() == 1) { + mStride_1 = true; + } - auto padding = ConvolutionCommon::convolutionPad(input, output, mConv2dCommonParams); + auto padding = ConvolutionCommon::convolutionPad(input, output, mResource->mConv2dCommonParams); mPaddings[0] = padding.second;//padY mPaddings[1] = padding.first;//padX @@ -116,15 +128,15 @@ ErrorCode DepthwiseConvBufExecution::onResize(const std::vector &input const int inputChannels = inputShape.at(3); const int inputChannelBlocks = UP_DIV(inputChannels, 4); - const int filterHeight = mCon2dParams->common()->kernelY(); - const int filterWidth = mCon2dParams->common()->kernelX(); + const int filterHeight = mResource->mConv2dParams->common()->kernelY(); + const int filterWidth = mResource->mConv2dParams->common()->kernelX(); int inputImageShape[2] = {inputHeight, inputWidth}; int outputImageShape[2] = {outputHeight, outputWidth}; - int strideShape[2] = {mStrides[0], mStrides[1]}; + int strideShape[2] = {mResource->mStrides[0], mResource->mStrides[1]}; int paddingShape[2] = {mPaddings[0], mPaddings[1]}; int kernelShape[2] = {filterHeight, filterWidth}; - int dilationShape[2] = {mDilations[0], mDilations[1]}; + int dilationShape[2] = {mResource->mDilations[0], mResource->mDilations[1]}; if(mStride_1) { // {"depthwise_conv2d_s1_c4h1w4", "depthwise_conv2d_s1_c8h1w4", "depthwise_conv2d_s1_c8h1w2"}; @@ -155,33 +167,33 @@ ErrorCode DepthwiseConvBufExecution::onResize(const std::vector &input actual_kernel = 1; } - cl::Kernel kernel[total_kernel]; + std::shared_ptr kernel[total_kernel]; std::vector globalWorkSize[total_kernel]; std::vector localWorkSize[total_kernel]; std::pair min_cost(INT_MAX, 0);//(min_time, min_index) for(int knl_idx = 0; knl_idx < actual_kernel; knl_idx++) { - kernel[knl_idx] = mOpenCLBackend->getOpenCLRuntime()->buildKernel("depthwise_conv2d_buf", kernelName[knl_idx], mBuildOptions); + kernel[knl_idx] = mOpenCLBackend->getOpenCLRuntime()->buildKernel("depthwise_conv2d_buf", kernelName[knl_idx], mResource->mBuildOptions); uint32_t maxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(kernel[knl_idx])); globalWorkSize[knl_idx] = {static_cast(UP_DIV(outputShape.at(3), itemC[knl_idx]) * UP_DIV(outputShape.at(2), itemW[knl_idx])), static_cast(outputShape.at(0) * UP_DIV(outputShape.at(1), itemH[knl_idx]))}; uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= kernel[knl_idx].setArg(idx++, globalWorkSize[knl_idx][0]); - ret |= kernel[knl_idx].setArg(idx++, globalWorkSize[knl_idx][1]); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(input)); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(mFilter.get())); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(mBias.get())); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(output)); - ret |= kernel[knl_idx].setArg(idx++, sizeof(inputImageShape), inputImageShape); - ret |= kernel[knl_idx].setArg(idx++, static_cast(inputChannels)); - ret |= kernel[knl_idx].setArg(idx++, sizeof(outputImageShape), outputImageShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(kernelShape), kernelShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(paddingShape), paddingShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(dilationShape), dilationShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(strideShape), strideShape); - ret |= kernel[knl_idx].setArg(idx++, UP_DIV(outputWidth, itemW[knl_idx])); - ret |= kernel[knl_idx].setArg(idx++, UP_DIV(outputChannel, 4)); + ret |= kernel[knl_idx]->get().setArg(idx++, globalWorkSize[knl_idx][0]); + ret |= kernel[knl_idx]->get().setArg(idx++, globalWorkSize[knl_idx][1]); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(input)); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(mResource->mFilter.get())); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(mResource->mBias.get())); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(output)); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(inputImageShape), inputImageShape); + ret |= kernel[knl_idx]->get().setArg(idx++, static_cast(inputChannels)); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(outputImageShape), outputImageShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(kernelShape), kernelShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(paddingShape), paddingShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(dilationShape), dilationShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(strideShape), strideShape); + ret |= kernel[knl_idx]->get().setArg(idx++, UP_DIV(outputWidth, itemW[knl_idx])); + ret |= kernel[knl_idx]->get().setArg(idx++, UP_DIV(outputChannel, 4)); MNN_CHECK_CL_SUCCESS(ret, "setArg DepthwiseConvBufExecution Stride_1 Kernel Select"); std::pair, int> retTune; @@ -196,25 +208,25 @@ ErrorCode DepthwiseConvBufExecution::onResize(const std::vector &input int min_index = min_cost.second; mGlobalWorkSize = {globalWorkSize[min_index][0], globalWorkSize[min_index][1]}; - mKernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("depthwise_conv2d_buf", kernelName[min_index], mBuildOptions); + unit.kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("depthwise_conv2d_buf", kernelName[min_index], mResource->mBuildOptions); uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, openCLBuffer(input)); - ret |= mKernel.setArg(idx++, openCLBuffer(mFilter.get())); - ret |= mKernel.setArg(idx++, openCLBuffer(mBias.get())); - ret |= mKernel.setArg(idx++, openCLBuffer(output)); - ret |= mKernel.setArg(idx++, sizeof(inputImageShape), inputImageShape); - ret |= mKernel.setArg(idx++, static_cast(inputChannels)); - ret |= mKernel.setArg(idx++, sizeof(outputImageShape), outputImageShape); - ret |= mKernel.setArg(idx++, sizeof(kernelShape), kernelShape); - ret |= mKernel.setArg(idx++, sizeof(paddingShape), paddingShape); - ret |= mKernel.setArg(idx++, sizeof(dilationShape), dilationShape); - ret |= mKernel.setArg(idx++, sizeof(strideShape), strideShape); - ret |= mKernel.setArg(idx++, UP_DIV(outputWidth, itemW[min_index])); - ret |= mKernel.setArg(idx++, UP_DIV(outputChannel, 4)); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(input)); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(mResource->mFilter.get())); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(mResource->mBias.get())); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(idx++, sizeof(inputImageShape), inputImageShape); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputChannels)); + ret |= unit.kernel->get().setArg(idx++, sizeof(outputImageShape), outputImageShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(kernelShape), kernelShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(paddingShape), paddingShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(dilationShape), dilationShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(strideShape), strideShape); + ret |= unit.kernel->get().setArg(idx++, UP_DIV(outputWidth, itemW[min_index])); + ret |= unit.kernel->get().setArg(idx++, UP_DIV(outputChannel, 4)); MNN_CHECK_CL_SUCCESS(ret, "setArg DepthwiseConvBufExecution Stride_1"); //printf("DepthwiseConvBufs1 %d, %d %d, %d %d, %d %d\n", min_index, mGlobalWorkSize[0], mGlobalWorkSize[1], mLocalWorkSize[0], mLocalWorkSize[1], outputChannel, outputWidth); @@ -231,33 +243,33 @@ ErrorCode DepthwiseConvBufExecution::onResize(const std::vector &input actual_kernel = 1; } - cl::Kernel kernel[total_kernel]; + std::shared_ptr kernel[total_kernel]; std::vector globalWorkSize[total_kernel]; std::vector localWorkSize[total_kernel]; std::pair min_cost(INT_MAX, 0);//(min_time, min_index) for(int knl_idx = 0; knl_idx < actual_kernel; knl_idx++) { - kernel[knl_idx] = mOpenCLBackend->getOpenCLRuntime()->buildKernel("depthwise_conv2d_buf", kernelName[knl_idx], mBuildOptions); + kernel[knl_idx] = mOpenCLBackend->getOpenCLRuntime()->buildKernel("depthwise_conv2d_buf", kernelName[knl_idx], mResource->mBuildOptions); uint32_t maxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(kernel[knl_idx])); globalWorkSize[knl_idx] = {static_cast(UP_DIV(outputShape.at(3), itemC[knl_idx]) * UP_DIV(outputShape.at(2), itemW[knl_idx])), static_cast(outputShape.at(0) * outputShape.at(1))}; uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= kernel[knl_idx].setArg(idx++, globalWorkSize[knl_idx][0]); - ret |= kernel[knl_idx].setArg(idx++, globalWorkSize[knl_idx][1]); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(input)); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(mFilter.get())); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(mBias.get())); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(output)); - ret |= kernel[knl_idx].setArg(idx++, sizeof(inputImageShape), inputImageShape); - ret |= kernel[knl_idx].setArg(idx++, static_cast(inputChannels)); - ret |= kernel[knl_idx].setArg(idx++, sizeof(outputImageShape), outputImageShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(kernelShape), kernelShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(paddingShape), paddingShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(dilationShape), dilationShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(strideShape), strideShape); - ret |= kernel[knl_idx].setArg(idx++, UP_DIV(outputWidth, itemW[knl_idx])); - ret |= kernel[knl_idx].setArg(idx++, UP_DIV(outputChannel, 4)); + ret |= kernel[knl_idx]->get().setArg(idx++, globalWorkSize[knl_idx][0]); + ret |= kernel[knl_idx]->get().setArg(idx++, globalWorkSize[knl_idx][1]); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(input)); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(mResource->mFilter.get())); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(mResource->mBias.get())); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(output)); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(inputImageShape), inputImageShape); + ret |= kernel[knl_idx]->get().setArg(idx++, static_cast(inputChannels)); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(outputImageShape), outputImageShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(kernelShape), kernelShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(paddingShape), paddingShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(dilationShape), dilationShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(strideShape), strideShape); + ret |= kernel[knl_idx]->get().setArg(idx++, UP_DIV(outputWidth, itemW[knl_idx])); + ret |= kernel[knl_idx]->get().setArg(idx++, UP_DIV(outputChannel, 4)); MNN_CHECK_CL_SUCCESS(ret, "setArg DepthwiseConvBufExecution Kernel Select"); std::pair, int> retTune; @@ -272,62 +284,33 @@ ErrorCode DepthwiseConvBufExecution::onResize(const std::vector &input int min_index = min_cost.second; mGlobalWorkSize = {globalWorkSize[min_index][0], globalWorkSize[min_index][1]}; - mKernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("depthwise_conv2d_buf", kernelName[min_index], mBuildOptions); + unit.kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("depthwise_conv2d_buf", kernelName[min_index], mResource->mBuildOptions); uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, openCLBuffer(input)); - ret |= mKernel.setArg(idx++, openCLBuffer(mFilter.get())); - ret |= mKernel.setArg(idx++, openCLBuffer(mBias.get())); - ret |= mKernel.setArg(idx++, openCLBuffer(output)); - ret |= mKernel.setArg(idx++, sizeof(inputImageShape), inputImageShape); - ret |= mKernel.setArg(idx++, static_cast(inputChannels)); - ret |= mKernel.setArg(idx++, sizeof(outputImageShape), outputImageShape); - ret |= mKernel.setArg(idx++, sizeof(kernelShape), kernelShape); - ret |= mKernel.setArg(idx++, sizeof(paddingShape), paddingShape); - ret |= mKernel.setArg(idx++, sizeof(dilationShape), dilationShape); - ret |= mKernel.setArg(idx++, sizeof(strideShape), strideShape); - ret |= mKernel.setArg(idx++, UP_DIV(outputWidth, itemW[min_index])); - ret |= mKernel.setArg(idx++, UP_DIV(outputChannel, 4)); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(input)); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(mResource->mFilter.get())); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(mResource->mBias.get())); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(idx++, sizeof(inputImageShape), inputImageShape); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputChannels)); + ret |= unit.kernel->get().setArg(idx++, sizeof(outputImageShape), outputImageShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(kernelShape), kernelShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(paddingShape), paddingShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(dilationShape), dilationShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(strideShape), strideShape); + ret |= unit.kernel->get().setArg(idx++, UP_DIV(outputWidth, itemW[min_index])); + ret |= unit.kernel->get().setArg(idx++, UP_DIV(outputChannel, 4)); MNN_CHECK_CL_SUCCESS(ret, "setArg DepthwiseConvBufExecution"); //printf("DepthwiseConvBuf!! %d, %d %d, %d %d, %d %d\n", min_index, mGlobalWorkSize[0], mGlobalWorkSize[1], mLocalWorkSize[0], mLocalWorkSize[1], outputChannel, outputWidth); } - mOpenCLBackend->recordKernel2d(mKernel, mGlobalWorkSize, mLocalWorkSize); - mOpenCLBackend->endRecord(mRecording); - return NO_ERROR; -} - -ErrorCode DepthwiseConvBufExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("start DepthwiseConvBufExecution onExecute !\n"); -#endif - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - runKernel2D(mKernel, mGlobalWorkSize, mLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime(), - &event); - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"DepthwiseConvBuf", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End DepthwiseConvBufExecution onExecute... \n"); -#endif - return NO_ERROR; - } - runKernel2D(mKernel, mGlobalWorkSize, mLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end DepthwiseConvBufExecution onExecute !\n"); -#endif + mOpenCLBackend->recordKernel2d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1]}; return NO_ERROR; } diff --git a/source/backend/opencl/execution/buffer/DepthwiseConvBufExecution.hpp b/source/backend/opencl/execution/buffer/DepthwiseConvBufExecution.hpp index 0db82e000..aeeb208d4 100644 --- a/source/backend/opencl/execution/buffer/DepthwiseConvBufExecution.hpp +++ b/source/backend/opencl/execution/buffer/DepthwiseConvBufExecution.hpp @@ -15,27 +15,20 @@ namespace MNN { namespace OpenCL { -class DepthwiseConvBufExecution : public ConvBufCommonExecution { +class DepthwiseConvBufExecution : public ConvBufCommonExecution, public CommonExecution { public: DepthwiseConvBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend); + DepthwiseConvBufExecution(std::shared_ptr resource, const MNN::Op* op, Backend* backend); virtual ~DepthwiseConvBufExecution(); - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; + virtual bool onClone(Backend* bn, const Op* op, Execution** dst) override; std::pair, int> DepthwiseConvBufLwsTune(const cl::Kernel &kernel, const std::vector &gws, const std::string &kernelName, const uint32_t maxWorkGroupSize); private: - const Convolution2DCommon *mConv2dCommonParams; - const Convolution2D *mCon2dParams; - std::vector mStrides{1, 1}; std::vector mPaddings{0, 0}; - std::vector mDilations{1, 1}; - std::shared_ptr mFilter; - cl::Kernel mKernel; - uint32_t mMaxWorkGroupSize; std::vector mGlobalWorkSize{1, 1, 1}; std::vector mLocalWorkSize{1, 1, 1, 1}; bool mStride_1 = false; - std::set mBuildOptions; }; } // namespace OpenCL diff --git a/source/backend/opencl/execution/buffer/DepthwiseConvSubgroupBufExecution.cpp b/source/backend/opencl/execution/buffer/DepthwiseConvSubgroupBufExecution.cpp index 03bf7beae..6b62c1286 100644 --- a/source/backend/opencl/execution/buffer/DepthwiseConvSubgroupBufExecution.cpp +++ b/source/backend/opencl/execution/buffer/DepthwiseConvSubgroupBufExecution.cpp @@ -17,21 +17,21 @@ namespace MNN { namespace OpenCL { DepthwiseConvSubgroupBufExecution::DepthwiseConvSubgroupBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend) - : ConvBufCommonExecution(op->main_as_Convolution2D(), backend) { + : ConvBufCommonExecution(op->main_as_Convolution2D(), backend), CommonExecution(backend, op) { mOpenCLBackend = static_cast(backend); - mCon2dParams = op->main_as_Convolution2D(); - mConv2dCommonParams = mCon2dParams->common(); - mStrides = {mConv2dCommonParams->strideY(), mConv2dCommonParams->strideX()}; - mDilations = {mConv2dCommonParams->dilateY(), mConv2dCommonParams->dilateX()}; + mResource->mConv2dParams = op->main_as_Convolution2D(); + mResource->mConv2dCommonParams = mResource->mConv2dParams->common(); + mResource->mStrides = {mResource->mConv2dCommonParams->strideY(), mResource->mConv2dCommonParams->strideX()}; + mResource->mDilations = {mResource->mConv2dCommonParams->dilateY(), mResource->mConv2dCommonParams->dilateX()}; - int kernelWidth = mConv2dCommonParams->kernelX(); - int kernelHeight = mConv2dCommonParams->kernelY(); - int outputChannel = mConv2dCommonParams->outputCount(); + int kernelWidth = mResource->mConv2dCommonParams->kernelX(); + int kernelHeight = mResource->mConv2dCommonParams->kernelY(); + int outputChannel = mResource->mConv2dCommonParams->outputCount(); { // create tensor for intel filter - mFilter.reset(Tensor::createDevice(std::vector{1, UP_DIV(outputChannel, 16), kernelWidth * kernelHeight, 16})); - auto res = mOpenCLBackend->onAcquireBuffer(mFilter.get(), Backend::STATIC); + mResource->mFilter.reset(Tensor::createDevice(std::vector{1, UP_DIV(outputChannel, 16), kernelWidth * kernelHeight, 16})); + auto res = mOpenCLBackend->onAcquireBuffer(mResource->mFilter.get(), Backend::STATIC); cl_int ret_code; if (!res) { mValid = false; @@ -40,7 +40,7 @@ DepthwiseConvSubgroupBufExecution::DepthwiseConvSubgroupBufExecution(const std:: const float *filterDataPtr = nullptr; int filterDataSize = 0; std::shared_ptr quanCommon; - ConvolutionCommon::getConvParameters(&quanCommon, backend, mCon2dParams, &filterDataPtr, &filterDataSize); + ConvolutionCommon::getConvParameters(&quanCommon, backend, mResource->mConv2dParams, &filterDataPtr, &filterDataSize); if (filterDataPtr != nullptr) { std::shared_ptr sourceWeight(Tensor::create( std::vector{1, outputChannel, kernelWidth, kernelHeight}, @@ -57,7 +57,7 @@ DepthwiseConvSubgroupBufExecution::DepthwiseConvSubgroupBufExecution(const std:: buffer_size *= sizeof(float); } - cl::Buffer &weightBuffer = *(cl::Buffer *)mFilter->buffer().device; + cl::Buffer &weightBuffer = *(cl::Buffer *)mResource->mFilter->buffer().device; auto runTime = mOpenCLBackend->getOpenCLRuntime(); auto queue = runTime->commandQueue(); @@ -80,7 +80,7 @@ DepthwiseConvSubgroupBufExecution::DepthwiseConvSubgroupBufExecution(const std:: } } { - int biasSize = mCon2dParams->common()->outputCount(); + int biasSize = mResource->mConv2dParams->common()->outputCount(); int buffer_size = ROUND_UP(biasSize, 16); // pack to 16 if (mOpenCLBackend->getOpenCLRuntime()->isSupportedFP16()) { buffer_size *= sizeof(half_float::half); @@ -88,17 +88,17 @@ DepthwiseConvSubgroupBufExecution::DepthwiseConvSubgroupBufExecution(const std:: buffer_size *= sizeof(float); } - mBias.reset(Tensor::createDevice({1, 1, 1, ROUND_UP(biasSize, 16)})); - backend->onAcquireBuffer(mBias.get(), Backend::STATIC); - cl::Buffer &biasBuffer = openCLBuffer(mBias.get()); + mResource->mBias.reset(Tensor::createDevice({1, 1, 1, ROUND_UP(biasSize, 16)})); + backend->onAcquireBuffer(mResource->mBias.get(), Backend::STATIC); + cl::Buffer &biasBuffer = openCLBuffer(mResource->mBias.get()); cl_int res; auto biasPtrCL = mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueMapBuffer( biasBuffer, true, CL_MAP_WRITE, 0, buffer_size, nullptr, nullptr, &res); if (biasPtrCL != nullptr && res == CL_SUCCESS) { ::memset(biasPtrCL, 0, buffer_size); - if (nullptr != mCon2dParams->bias()) { - const float *biasDataPtr = mCon2dParams->bias()->data(); + if (nullptr != mResource->mConv2dParams->bias()) { + const float *biasDataPtr = mResource->mConv2dParams->bias()->data(); if (mOpenCLBackend->getOpenCLRuntime()->isSupportedFP16()) { for (int i = 0; i < biasSize; i++) { ((half_float::half *)biasPtrCL)[i] = (half_float::half)(biasDataPtr[i]); @@ -113,13 +113,13 @@ DepthwiseConvSubgroupBufExecution::DepthwiseConvSubgroupBufExecution(const std:: mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(biasBuffer, biasPtrCL); } - if (mConv2dCommonParams->relu() == true) { - mBuildOptions.emplace("-DRELU"); - } else if (mConv2dCommonParams->relu6() == true) { - mBuildOptions.emplace("-DRELU6"); + if (mResource->mConv2dCommonParams->relu() == true) { + mResource->mBuildOptions.emplace("-DRELU"); + } else if (mResource->mConv2dCommonParams->relu6() == true) { + mResource->mBuildOptions.emplace("-DRELU6"); } int type_size = mOpenCLBackend->getOpenCLRuntime()->isSupportedFP16() ? 2 : 4; - mBuildOptions.emplace("-DTYPE_SIZE=" + std::to_string(type_size)); + mResource->mBuildOptions.emplace("-DTYPE_SIZE=" + std::to_string(type_size)); } void DepthwiseConvSubgroupBufExecution::transformWeight(const Tensor *weightDest, const Tensor *source) { @@ -143,19 +143,39 @@ void DepthwiseConvSubgroupBufExecution::transformWeight(const Tensor *weightDest } DepthwiseConvSubgroupBufExecution::~DepthwiseConvSubgroupBufExecution() { - mOpenCLBackend->onReleaseBuffer(mFilter.get(), Backend::STATIC); - mOpenCLBackend->onReleaseBuffer(mBias.get(), Backend::STATIC); + // Do nothing } -ErrorCode DepthwiseConvSubgroupBufExecution::onResize(const std::vector &inputs, const std::vector &outputs) { + +DepthwiseConvSubgroupBufExecution::DepthwiseConvSubgroupBufExecution(std::shared_ptr resource, const MNN::Op* op, Backend *backend) : ConvBufCommonExecution(backend), CommonExecution(backend, op) { + mResource = resource; + mOpenCLBackend = static_cast(backend); + const auto *conv2dParams = op->main_as_Convolution2D(); + const auto *conv2dCommonParams = conv2dParams->common(); + mResource->mConv2dParams = conv2dParams; + mResource->mConv2dCommonParams = conv2dCommonParams; +} + +bool DepthwiseConvSubgroupBufExecution::onClone(Backend* bn, const Op* op, Execution** dst) { + if (!mValid) { + return false; + } + if (nullptr == dst) { + return true; + } + *dst = new DepthwiseConvSubgroupBufExecution(mResource, op, bn); + return true; +} + +ErrorCode DepthwiseConvSubgroupBufExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { + mUnits.clear(); auto input = inputs[0]; auto output = outputs[0]; std::vector inputShape = tensorShapeFormat(input); std::vector outputShape = tensorShapeFormat(output); auto runTime = mOpenCLBackend->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); - auto padding = ConvolutionCommon::convolutionPad(input, output, mConv2dCommonParams); + auto padding = ConvolutionCommon::convolutionPad(input, output, mResource->mConv2dCommonParams); mPaddings[0] = padding.second;//padY mPaddings[1] = padding.first;//padX @@ -168,21 +188,21 @@ ErrorCode DepthwiseConvSubgroupBufExecution::onResize(const std::vectorcommon()->kernelY(); - const int filterWidth = mCon2dParams->common()->kernelX(); + const int filterHeight = mResource->mConv2dParams->common()->kernelY(); + const int filterWidth = mResource->mConv2dParams->common()->kernelX(); int inputImageShape[2] = {inputHeight, inputWidth}; int outputImageShape[2] = {outputHeight, outputWidth}; - int strideShape[2] = {mStrides[0], mStrides[1]}; + int strideShape[2] = {mResource->mStrides[0], mResource->mStrides[1]}; int paddingShape[2] = {mPaddings[0], mPaddings[1]}; int kernelShape[2] = {filterHeight, filterWidth}; - int dilationShape[2] = {mDilations[0], mDilations[1]}; + int dilationShape[2] = {mResource->mDilations[0], mResource->mDilations[1]}; auto inputpad = TensorUtils::getDescribe(input)->mPads; auto outputpad = TensorUtils::getDescribe(output)->mPads; int input_c_pack = TensorUtils::getTensorChannelPack(input); int output_c_pack = TensorUtils::getTensorChannelPack(output); - std::set buildOptions = mBuildOptions; + std::set buildOptions = mResource->mBuildOptions; buildOptions.emplace("-DFILTER_HEIGHT=" + std::to_string(kernelShape[0])); buildOptions.emplace("-DFILTER_WIDTH=" + std::to_string(kernelShape[1])); buildOptions.emplace("-DDILATION_HEIGHT=" + std::to_string(dilationShape[0])); @@ -190,35 +210,40 @@ ErrorCode DepthwiseConvSubgroupBufExecution::onResize(const std::vector(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(mTranseKernel)); + static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(unit.kernel)); mTranseGlobalWorkSize = {static_cast(inputWidth * inputHeight), static_cast(UP_DIV(inputShape.at(3), 4)), static_cast(inputShape.at(0))}; uint32_t idx = 0; - mTranseKernel.setArg(idx++, mTranseGlobalWorkSize[0]); - mTranseKernel.setArg(idx++, mTranseGlobalWorkSize[1]); - mTranseKernel.setArg(idx++, mTranseGlobalWorkSize[2]); - mTranseKernel.setArg(idx++, openCLBuffer(input)); - mTranseKernel.setArg(idx++, openCLBuffer(mSource.get())); - mTranseKernel.setArg(idx++, static_cast(inputWidth)); - mTranseKernel.setArg(idx++, static_cast(inputHeight)); - mTranseKernel.setArg(idx++, static_cast(inputChannels)); - mTranseKernel.setArg(idx++, UP_DIV(inputShape.at(3), 4)); - mTranseKernel.setArg(idx++, static_cast(inputpad.left)); - mTranseKernel.setArg(idx++, static_cast(inputpad.right)); - - mTranseLocalWorkSize = localWS3DDefault(mTranseGlobalWorkSize, mMaxWGS_S, mOpenCLBackend->getOpenCLRuntime(),"conv_transe_c4_c16", mTranseKernel).first; - mOpenCLBackend->recordKernel3d(mTranseKernel, mTranseGlobalWorkSize, mTranseLocalWorkSize); + unit.kernel->get().setArg(idx++, mTranseGlobalWorkSize[0]); + unit.kernel->get().setArg(idx++, mTranseGlobalWorkSize[1]); + unit.kernel->get().setArg(idx++, mTranseGlobalWorkSize[2]); + unit.kernel->get().setArg(idx++, openCLBuffer(input)); + unit.kernel->get().setArg(idx++, openCLBuffer(mSource.get())); + unit.kernel->get().setArg(idx++, static_cast(inputWidth)); + unit.kernel->get().setArg(idx++, static_cast(inputHeight)); + unit.kernel->get().setArg(idx++, static_cast(inputChannels)); + unit.kernel->get().setArg(idx++, UP_DIV(inputShape.at(3), 4)); + unit.kernel->get().setArg(idx++, static_cast(inputpad.left)); + unit.kernel->get().setArg(idx++, static_cast(inputpad.right)); + + mTranseLocalWorkSize = localWS3DDefault(mTranseGlobalWorkSize, mMaxWGS_S, mOpenCLBackend->getOpenCLRuntime(),"conv_transe_c4_c16", unit.kernel).first; + mOpenCLBackend->recordKernel3d(unit.kernel, mTranseGlobalWorkSize, mTranseLocalWorkSize); + unit.globalWorkSize = {mTranseGlobalWorkSize[0], mTranseGlobalWorkSize[1], mTranseGlobalWorkSize[2]}; + unit.localWorkSize = {mTranseLocalWorkSize[0], mTranseLocalWorkSize[1], mTranseLocalWorkSize[2]}; + mUnits.emplace_back(unit); } + Unit unit; mGlobalWorkSize = {static_cast(UP_DIV(outputShape.at(2), 8) * outputShape.at(1)), static_cast(ROUND_UP(outputShape.at(3), 16)), static_cast(outputShape.at(0))}; @@ -226,77 +251,33 @@ ErrorCode DepthwiseConvSubgroupBufExecution::onResize(const std::vectorgetOpenCLRuntime()->buildKernel("depthwise_conv2d_subgroup_buf", kernelname, buildOptions); + unit.kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("depthwise_conv2d_subgroup_buf", kernelname, buildOptions); uint32_t idx = 0; if (mNeedTranse) { - mKernel.setArg(idx++, openCLBuffer(mSource.get())); + unit.kernel->get().setArg(idx++, openCLBuffer(mSource.get())); } else { - mKernel.setArg(idx++, openCLBuffer(input)); - } - mKernel.setArg(idx++, openCLBuffer(output)); - mKernel.setArg(idx++, openCLBuffer(mFilter.get())); - mKernel.setArg(idx++, openCLBuffer(mBias.get())); - mKernel.setArg(idx++, static_cast(inputHeight)); - mKernel.setArg(idx++, static_cast(inputWidth)); - mKernel.setArg(idx++, static_cast(inputChannels)); - mKernel.setArg(idx++, static_cast(inputpad.left)); - mKernel.setArg(idx++, static_cast(inputpad.right)); - mKernel.setArg(idx++, static_cast(outputHeight)); - mKernel.setArg(idx++, static_cast(outputWidth)); - mKernel.setArg(idx++, static_cast(outputpad.left)); - mKernel.setArg(idx++, static_cast(outputpad.right)); - mKernel.setArg(idx++, static_cast(paddingShape[1])); - mKernel.setArg(idx++, static_cast(paddingShape[0])); - - mOpenCLBackend->recordKernel3d(mKernel, mGlobalWorkSize, mLocalWorkSize); - mOpenCLBackend->endRecord(mRecording); - return NO_ERROR; -} - -ErrorCode DepthwiseConvSubgroupBufExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("start DepthwiseConvSubgroupBufExecution onExecute !\n"); -#endif -#ifndef ENABLE_OPENCL_TIME_PROFILER -if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("end DepthwiseConvSubgroupBufExecution onExecute !\n"); -#endif - return NO_ERROR; -} -#endif - if (mNeedTranse) { -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - - run3DKernelDefault(mTranseKernel, mTranseGlobalWorkSize, mTranseLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"DepthwiseConvSubgroup transe", event}); -#else - run3DKernelDefault(mTranseKernel, mTranseGlobalWorkSize, mTranseLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime()); -#endif + unit.kernel->get().setArg(idx++, openCLBuffer(input)); } - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime(), - &event); + unit.kernel->get().setArg(idx++, openCLBuffer(output)); + unit.kernel->get().setArg(idx++, openCLBuffer(mResource->mFilter.get())); + unit.kernel->get().setArg(idx++, openCLBuffer(mResource->mBias.get())); + unit.kernel->get().setArg(idx++, static_cast(inputHeight)); + unit.kernel->get().setArg(idx++, static_cast(inputWidth)); + unit.kernel->get().setArg(idx++, static_cast(inputChannels)); + unit.kernel->get().setArg(idx++, static_cast(inputpad.left)); + unit.kernel->get().setArg(idx++, static_cast(inputpad.right)); + unit.kernel->get().setArg(idx++, static_cast(outputHeight)); + unit.kernel->get().setArg(idx++, static_cast(outputWidth)); + unit.kernel->get().setArg(idx++, static_cast(outputpad.left)); + unit.kernel->get().setArg(idx++, static_cast(outputpad.right)); + unit.kernel->get().setArg(idx++, static_cast(paddingShape[1])); + unit.kernel->get().setArg(idx++, static_cast(paddingShape[0])); - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"DepthwiseConvSubgroupBuf", event}); -#else - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end DepthwiseConvSubgroupBufExecution onExecute !\n"); -#endif + mOpenCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1], mLocalWorkSize[2]}; + mUnits.emplace_back(unit); return NO_ERROR; } diff --git a/source/backend/opencl/execution/buffer/DepthwiseConvSubgroupBufExecution.hpp b/source/backend/opencl/execution/buffer/DepthwiseConvSubgroupBufExecution.hpp index ed25fb4f5..9bdcf78b1 100644 --- a/source/backend/opencl/execution/buffer/DepthwiseConvSubgroupBufExecution.hpp +++ b/source/backend/opencl/execution/buffer/DepthwiseConvSubgroupBufExecution.hpp @@ -16,31 +16,23 @@ namespace MNN { namespace OpenCL { -class DepthwiseConvSubgroupBufExecution : public ConvBufCommonExecution { +class DepthwiseConvSubgroupBufExecution : public ConvBufCommonExecution, public CommonExecution { public: DepthwiseConvSubgroupBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend); + DepthwiseConvSubgroupBufExecution(std::shared_ptr resource, const MNN::Op* op, Backend* backend); virtual ~DepthwiseConvSubgroupBufExecution(); - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; + virtual bool onClone(Backend* bn, const Op* op, Execution** dst) override; private: void transformWeight(const Tensor *weightDest, const Tensor *source); - const Convolution2DCommon *mConv2dCommonParams; - const Convolution2D *mCon2dParams; - std::vector mStrides{1, 1}; std::vector mPaddings{0, 0}; - std::vector mDilations{1, 1}; - std::shared_ptr mFilter; std::shared_ptr mSource; - cl::Kernel mTranseKernel; - cl::Kernel mKernel; - uint32_t mMaxWorkGroupSize; std::vector mGlobalWorkSize{1, 1, 1}; std::vector mLocalWorkSize{1, 1, 1, 1}; std::vector mTranseGlobalWorkSize{1, 1, 1}; std::vector mTranseLocalWorkSize{1, 1, 1, 1}; bool mNeedTranse = false; - std::set mBuildOptions; }; } // namespace OpenCL diff --git a/source/backend/opencl/execution/buffer/GridSampleBufExecution.cpp b/source/backend/opencl/execution/buffer/GridSampleBufExecution.cpp index fe7ec8144..e4091b0ea 100644 --- a/source/backend/opencl/execution/buffer/GridSampleBufExecution.cpp +++ b/source/backend/opencl/execution/buffer/GridSampleBufExecution.cpp @@ -9,13 +9,13 @@ #ifndef MNN_OPENCL_BUFFER_CLOSED #include "backend/opencl/execution/buffer/GridSampleBufExecution.hpp" -#include "core/TensorUtils.hpp" namespace MNN { namespace OpenCL { GridSampleBufExecution::GridSampleBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend) - : Execution(backend) { - + : CommonExecution(backend, op) { + mUnits.resize(1); + auto &unit = mUnits[0]; mPaddingMode = op->main_as_GridSample()->paddingMode(); if (op->main_as_GridSample()->alignCorners()) { mAlignCorners = 1; @@ -31,21 +31,21 @@ GridSampleBufExecution::GridSampleBufExecution(const std::vector &inpu std::set buildOptions; if (op->main_as_GridSample()->mode() == 0) { mKernelName = "bilinear_buf"; - mKernel = runtime->buildKernel("grid_sample_buf", mKernelName, buildOptions); + unit.kernel = runtime->buildKernel("grid_sample_buf", mKernelName, buildOptions); } else { mKernelName = "nearest_buf"; - mKernel = runtime->buildKernel("grid_sample_buf", mKernelName, buildOptions); + unit.kernel = runtime->buildKernel("grid_sample_buf", mKernelName, buildOptions); } - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); } -ErrorCode GridSampleBufExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode GridSampleBufExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { + auto &unit = mUnits[0]; auto inputTensor = inputs[0]; auto gridTensor = inputs[1]; auto outputTensor = outputs[0]; auto runtime = ((OpenCLBackend *)backend())->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); const int batches = inputTensor->buffer().dim[0].extent; const int channels = inputTensor->buffer().dim[1].extent; @@ -66,43 +66,26 @@ ErrorCode GridSampleBufExecution::onResize(const std::vector &inputs, uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[2]); - ret |= mKernel.setArg(idx++, openCLBuffer(inputTensor)); - ret |= mKernel.setArg(idx++, openCLBuffer(gridTensor)); - ret |= mKernel.setArg(idx++, openCLBuffer(outputTensor)); - ret |= mKernel.setArg(idx++, static_cast(inH)); - ret |= mKernel.setArg(idx++, static_cast(inW)); - ret |= mKernel.setArg(idx++, static_cast(outH)); - ret |= mKernel.setArg(idx++, static_cast(outW)); - ret |= mKernel.setArg(idx++, static_cast(channelC4)); - ret |= mKernel.setArg(idx++, mPaddingMode); - ret |= mKernel.setArg(idx++, mAlignCorners); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(inputTensor)); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(gridTensor)); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(outputTensor)); + ret |= unit.kernel->get().setArg(idx++, static_cast(inH)); + ret |= unit.kernel->get().setArg(idx++, static_cast(inW)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outH)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outW)); + ret |= unit.kernel->get().setArg(idx++, static_cast(channelC4)); + ret |= unit.kernel->get().setArg(idx++, mPaddingMode); + ret |= unit.kernel->get().setArg(idx++, mAlignCorners); MNN_CHECK_CL_SUCCESS(ret, "setArg GridSampleBufExecution"); - mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, runtime, mKernelName, mKernel).first; - - mOpenCLBackend->recordKernel3d(mKernel, mGlobalWorkSize, mGlobalWorkSize); - mOpenCLBackend->endRecord(mRecording); - return NO_ERROR; -} - -ErrorCode GridSampleBufExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime(), &event); + mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, runtime, mKernelName, unit.kernel).first; - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"GridSample", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); - return NO_ERROR; - } - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalWorkSize, mOpenCLBackend->getOpenCLRuntime()); -#endif + mOpenCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1], mLocalWorkSize[2]}; return NO_ERROR; } diff --git a/source/backend/opencl/execution/buffer/GridSampleBufExecution.hpp b/source/backend/opencl/execution/buffer/GridSampleBufExecution.hpp index cecf4d253..93e88dc5d 100644 --- a/source/backend/opencl/execution/buffer/GridSampleBufExecution.hpp +++ b/source/backend/opencl/execution/buffer/GridSampleBufExecution.hpp @@ -11,20 +11,16 @@ #ifndef GridSampleBufExecution_hpp #define GridSampleBufExecution_hpp -#include "core/Execution.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "backend/opencl/execution/image/CommonExecution.hpp" namespace MNN { namespace OpenCL { -class GridSampleBufExecution : public Execution, public CommonExtension { +class GridSampleBufExecution : public CommonExecution { public: GridSampleBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend); virtual ~GridSampleBufExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: SampleMode mMode; @@ -34,7 +30,6 @@ class GridSampleBufExecution : public Execution, public CommonExtension { std::vector mGlobalWorkSize{ 0,0,0,0 }; std::vector mLocalWorkSize{ 0,0,0,0 }; - cl::Kernel mKernel; std::string mKernelName; uint32_t mMaxWorkGroupSize; OpenCLBackend *mOpenCLBackend; @@ -43,4 +38,4 @@ class GridSampleBufExecution : public Execution, public CommonExtension { } // namespace MNN #endif // GridSampleBufExecution_hpp -#endif // MNN_OPENCL_BUFFER_CLOSED \ No newline at end of file +#endif // MNN_OPENCL_BUFFER_CLOSED diff --git a/source/backend/opencl/execution/buffer/Interp3DBufExecution.cpp b/source/backend/opencl/execution/buffer/Interp3DBufExecution.cpp index d87bab2ef..191c2fabe 100644 --- a/source/backend/opencl/execution/buffer/Interp3DBufExecution.cpp +++ b/source/backend/opencl/execution/buffer/Interp3DBufExecution.cpp @@ -9,12 +9,13 @@ #ifndef MNN_OPENCL_BUFFER_CLOSED #include "backend/opencl/execution/buffer/Interp3DBufExecution.hpp" -#include "core/TensorUtils.hpp" namespace MNN { namespace OpenCL { -Interp3DBufExecution::Interp3DBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend) : Execution(backend) { +Interp3DBufExecution::Interp3DBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend) : CommonExecution(backend, op) { + mUnits.resize(1); + auto &unit = mUnits[0]; mOpenCLBackend = static_cast(backend); auto runtime = mOpenCLBackend->getOpenCLRuntime(); auto interp3DParam = op->main_as_Interp(); @@ -27,21 +28,21 @@ Interp3DBufExecution::Interp3DBufExecution(const std::vector &inputs, std::set buildOptions; if (op->main_as_Interp()->resizeType() == 1) { mKernelName = "nearest3D_buf"; - mKernel = runtime->buildKernel("interp_buf", mKernelName, buildOptions); + unit.kernel = runtime->buildKernel("interp_buf", mKernelName, buildOptions); } else { MNN_ERROR("Resize type other than nearest is not supported in Interp3DBuf, change to nearest!"); mKernelName = "nearest3D_buf"; - mKernel = runtime->buildKernel("interp_buf", mKernelName, buildOptions); + unit.kernel = runtime->buildKernel("interp_buf", mKernelName, buildOptions); } - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); } -ErrorCode Interp3DBufExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode Interp3DBufExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { + auto &unit = mUnits[0]; Tensor *input = inputs[0]; Tensor *output = outputs[0]; auto runtime = ((OpenCLBackend *)backend())->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); std::vector inputImageShape = tensorShapeFormat(input); // {C/4 * H * W, N * D} for 5-D Tensor std::vector outputImageShape = tensorShapeFormat(output); @@ -68,63 +69,34 @@ ErrorCode Interp3DBufExecution::onResize(const std::vector &inputs, co uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGWS[0]); - ret |= mKernel.setArg(idx++, mGWS[1]); - ret |= mKernel.setArg(idx++, mGWS[2]); - ret |= mKernel.setArg(idx++, openCLBuffer(input)); - ret |= mKernel.setArg(idx++, openCLBuffer(output)); - ret |= mKernel.setArg(idx++, mCordTransform[4]); - ret |= mKernel.setArg(idx++, mCordTransform[2]); - ret |= mKernel.setArg(idx++, mCordTransform[0]); - ret |= mKernel.setArg(idx++, mCordTransform[5]); - ret |= mKernel.setArg(idx++, mCordTransform[3]); - ret |= mKernel.setArg(idx++, mCordTransform[1]); - ret |= mKernel.setArg(idx++, static_cast(inputDepth)); - ret |= mKernel.setArg(idx++, static_cast(inputHeight)); - ret |= mKernel.setArg(idx++, static_cast(inputWidth)); - ret |= mKernel.setArg(idx++, static_cast(outputDepth)); - ret |= mKernel.setArg(idx++, static_cast(outputHeight)); - ret |= mKernel.setArg(idx++, static_cast(outputWidth)); - ret |= mKernel.setArg(idx++, static_cast(channelBlocks)); + ret |= unit.kernel->get().setArg(idx++, mGWS[0]); + ret |= unit.kernel->get().setArg(idx++, mGWS[1]); + ret |= unit.kernel->get().setArg(idx++, mGWS[2]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(input)); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(idx++, mCordTransform[4]); + ret |= unit.kernel->get().setArg(idx++, mCordTransform[2]); + ret |= unit.kernel->get().setArg(idx++, mCordTransform[0]); + ret |= unit.kernel->get().setArg(idx++, mCordTransform[5]); + ret |= unit.kernel->get().setArg(idx++, mCordTransform[3]); + ret |= unit.kernel->get().setArg(idx++, mCordTransform[1]); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputDepth)); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputHeight)); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputWidth)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputDepth)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputHeight)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputWidth)); + ret |= unit.kernel->get().setArg(idx++, static_cast(channelBlocks)); MNN_CHECK_CL_SUCCESS(ret, "setArg Interp3DBufExecution"); - mLWS = localWS3DDefault(mGWS, mMaxWorkGroupSize, runtime, mKernelName, mKernel).first; - mOpenCLBackend->recordKernel3d(mKernel, mGWS, mLWS); - mOpenCLBackend->endRecord(mRecording); + mLWS = localWS3DDefault(mGWS, mMaxWorkGroupSize, runtime, mKernelName, unit.kernel).first; + mOpenCLBackend->recordKernel3d(unit.kernel, mGWS, mLWS); + unit.globalWorkSize = {mGWS[0], mGWS[1], mGWS[2]}; + unit.localWorkSize = {mLWS[0], mLWS[1], mLWS[2]}; return NO_ERROR; } -ErrorCode Interp3DBufExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("Start InterpBufExecution onExecute... \n"); -#endif - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGWS, mLWS, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Interp", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End InterpBufExecution onExecute... \n"); -#endif - return NO_ERROR; - } - run3DKernelDefault(mKernel, mGWS, mLWS, mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end InterpBufExecution onExecute... \n"); -#endif - - return NO_ERROR; -} - class Interp3DBufCreator : public OpenCLBackend::Creator { public: virtual ~Interp3DBufCreator() = default; diff --git a/source/backend/opencl/execution/buffer/Interp3DBufExecution.hpp b/source/backend/opencl/execution/buffer/Interp3DBufExecution.hpp index 633cfe6af..cf1b6db75 100644 --- a/source/backend/opencl/execution/buffer/Interp3DBufExecution.hpp +++ b/source/backend/opencl/execution/buffer/Interp3DBufExecution.hpp @@ -11,28 +11,20 @@ #ifndef Interp3DBufExecution_hpp #define Interp3DBufExecution_hpp -#include -#include -#include -#include "core/Execution.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "backend/opencl/execution/image/CommonExecution.hpp" namespace MNN { namespace OpenCL { -class Interp3DBufExecution : public Execution, public CommonExtension { +class Interp3DBufExecution : public CommonExecution { public: Interp3DBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend); virtual ~Interp3DBufExecution() = default; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: - cl::Kernel mKernel; std::vector mLWS{0, 0, 0, 0}; std::vector mGWS{0, 0, 0, 0}; uint32_t mMaxWorkGroupSize; diff --git a/source/backend/opencl/execution/buffer/InterpBufExecution.cpp b/source/backend/opencl/execution/buffer/InterpBufExecution.cpp index f3581c045..00ab7de08 100644 --- a/source/backend/opencl/execution/buffer/InterpBufExecution.cpp +++ b/source/backend/opencl/execution/buffer/InterpBufExecution.cpp @@ -9,12 +9,13 @@ #ifndef MNN_OPENCL_BUFFER_CLOSED #include "backend/opencl/execution/buffer/InterpBufExecution.hpp" -#include "core/TensorUtils.hpp" namespace MNN { namespace OpenCL { -InterpBufExecution::InterpBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend) : Execution(backend) { +InterpBufExecution::InterpBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend) : CommonExecution(backend, op) { + mUnits.resize(1); + auto &unit = mUnits[0]; mOpenCLBackend = static_cast(backend); auto runtime = mOpenCLBackend->getOpenCLRuntime(); auto interpParam = op->main_as_Interp(); @@ -26,24 +27,24 @@ InterpBufExecution::InterpBufExecution(const std::vector &inputs, cons std::set buildOptions; if (op->main_as_Interp()->resizeType() == 1) { mKernelName = "nearest_buf"; - mKernel = runtime->buildKernel("interp_buf", mKernelName, buildOptions); + unit.kernel = runtime->buildKernel("interp_buf", mKernelName, buildOptions); } else if(op->main_as_Interp()->resizeType() == 4) { mKernelName = "nearest_buf"; buildOptions.emplace("-DUSE_ROUND"); - mKernel = runtime->buildKernel("interp_buf", mKernelName, buildOptions); + unit.kernel = runtime->buildKernel("interp_buf", mKernelName, buildOptions); }else { mKernelName = "bilinear_buf"; - mKernel = runtime->buildKernel("interp_buf", mKernelName, buildOptions); + unit.kernel = runtime->buildKernel("interp_buf", mKernelName, buildOptions); } - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); } -ErrorCode InterpBufExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode InterpBufExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { + auto &unit = mUnits[0]; Tensor *input = inputs[0]; Tensor *output = outputs[0]; auto runtime = ((OpenCLBackend *)backend())->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); std::vector inputShape = tensorShapeFormat(input); std::vector outputShape = tensorShapeFormat(output); @@ -66,59 +67,30 @@ ErrorCode InterpBufExecution::onResize(const std::vector &inputs, cons uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGWS[0]); - ret |= mKernel.setArg(idx++, mGWS[1]); - ret |= mKernel.setArg(idx++, mGWS[2]); - ret |= mKernel.setArg(idx++, openCLBuffer(input)); - ret |= mKernel.setArg(idx++, openCLBuffer(output)); - ret |= mKernel.setArg(idx++, mCordTransform[2]); - ret |= mKernel.setArg(idx++, mCordTransform[0]); - ret |= mKernel.setArg(idx++, mCordTransform[3]); - ret |= mKernel.setArg(idx++, mCordTransform[1]); - ret |= mKernel.setArg(idx++, static_cast(inputHeight)); - ret |= mKernel.setArg(idx++, static_cast(inputWidth)); - ret |= mKernel.setArg(idx++, static_cast(outputHeight)); - ret |= mKernel.setArg(idx++, static_cast(outputWidth)); - ret |= mKernel.setArg(idx++, static_cast(channelBlocks)); + ret |= unit.kernel->get().setArg(idx++, mGWS[0]); + ret |= unit.kernel->get().setArg(idx++, mGWS[1]); + ret |= unit.kernel->get().setArg(idx++, mGWS[2]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(input)); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(idx++, mCordTransform[2]); + ret |= unit.kernel->get().setArg(idx++, mCordTransform[0]); + ret |= unit.kernel->get().setArg(idx++, mCordTransform[3]); + ret |= unit.kernel->get().setArg(idx++, mCordTransform[1]); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputHeight)); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputWidth)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputHeight)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputWidth)); + ret |= unit.kernel->get().setArg(idx++, static_cast(channelBlocks)); MNN_CHECK_CL_SUCCESS(ret, "setArg InterpBufExecution"); - mLWS = localWS3DDefault(mGWS, mMaxWorkGroupSize, runtime, mKernelName, mKernel).first; - mOpenCLBackend->recordKernel3d(mKernel, mGWS, mLWS); - mOpenCLBackend->endRecord(mRecording); + mLWS = localWS3DDefault(mGWS, mMaxWorkGroupSize, runtime, mKernelName, unit.kernel).first; + mOpenCLBackend->recordKernel3d(unit.kernel, mGWS, mLWS); + unit.globalWorkSize = {mGWS[0], mGWS[1], mGWS[2]}; + unit.localWorkSize = {mLWS[0], mLWS[1], mLWS[2]}; return NO_ERROR; } -ErrorCode InterpBufExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("Start InterpBufExecution onExecute... \n"); -#endif - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGWS, mLWS, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Interp", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End InterpBufExecution onExecute... \n"); -#endif - return NO_ERROR; - } - run3DKernelDefault(mKernel, mGWS, mLWS, mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end InterpBufExecution onExecute... \n"); -#endif - - return NO_ERROR; -} - class InterpBufCreator : public OpenCLBackend::Creator { public: virtual ~InterpBufCreator() = default; diff --git a/source/backend/opencl/execution/buffer/InterpBufExecution.hpp b/source/backend/opencl/execution/buffer/InterpBufExecution.hpp index fbdc2d5a4..64aa9fc62 100644 --- a/source/backend/opencl/execution/buffer/InterpBufExecution.hpp +++ b/source/backend/opencl/execution/buffer/InterpBufExecution.hpp @@ -11,28 +11,20 @@ #ifndef InterpBufExecution_hpp #define InterpBufExecution_hpp -#include -#include -#include -#include "core/Execution.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "backend/opencl/execution/image/CommonExecution.hpp" namespace MNN { namespace OpenCL { -class InterpBufExecution : public Execution, public CommonExtension { +class InterpBufExecution : public CommonExecution { public: InterpBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend); virtual ~InterpBufExecution() = default; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: - cl::Kernel mKernel; std::vector mLWS{0, 0, 0, 0}; std::vector mGWS{0, 0, 0, 0}; uint32_t mMaxWorkGroupSize; diff --git a/source/backend/opencl/execution/buffer/LayerNormBufExecution.cpp b/source/backend/opencl/execution/buffer/LayerNormBufExecution.cpp index 58cf0c2fd..e01dc538b 100644 --- a/source/backend/opencl/execution/buffer/LayerNormBufExecution.cpp +++ b/source/backend/opencl/execution/buffer/LayerNormBufExecution.cpp @@ -8,19 +8,21 @@ #ifndef MNN_OPENCL_BUFFER_CLOSED #include "backend/opencl/execution/buffer/LayerNormBufExecution.hpp" -#include "core/TensorUtils.hpp" namespace MNN { namespace OpenCL { LayerNormBufExecution::LayerNormBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend) - : Execution(backend) { + : CommonExecution(backend, op) { mOpenCLBackend = static_cast(backend); auto runtime = mOpenCLBackend->getOpenCLRuntime(); const auto* layer_norm_param = op->main_as_LayerNorm(); - axis_size = layer_norm_param->axis()->size(); + if (nullptr != layer_norm_param->axis()) { + axis_size = layer_norm_param->axis()->size(); + } epsilon_ = layer_norm_param->epsilon(); group_ = layer_norm_param->group(); + RMSNorm = layer_norm_param->useRMSNorm(); auto bufferUnitSize = runtime->isSupportedFP16() ? sizeof(half_float::half) : sizeof(float); auto kernel = runtime->buildKernel("layernorm_buf", "layernorm_w_buf", {"-DLOCAL_SIZE=512"}); mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(kernel)); @@ -86,12 +88,13 @@ int LayerNormBufExecution::getLocalSize(int size, int maxGroupSize){ return local_size; } -ErrorCode LayerNormBufExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode LayerNormBufExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { + mUnits.resize(1); + auto &unit = mUnits[0]; Tensor *input = inputs[0]; Tensor *output = outputs[0]; auto runtime = ((OpenCLBackend *)backend())->getOpenCLRuntime(); auto MaxLocalSize = std::min(runtime->getMaxWorkItemSizes()[0], mMaxWorkGroupSize); - mOpenCLBackend->startRecord(mRecording); std::vector inputShape = tensorShapeFormat(input); std::vector outputShape = tensorShapeFormat(output); @@ -113,6 +116,9 @@ ErrorCode LayerNormBufExecution::onResize(const std::vector &inputs, c std::set buildOptions; + if(RMSNorm){ + buildOptions.emplace("-DRMSNORM"); + } if(has_gamma_beta_){ buildOptions.emplace("-DGAMMA_BETA"); } @@ -121,7 +127,7 @@ ErrorCode LayerNormBufExecution::onResize(const std::vector &inputs, c kernelName = "layernorm_w_buf"; local_size = getLocalSize(inputWidth, MaxLocalSize); buildOptions.emplace("-DLOCAL_SIZE=" + std::to_string(local_size)); - mKernel = runtime->buildKernel("layernorm_buf", kernelName, buildOptions); + unit.kernel = runtime->buildKernel("layernorm_buf", kernelName, buildOptions); mGWS = {static_cast(local_size), static_cast(inputHeight * UP_DIV(inputChannels, 4)), @@ -130,7 +136,7 @@ ErrorCode LayerNormBufExecution::onResize(const std::vector &inputs, c kernelName = "layernorm_hw_buf"; local_size = getLocalSize(inputWidth * inputHeight, MaxLocalSize); buildOptions.emplace("-DLOCAL_SIZE=" + std::to_string(local_size)); - mKernel = runtime->buildKernel("layernorm_buf", kernelName, buildOptions); + unit.kernel = runtime->buildKernel("layernorm_buf", kernelName, buildOptions); mGWS = {static_cast(local_size), static_cast(UP_DIV(inputChannels, 4)), @@ -139,7 +145,7 @@ ErrorCode LayerNormBufExecution::onResize(const std::vector &inputs, c kernelName = "layernorm_chw_buf"; local_size = getLocalSize(inputWidth * inputHeight, MaxLocalSize); buildOptions.emplace("-DLOCAL_SIZE=" + std::to_string(local_size)); - mKernel = runtime->buildKernel("layernorm_buf", kernelName, buildOptions); + unit.kernel = runtime->buildKernel("layernorm_buf", kernelName, buildOptions); mGWS = {static_cast(local_size), static_cast(1), @@ -149,57 +155,28 @@ ErrorCode LayerNormBufExecution::onResize(const std::vector &inputs, c uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGWS[0]); - ret |= mKernel.setArg(idx++, mGWS[1]); - ret |= mKernel.setArg(idx++, mGWS[2]); - ret |= mKernel.setArg(idx++, openCLBuffer(input)); - ret |= mKernel.setArg(idx++, openCLBuffer(output)); - ret |= mKernel.setArg(idx++, static_cast(inputWidth)); - ret |= mKernel.setArg(idx++, static_cast(inputHeight)); - ret |= mKernel.setArg(idx++, static_cast(inputChannels)); + ret |= unit.kernel->get().setArg(idx++, mGWS[0]); + ret |= unit.kernel->get().setArg(idx++, mGWS[1]); + ret |= unit.kernel->get().setArg(idx++, mGWS[2]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(input)); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputWidth)); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputHeight)); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputChannels)); if(has_gamma_beta_){ - ret |= mKernel.setArg(idx++, *mGammaBuffer.get()); - ret |= mKernel.setArg(idx++, *mBetaBuffer.get()); + ret |= unit.kernel->get().setArg(idx++, *mGammaBuffer.get()); + ret |= unit.kernel->get().setArg(idx++, *mBetaBuffer.get()); } - ret |= mKernel.setArg(idx++, epsilon_); + ret |= unit.kernel->get().setArg(idx++, epsilon_); MNN_CHECK_CL_SUCCESS(ret, "setArg LayerNormBufExecution"); - mOpenCLBackend->recordKernel3d(mKernel, mGWS, mLWS); - mOpenCLBackend->endRecord(mRecording); + mOpenCLBackend->recordKernel3d(unit.kernel, mGWS, mLWS); + unit.globalWorkSize = {mGWS[0], mGWS[1], mGWS[2]}; + unit.localWorkSize = {mLWS[0], mLWS[1], mLWS[2]}; return NO_ERROR; } -ErrorCode LayerNormBufExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("Start LayerNormBufExecution onExecute... \n"); -#endif - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGWS, mLWS, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"LayerNormBuf", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End LayerNormBufExecution onExecute... \n"); -#endif - return NO_ERROR; - } - run3DKernelDefault(mKernel, mGWS, mLWS, mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end LayerNormBufExecution onExecute... \n"); -#endif - - return NO_ERROR; -} - class LayerNormBufCreator : public OpenCLBackend::Creator { public: virtual ~LayerNormBufCreator() = default; @@ -212,7 +189,6 @@ class LayerNormBufCreator : public OpenCLBackend::Creator { TensorUtils::setTensorSupportPack(outputs[i], false); } const auto* layer_norm_param = op->main_as_LayerNorm(); - int axis_size = layer_norm_param->axis()->size(); int group = layer_norm_param->group(); if(group > 1){ return nullptr; diff --git a/source/backend/opencl/execution/buffer/LayerNormBufExecution.hpp b/source/backend/opencl/execution/buffer/LayerNormBufExecution.hpp index fde0680ea..0b9164732 100644 --- a/source/backend/opencl/execution/buffer/LayerNormBufExecution.hpp +++ b/source/backend/opencl/execution/buffer/LayerNormBufExecution.hpp @@ -10,35 +10,28 @@ #ifndef LayerNormBufExecution_hpp #define LayerNormBufExecution_hpp -#include -#include -#include -#include "core/Execution.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "backend/opencl/execution/image/CommonExecution.hpp" namespace MNN { namespace OpenCL { -class LayerNormBufExecution : public Execution, public CommonExtension { +class LayerNormBufExecution : public CommonExecution { public: LayerNormBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend); virtual ~LayerNormBufExecution() = default; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: int getLocalSize(int size, int maxGroupSize); - cl::Kernel mKernel; std::vector mLWS{0, 0, 0, 0}; std::vector mGWS{0, 0, 0, 0}; OpenCLBackend *mOpenCLBackend; int axis_size = 0; int group_ = 1; float epsilon_ = 0.001; + bool RMSNorm = false; std::shared_ptr mGammaBuffer; std::shared_ptr mBetaBuffer; diff --git a/source/backend/opencl/execution/buffer/LoopBufExecution.cpp b/source/backend/opencl/execution/buffer/LoopBufExecution.cpp index 3207db259..175d55e29 100644 --- a/source/backend/opencl/execution/buffer/LoopBufExecution.cpp +++ b/source/backend/opencl/execution/buffer/LoopBufExecution.cpp @@ -9,20 +9,26 @@ #ifndef MNN_OPENCL_BUFFER_CLOSED #include "backend/opencl/execution/buffer/LoopBufExecution.hpp" -#include "core/Macro.h" -#include "core/TensorUtils.hpp" namespace MNN { namespace OpenCL { -static void _TileOrPackTensor(Tensor *input, Tensor *output, cl::Kernel& kernel, cl::NDRange &globalWorkSize, +static void _TileOrPackTensor(Tensor *input, Tensor *output, std::shared_ptr& kernelW, cl::NDRange &globalWorkSize, cl::NDRange &localWorkSize, const int Width, const int Height, const int Channel, const int Batch, OpenCLBackend *bn, const std::string &KernelName, std::set buildOptions) { if (TensorUtils::getDescribe(output)->dimensionFormat == MNN::MNN_DATA_FORMAT_NHWC || TensorUtils::getDescribe(input)->dimensionFormat == MNN::MNN_DATA_FORMAT_NHWC){ buildOptions.emplace("-DMNN_NHWC"); } - kernel = bn->getOpenCLRuntime()->buildKernel("loop_buf", KernelName, buildOptions); - uint32_t mMaxWorkGroupSize = static_cast(bn->getOpenCLRuntime()->getMaxWorkGroupSize(kernel)); + if(input->getType().code == halide_type_int){ + kernelW = bn->getOpenCLRuntime()->buildKernel("loop_buf", KernelName, buildOptions, input, input); + }else if (output->getType().code == halide_type_int){ + kernelW = bn->getOpenCLRuntime()->buildKernel("loop_buf", KernelName, buildOptions, output, output); + }else { + kernelW = bn->getOpenCLRuntime()->buildKernel("loop_buf", KernelName, buildOptions, input, output); + } + auto kernel = kernelW->get(); + + uint32_t mMaxWorkGroupSize = static_cast(bn->getOpenCLRuntime()->getMaxWorkGroupSize(kernelW)); std::vector mGlobalWorkSize = {(uint32_t)(Width * Height), (uint32_t)(UP_DIV(Channel, 4)), (uint32_t)(Batch)}; uint32_t index = 0; @@ -37,11 +43,11 @@ static void _TileOrPackTensor(Tensor *input, Tensor *output, cl::Kernel& kernel, ret |= kernel.setArg(index++, Channel); MNN_CHECK_CL_SUCCESS(ret, "setArg LoopBuf _TileOrPackTensor"); - std::vector mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, bn->getOpenCLRuntime(), KernelName, kernel).first; + std::vector mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, bn->getOpenCLRuntime(), KernelName, kernelW).first; globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1], mLocalWorkSize[2]}; - bn->recordKernel3d(kernel, mGlobalWorkSize, mLocalWorkSize); + bn->recordKernel3d(kernelW, mGlobalWorkSize, mLocalWorkSize); } static void _setTensorStack(std::vector &result, const std::vector &inputs, @@ -63,19 +69,18 @@ static void _setTensorStack(std::vector &result, const std::vectortensorNumber()); auto cmd = loop->commands()->GetAs(0); } - ErrorCode LoopGatherBufExecution::onResize(const std::vector &inputs, const std::vector &outputs) { + ErrorCode LoopGatherBufExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { auto cmd = mLoop->commands()->GetAs(0); OpenCLBackend *mOpenCLBackend = (OpenCLBackend *)backend(); auto runTime = mOpenCLBackend->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); _setTensorStack(mTensors, inputs, outputs, mLoop); mUnits.clear(); mOffsetTensors.clear(); - mTmpTensors.resize(2); int x = cmd->size()->data()[0]; int y = cmd->size()->data()[1]; int z = cmd->size()->data()[2]; int n = mLoop->loopNumber(); + int inputSize = mTensors[cmd->indexes()->data()[1]]->elementSize(); auto srcStride = cmd->view()->GetAs(1)->stride()->data(); auto dstStride = cmd->view()->GetAs(0)->stride()->data(); @@ -88,101 +93,75 @@ static void _setTensorStack(std::vector &result, const std::vectorview()->GetAs(0)->offset(); ::memcpy(mStep, cmd->steps()->data(), cmd->steps()->size() * sizeof(int)); ::memcpy(mIter, cmd->iterIndexes()->data(), cmd->iterIndexes()->size() * sizeof(int)); - - // tile input - { - auto input = mTensors[cmd->indexes()->data()[1]]; - std::vector Shape = tensorShapeFormat(input); - const int Channel = Shape.at(3); - const int Width = Shape.at(2); - const int Height = Shape.at(1); - const int Batch = Shape.at(0); - mTmpTensors[1] = std::make_shared(Tensor::createDevice(std::vector{Batch, Channel, Height, Width}, Tensor::CAFFE)); - mOpenCLBackend->onAcquireBuffer(mTmpTensors[1].get(), Backend::DYNAMIC); - - Unit unit; - _TileOrPackTensor(mTensors[cmd->indexes()->data()[1]], mTmpTensors[1].get(), unit.kernel, unit.globalWorkSize, unit.localWorkSize, Width, Height,Channel, Batch, mOpenCLBackend, "tile_buf", mBuildOptions); - mUnits.emplace_back(unit); - } - - for(int i = 0; i < cmd->iterIndexes()->size(); ++i){ - if (mIter[i] >= 0) { - auto input = mTensors[cmd->iterIndexes()->data()[i]]; - std::vector Shape = tensorShapeFormat(input); - const int Channel = Shape.at(3); - const int Width = Shape.at(2); - const int Height = Shape.at(1); - const int Batch = Shape.at(0); - mOffsetTensors.emplace_back(std::make_shared(Tensor::createDevice(std::vector{Batch, Channel, Height, Width}, Tensor::CAFFE))); - mOpenCLBackend->onAcquireBuffer(mOffsetTensors.back().get(), Backend::DYNAMIC); - - Unit unit; - _TileOrPackTensor(input, mOffsetTensors.back().get(), unit.kernel, unit.globalWorkSize, unit.localWorkSize, Width, Height, Channel, Batch, mOpenCLBackend, "tile_buf", mBuildOptions); - mUnits.emplace_back(unit); - } - } // gather { - mTmpTensors[0] = std::make_shared(Tensor::createDevice(std::vector{n, z, y, x}, Tensor::CAFFE)); - mOpenCLBackend->onAcquireBuffer(mTmpTensors[0].get(), Backend::DYNAMIC); - int offset_index = 0; - - Unit unit; - std::string KernelName = "batch_gather"; - unit.kernel = runTime->buildKernel("loop", KernelName, mBuildOptions); - uint32_t mMaxWorkGroupSize = static_cast(runTime->getMaxWorkGroupSize(unit.kernel)); - std::vector mGlobalWorkSize = {(uint32_t)(x * y), (uint32_t)(z), (uint32_t)(n)}; - - uint32_t index = 0; - cl_int ret = CL_SUCCESS; - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[0]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[1]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[2]); - ret |= unit.kernel.setArg(index++, openCLBuffer(mTmpTensors[0].get())); - ret |= unit.kernel.setArg(index++, openCLBuffer(mTmpTensors[1].get())); - for (int i = 0; i < cmd->iterIndexes()->size(); ++i) { - if (mIter[i] >= 0) { - ret |= unit.kernel.setArg(index++, openCLBuffer(mOffsetTensors[offset_index++].get())); - } else { - ret |= unit.kernel.setArg(index++, openCLBuffer(mTensors[cmd->indexes()->data()[1]])); - } - } - ret |= unit.kernel.setArg(index++, x); - ret |= unit.kernel.setArg(index++, sizeof(mStride_src), mStride_src); - ret |= unit.kernel.setArg(index++, sizeof(mStride_dst), mStride_dst); - ret |= unit.kernel.setArg(index++, sizeof(mStep), mStep); - ret |= unit.kernel.setArg(index++, sizeof(mIter), mIter); - MNN_CHECK_CL_SUCCESS(ret, "setArg LoopGatherBufExecution"); - - std::vector mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, runTime, KernelName, unit.kernel).first; - - unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; - unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1], mLocalWorkSize[2]}; - mUnits.emplace_back(unit); - mOpenCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); - } - - //pack output - { - auto output = mTensors[cmd->indexes()->data()[0]]; - std::vector Shape = tensorShapeFormat(output); - const int Channel = Shape.at(3); - const int Width = Shape.at(2); - const int Height = Shape.at(1); - const int Batch = Shape.at(0); - Unit unit; - _TileOrPackTensor(mTmpTensors[0].get(), mTensors[cmd->indexes()->data()[0]], unit.kernel, unit.globalWorkSize, unit.localWorkSize, Width, Height, Channel, Batch, mOpenCLBackend, "pack_buf", mBuildOptions); - mUnits.emplace_back(unit); + auto input = mTensors[cmd->indexes()->data()[1]]; + auto output = mTensors[cmd->indexes()->data()[0]]; + std::vector inputShape = tensorShapeFormat(input); + std::vector outputShape = tensorShapeFormat(output); + int inputShapeVec[4] = {inputShape[2], inputShape[1], inputShape[3], inputShape[0]}; + int outputShapeVec[4] = {outputShape[2], outputShape[1], outputShape[3], inputShape[0]}; + int offset_index = 0; + + Unit unit; + std::set buildOptions; + if (TensorUtils::getDescribe(output)->dimensionFormat == MNN::MNN_DATA_FORMAT_NHWC){ + buildOptions.emplace("-DGATHER_OUTPUT_NHWC"); + } + if (TensorUtils::getDescribe(input)->dimensionFormat == MNN::MNN_DATA_FORMAT_NHWC){ + buildOptions.emplace("-DGATHER_INPUT_NHWC"); + } + if (mIter[0] >= 0) { + auto tensor = mTensors[cmd->iterIndexes()->data()[0]]; + std::vector shape = tensorShapeFormat(tensor); + if(shape[3] == 1){ + buildOptions.emplace("-DOFFSET_DST_CHANNEL_STRIDE4"); + } + } + if (mIter[1] >= 0) { + auto tensor = mTensors[cmd->iterIndexes()->data()[1]]; + std::vector shape = tensorShapeFormat(tensor); + if(shape[3] == 1){ + buildOptions.emplace("-DOFFSET_SRC_CHANNEL_STRIDE4"); + } + } + unit.kernel = runTime->buildKernel("gather_buf", "batch_gather_buf", buildOptions, input, output); + uint32_t mMaxWorkGroupSize = static_cast(runTime->getMaxWorkGroupSize(unit.kernel)); + std::vector mGlobalWorkSize = {(uint32_t)(x * y), (uint32_t)(z), (uint32_t)(n)}; + + uint32_t index = 0; + cl_int ret = CL_SUCCESS; + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(input)); + for (int i = 0; i < cmd->iterIndexes()->size(); ++i) { + if (mIter[i] >= 0) { + ret |= unit.kernel->get().setArg(index++, openCLBuffer(mTensors[cmd->iterIndexes()->data()[i]])); + } else { + ret |= unit.kernel->get().setArg(index++, openCLBuffer(input)); + } + } + ret |= unit.kernel->get().setArg(index++, x); + ret |= unit.kernel->get().setArg(index++, sizeof(mStride_src), mStride_src); + ret |= unit.kernel->get().setArg(index++, sizeof(mStride_dst), mStride_dst); + ret |= unit.kernel->get().setArg(index++, sizeof(mStep), mStep); + ret |= unit.kernel->get().setArg(index++, sizeof(mIter), mIter); + ret |= unit.kernel->get().setArg(index++, sizeof(outputShapeVec), outputShapeVec); + ret |= unit.kernel->get().setArg(index++, sizeof(inputShapeVec), inputShapeVec); + ret |= unit.kernel->get().setArg(index++, inputSize); + MNN_CHECK_CL_SUCCESS(ret, "setArg LoopGatherBufExecution"); + + std::vector mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, runTime, "batch_gather_buf", unit.kernel).first; + + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1], mLocalWorkSize[2]}; + mUnits.emplace_back(unit); + mOpenCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); } - for (int i = 0; i < mTmpTensors.size(); ++i) { - mOpenCLBackend->onReleaseBuffer(mTmpTensors[i].get(), Backend::DYNAMIC); - } - for (int i = 0; i < mOffsetTensors.size(); ++i) { - mOpenCLBackend->onReleaseBuffer(mOffsetTensors[i].get(), Backend::DYNAMIC); - } - mOpenCLBackend->endRecord(mRecording); return NO_ERROR; } @@ -193,15 +172,14 @@ LoopBatchMatMulBufExecution::LoopBatchMatMulBufExecution(const LoopParam *loop, mLoop = loop; mTensors.resize(mLoop->tensorNumber()); auto cmd = loop->commands()->GetAs(0); +} +ErrorCode LoopBatchMatMulBufExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { + auto cmd = mLoop->commands()->GetAs(0); mHasBias = cmd->indexes()->size() > 3; mTransposeA = cmd->op()->main_as_MatMul()->transposeA(); mTransposeB = cmd->op()->main_as_MatMul()->transposeB(); -} -ErrorCode LoopBatchMatMulBufExecution::onResize(const std::vector &inputs, const std::vector &outputs) { - auto cmd = mLoop->commands()->GetAs(0); OpenCLBackend *mOpenCLBackend = (OpenCLBackend *)backend(); auto runTime = mOpenCLBackend->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); _setTensorStack(mTensors, inputs, outputs, mLoop); mOffset[0] = cmd->view()->GetAs(0)->offset(); @@ -263,44 +241,45 @@ ErrorCode LoopBatchMatMulBufExecution::onResize(const std::vector &inp Unit unit; std::string KernelName = "batch_matmul"; + std::set buildOptions = mBuildOptions; if (mHasBias) { - mBuildOptions.emplace("-DBIAS"); + buildOptions.emplace("-DBIAS"); } if (mTransposeA) { - mBuildOptions.emplace("-DTRANSPOSE_A"); + buildOptions.emplace("-DTRANSPOSE_A"); } if (mTransposeB) { - mBuildOptions.emplace("-DTRANSPOSE_B"); + buildOptions.emplace("-DTRANSPOSE_B"); } - mBuildOptions.emplace("-DH_LEAVES=" + std::to_string(h % 4)); - unit.kernel = runTime->buildKernel("loop", KernelName, mBuildOptions); + buildOptions.emplace("-DH_LEAVES=" + std::to_string(h % 4)); + unit.kernel = runTime->buildKernel("loop", KernelName, buildOptions, mTensors[cmd->indexes()->data()[1]], mTensors[cmd->indexes()->data()[0]]); uint32_t mMaxWorkGroupSize = static_cast(runTime->getMaxWorkGroupSize(unit.kernel)); std::vector mGlobalWorkSize = {(uint32_t)(UP_DIV(h, 4)), (uint32_t)(UP_DIV(e, 4)),(uint32_t)(n)}; uint32_t index = 0; cl_int ret = CL_SUCCESS; - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[0]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[1]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[2]); - ret |= unit.kernel.setArg(index++, openCLBuffer(mTmpTensors[0].get())); - ret |= unit.kernel.setArg(index++, openCLBuffer(mTmpTensors[1].get())); - ret |= unit.kernel.setArg(index++, openCLBuffer(mTmpTensors[2].get())); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(mTmpTensors[0].get())); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(mTmpTensors[1].get())); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(mTmpTensors[2].get())); if (mHasBias) { - ret |= unit.kernel.setArg(index++, openCLBuffer(mTmpTensors[3].get())); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(mTmpTensors[3].get())); } for (int i = 0; i < cmd->iterIndexes()->size(); ++i) { if (mIter[i] >= 0) { - ret |= unit.kernel.setArg(index++, openCLBuffer(mOffsetTensors[offset_index++].get())); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(mOffsetTensors[offset_index++].get())); } else { - ret |= unit.kernel.setArg(index++, openCLBuffer(mTensors[cmd->indexes()->data()[1]])); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(mTensors[cmd->indexes()->data()[1]])); } } - ret |= unit.kernel.setArg(index++, e); - ret |= unit.kernel.setArg(index++, l); - ret |= unit.kernel.setArg(index++, h); - ret |= unit.kernel.setArg(index++, sizeof(mOffset), mOffset); - ret |= unit.kernel.setArg(index++, sizeof(mIter), mIter); - ret |= unit.kernel.setArg(index++, sizeof(mStep), mStep); + ret |= unit.kernel->get().setArg(index++, e); + ret |= unit.kernel->get().setArg(index++, l); + ret |= unit.kernel->get().setArg(index++, h); + ret |= unit.kernel->get().setArg(index++, sizeof(mOffset), mOffset); + ret |= unit.kernel->get().setArg(index++, sizeof(mIter), mIter); + ret |= unit.kernel->get().setArg(index++, sizeof(mStep), mStep); MNN_CHECK_CL_SUCCESS(ret, "setArg LoopBatchMatMulBufExecution"); std::vector mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, runTime, KernelName, unit.kernel).first; @@ -308,7 +287,7 @@ ErrorCode LoopBatchMatMulBufExecution::onResize(const std::vector &inp unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1], mLocalWorkSize[2]}; mUnits.emplace_back(unit); - mOpenCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); + mOpenCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); } //pack output @@ -330,7 +309,6 @@ ErrorCode LoopBatchMatMulBufExecution::onResize(const std::vector &inp for (int i = 0; i < mOffsetTensors.size(); ++i) { mOpenCLBackend->onReleaseBuffer(mOffsetTensors[i].get(), Backend::DYNAMIC); } - mOpenCLBackend->endRecord(mRecording); return NO_ERROR; } @@ -339,15 +317,13 @@ LoopBinaryBufExecution::LoopBinaryBufExecution(const LoopParam *loop, const std: : CommonExecution(bn, op) { mLoop = loop; mTensors.resize(mLoop->tensorNumber()); - auto cmd = loop->commands()->GetAs(0); mBuildOptions.emplace("-DLOOP_BINARY_OPERATOR=" + compute); } -ErrorCode LoopBinaryBufExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode LoopBinaryBufExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { auto cmd = mLoop->commands()->GetAs(0); OpenCLBackend *mOpenCLBackend = (OpenCLBackend *)backend(); auto runTime = mOpenCLBackend->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); _setTensorStack(mTensors, inputs, outputs, mLoop); mUnits.clear(); @@ -448,28 +424,28 @@ ErrorCode LoopBinaryBufExecution::onResize(const std::vector &inputs, const int ChannelBlock = UP_DIV(Channel, 4); auto BuildOptions = mBuildOptions; std::string KernelName = "broadcast_binary_buf"; - unit.kernel = runTime->buildKernel("loop_buf", KernelName, BuildOptions); + unit.kernel = runTime->buildKernel("loop_buf", KernelName, BuildOptions, input0, output); uint32_t mMaxWorkGroupSize = static_cast(runTime->getMaxWorkGroupSize(unit.kernel)); std::vector mGlobalWorkSize = {(uint32_t)(Width), (uint32_t)(Height), (uint32_t)(Batch * ChannelBlock)}; uint32_t index = 0; cl_int ret = CL_SUCCESS; - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[0]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[1]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[2]); - ret |= unit.kernel.setArg(index++, openCLBuffer(output)); - ret |= unit.kernel.setArg(index++, openCLBuffer(input0)); - ret |= unit.kernel.setArg(index++, openCLBuffer(input1)); - ret |= unit.kernel.setArg(index++, sizeof(input0Shape), input0Shape); - ret |= unit.kernel.setArg(index++, sizeof(Input0Size), Input0Size); - ret |= unit.kernel.setArg(index++, sizeof(input1Shape), input1Shape); - ret |= unit.kernel.setArg(index++, sizeof(Input1Size), Input1Size); - ret |= unit.kernel.setArg(index++, sizeof(outputShape), outputShape); - ret |= unit.kernel.setArg(index++, Width); - ret |= unit.kernel.setArg(index++, Height); - ret |= unit.kernel.setArg(index++, Channel); - ret |= unit.kernel.setArg(index++, ChannelBlock); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(input0)); + ret |= unit.kernel->get().setArg(index++, openCLBuffer(input1)); + ret |= unit.kernel->get().setArg(index++, sizeof(input0Shape), input0Shape); + ret |= unit.kernel->get().setArg(index++, sizeof(Input0Size), Input0Size); + ret |= unit.kernel->get().setArg(index++, sizeof(input1Shape), input1Shape); + ret |= unit.kernel->get().setArg(index++, sizeof(Input1Size), Input1Size); + ret |= unit.kernel->get().setArg(index++, sizeof(outputShape), outputShape); + ret |= unit.kernel->get().setArg(index++, Width); + ret |= unit.kernel->get().setArg(index++, Height); + ret |= unit.kernel->get().setArg(index++, Channel); + ret |= unit.kernel->get().setArg(index++, ChannelBlock); MNN_CHECK_CL_SUCCESS(ret, "setArg LoopBinaryBufExecution"); std::vector mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, runTime, KernelName, unit.kernel).first; @@ -478,7 +454,6 @@ ErrorCode LoopBinaryBufExecution::onResize(const std::vector &inputs, unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1], mLocalWorkSize[2]}; mUnits.emplace_back(unit); mOpenCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); - mOpenCLBackend->endRecord(mRecording); return NO_ERROR; } @@ -518,7 +493,7 @@ class LoopBufCreator : public OpenCLBackend::Creator { case BinaryOpOperation_SUB: return new LoopBinaryBufExecution(loop, "in0-in1", op, backend); case BinaryOpOperation_REALDIV: - return new LoopBinaryBufExecution(loop, "sign(in1)*in0/(fabs(in1)>(FLOAT4)((FLOAT)0.0000001)?fabs(in1):(FLOAT4)((FLOAT)0.0000001))", op, backend); + return new LoopBinaryBufExecution(loop, "sign(in1)*in0/(fabs(in1)>(float4)((float)0.0000001)?fabs(in1):(float4)((float)0.0000001))", op, backend); case BinaryOpOperation_MINIMUM: return new LoopBinaryBufExecution(loop, "in0>in1?in1:in0", op, backend); case BinaryOpOperation_MAXIMUM: @@ -534,19 +509,19 @@ class LoopBufCreator : public OpenCLBackend::Creator { case BinaryOpOperation_EQUAL: return new LoopBinaryBufExecution(loop, "convert_float4(-isequal(in0,in1))", op, backend); case BinaryOpOperation_FLOORDIV: - return new LoopBinaryBufExecution(loop, "floor(sign(in1)*in0/(fabs(in1)>(FLOAT4)((FLOAT)0.0000001)?fabs(in1):(FLOAT4)((FLOAT)0.0000001)))", op, backend); + return new LoopBinaryBufExecution(loop, "floor(sign(in1)*in0/(fabs(in1)>(float4)((float)0.0000001)?fabs(in1):(float4)((float)0.0000001)))", op, backend); case BinaryOpOperation_FLOORMOD: - return new LoopBinaryBufExecution(loop, "in0-floor(sign(in1)*in0/(fabs(in1)>(FLOAT4)((FLOAT)0.0000001)?fabs(in1):(FLOAT4)((FLOAT)0.0000001)))*in1", op, backend); + return new LoopBinaryBufExecution(loop, "in0-floor(sign(in1)*in0/(fabs(in1)>(float4)((float)0.0000001)?fabs(in1):(float4)((float)0.0000001)))*in1", op, backend); case BinaryOpOperation_POW: return new LoopBinaryBufExecution(loop, "pow(in0,in1)", op, backend); case BinaryOpOperation_SquaredDifference: return new LoopBinaryBufExecution(loop, "(in0-in1)*(in0-in1)", op, backend); case BinaryOpOperation_ATAN2: - return new LoopBinaryBufExecution(loop, "(in1==(FLOAT4)0?(sign(in0)*(FLOAT4)(PI/2)):(atan(in0/in1)+(in1>(FLOAT4)0?(FLOAT4)0:sign(in0)*(FLOAT4)PI)))", op, backend); + return new LoopBinaryBufExecution(loop, "(in1==(float4)0?(sign(in0)*(float4)(PI/2)):(atan(in0/in1)+(in1>(float4)0?(float4)0:sign(in0)*(float4)PI)))", op, backend); case BinaryOpOperation_NOTEQUAL: return new LoopBinaryBufExecution(loop, "convert_float4(-isnotequal(in0,in1))", op, backend); case BinaryOpOperation_MOD: - return new LoopBinaryBufExecution(loop, "in0-floor(sign(in1)*in0/(fabs(in1)>(FLOAT4)((FLOAT)0.0000001)?fabs(in1):(FLOAT4)((FLOAT)0.0000001)))*in1", op, backend); + return new LoopBinaryBufExecution(loop, "in0-floor(sign(in1)*in0/(fabs(in1)>(float4)((float)0.0000001)?fabs(in1):(float4)((float)0.0000001)))*in1", op, backend); default: break; } diff --git a/source/backend/opencl/execution/buffer/LoopBufExecution.hpp b/source/backend/opencl/execution/buffer/LoopBufExecution.hpp index 7a5270181..6345ccd5f 100644 --- a/source/backend/opencl/execution/buffer/LoopBufExecution.hpp +++ b/source/backend/opencl/execution/buffer/LoopBufExecution.hpp @@ -20,7 +20,7 @@ class LoopGatherBufExecution : public CommonExecution { public: LoopGatherBufExecution(const LoopParam *loop, const MNN::Op *op, Backend *bn); virtual ~LoopGatherBufExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: const LoopParam *mLoop; @@ -38,7 +38,7 @@ class LoopBatchMatMulBufExecution : public CommonExecution { public: LoopBatchMatMulBufExecution(const LoopParam *loop, const MNN::Op *op, Backend *bn); virtual ~LoopBatchMatMulBufExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: const LoopParam *mLoop; @@ -59,7 +59,7 @@ class LoopBinaryBufExecution : public CommonExecution { public: LoopBinaryBufExecution(const LoopParam *loop, const std::string &compute, const MNN::Op *op, Backend *bn); virtual ~LoopBinaryBufExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: const LoopParam *mLoop; diff --git a/source/backend/opencl/execution/buffer/MatmulBufExecution.cpp b/source/backend/opencl/execution/buffer/MatmulBufExecution.cpp index 7e3f3ed63..56ce02e80 100644 --- a/source/backend/opencl/execution/buffer/MatmulBufExecution.cpp +++ b/source/backend/opencl/execution/buffer/MatmulBufExecution.cpp @@ -14,13 +14,14 @@ namespace MNN { namespace OpenCL { MatMulBufExecution::MatMulBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend, - bool transposeA, bool transposeB) : Execution(backend) + bool transposeA, bool transposeB) : CommonExecution(backend, op) , mTransposeA(transposeA), mTransposeB(transposeB){ mOpenCLBackend = static_cast(backend); } -ErrorCode MatMulBufExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode MatMulBufExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { + mUnits.resize(1); + auto &unit = mUnits[0]; auto runtime = mOpenCLBackend->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); Tensor *input0 = inputs[0]; Tensor *input1 = inputs[1]; @@ -30,20 +31,18 @@ ErrorCode MatMulBufExecution::onResize(const std::vector &inputs, cons std::vector input1Shape = tensorShapeFormat(input1); std::vector outputShape = tensorShapeFormat(output); - if (mKernel.get() == nullptr) { - std::set buildOptions; - if(mTransposeA) { - mKernelName = mTransposeB ? "matmul_transA_transB_buf":"matmul_transA_buf"; - } else { - mKernelName = mTransposeB ? "matmul_transB_buf":"matmul_buf"; - } + std::set buildOptions; + if(mTransposeA) { + mKernelName = mTransposeB ? "matmul_transA_transB_buf":"matmul_transA_buf"; + } else { + mKernelName = mTransposeB ? "matmul_transB_buf":"matmul_buf"; + } - if(inputs.size() > 2) { - buildOptions.emplace("-DBIAS"); - } - mKernel = runtime->buildKernel("matmul_buf", mKernelName, buildOptions); - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + if(inputs.size() > 2) { + buildOptions.emplace("-DBIAS"); } + unit.kernel = runtime->buildKernel("matmul_buf", mKernelName, buildOptions); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); //处理二维矩阵相乘,N C相当于H W //二维矩阵相乘 @@ -58,23 +57,23 @@ ErrorCode MatMulBufExecution::onResize(const std::vector &inputs, cons mGlobalWorkSize = {static_cast(widthblocks), static_cast(heightblocks)}; int idx = 0; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, openCLBuffer(input0)); - ret |= mKernel.setArg(idx++, openCLBuffer(input1)); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(input0)); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(input1)); if(inputs.size() > 2) { - ret |= mKernel.setArg(idx++, openCLBuffer(inputs[2])); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(inputs[2])); } - ret |= mKernel.setArg(idx++, openCLBuffer(output)); - ret |= mKernel.setArg(idx++, static_cast(outputChannel)); - ret |= mKernel.setArg(idx++, static_cast(outputChannelBlocks)); - ret |= mKernel.setArg(idx++, static_cast(height)); - ret |= mKernel.setArg(idx++, static_cast(heightblocks)); - ret |= mKernel.setArg(idx++, static_cast(widthblocks)); - ret |= mKernel.setArg(idx++, static_cast(width)); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputChannel)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputChannelBlocks)); + ret |= unit.kernel->get().setArg(idx++, static_cast(height)); + ret |= unit.kernel->get().setArg(idx++, static_cast(heightblocks)); + ret |= unit.kernel->get().setArg(idx++, static_cast(widthblocks)); + ret |= unit.kernel->get().setArg(idx++, static_cast(width)); MNN_CHECK_CL_SUCCESS(ret, "setArg MatMulBufExecution mTransposeA"); - mLocalWorkSize = localWS2DDefault(mGlobalWorkSize, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), mKernelName, mKernel).first; + mLocalWorkSize = localWS2DDefault(mGlobalWorkSize, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), mKernelName, unit.kernel).first; } else { const int height = input0Shape.at(0);//input0 H @@ -85,54 +84,24 @@ ErrorCode MatMulBufExecution::onResize(const std::vector &inputs, cons mGlobalWorkSize = {static_cast(widthblocks), static_cast(height)}; int idx = 0; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, openCLBuffer(input0)); - ret |= mKernel.setArg(idx++, openCLBuffer(input1)); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(input0)); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(input1)); if(inputs.size() > 2) { - ret |= mKernel.setArg(idx++, openCLBuffer(inputs[2])); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(inputs[2])); } - ret |= mKernel.setArg(idx++, openCLBuffer(output)); - ret |= mKernel.setArg(idx++, static_cast(outputChannel)); - ret |= mKernel.setArg(idx++, static_cast(outputChannelBlocks)); - ret |= mKernel.setArg(idx++, static_cast(widthblocks)); - ret |= mKernel.setArg(idx++, static_cast(width)); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputChannel)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputChannelBlocks)); + ret |= unit.kernel->get().setArg(idx++, static_cast(widthblocks)); + ret |= unit.kernel->get().setArg(idx++, static_cast(width)); MNN_CHECK_CL_SUCCESS(ret, "setArg MatMulBufExecution"); - mLocalWorkSize = localWS2DDefault(mGlobalWorkSize, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), mKernelName, mKernel).first; + mLocalWorkSize = localWS2DDefault(mGlobalWorkSize, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), mKernelName, unit.kernel).first; } - mOpenCLBackend->recordKernel2d(mKernel, mGlobalWorkSize, mLocalWorkSize); - mOpenCLBackend->endRecord(mRecording); - return NO_ERROR; -} - -ErrorCode MatMulBufExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { - -#ifdef LOG_VERBOSE - MNN_PRINT("Start MatMulBufExecution onExecute... \n"); -#endif - - auto runtime = mOpenCLBackend->getOpenCLRuntime(); - - #ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - runKernel2D(mKernel, mGlobalWorkSize, mLocalWorkSize, runtime, &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"MatmulBuf", event}); - #else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End MatMulBufExecution onExecute... \n"); -#endif - return NO_ERROR; - } - runKernel2D(mKernel, mGlobalWorkSize, mLocalWorkSize, runtime, nullptr); - #endif - -#ifdef LOG_VERBOSE - MNN_PRINT("End MatMulBufExecution onExecute... \n"); -#endif + mOpenCLBackend->recordKernel2d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1]}; return NO_ERROR; } diff --git a/source/backend/opencl/execution/buffer/MatmulBufExecution.hpp b/source/backend/opencl/execution/buffer/MatmulBufExecution.hpp index 0190ce098..569260f2a 100644 --- a/source/backend/opencl/execution/buffer/MatmulBufExecution.hpp +++ b/source/backend/opencl/execution/buffer/MatmulBufExecution.hpp @@ -11,26 +11,21 @@ #ifndef MatMulBufExecution_hpp #define MatMulBufExecution_hpp -#include "core/Execution.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "backend/opencl/execution/image/CommonExecution.hpp" namespace MNN { namespace OpenCL { -class MatMulBufExecution : public Execution, public CommonExtension { +class MatMulBufExecution : public CommonExecution { public: MatMulBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend, bool transposeA, bool transposeB); virtual ~MatMulBufExecution() = default; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: bool mTransposeA; bool mTransposeB; - cl::Kernel mKernel; std::string mKernelName; uint32_t mMaxWorkGroupSize; std::vector mInput0Shape; diff --git a/source/backend/opencl/execution/buffer/PoolBufExecution.cpp b/source/backend/opencl/execution/buffer/PoolBufExecution.cpp index 3708b2437..8b61b4d77 100644 --- a/source/backend/opencl/execution/buffer/PoolBufExecution.cpp +++ b/source/backend/opencl/execution/buffer/PoolBufExecution.cpp @@ -9,15 +9,12 @@ #ifndef MNN_OPENCL_BUFFER_CLOSED #include "backend/opencl/execution/buffer/PoolBufExecution.hpp" -#include "core/Macro.h" -#include "core/TensorUtils.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" namespace MNN { namespace OpenCL { PoolBufExecution::PoolBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend) - : Execution(backend) { + : CommonExecution(backend, op) { mOpenCLBackend = static_cast(backend); mPoolParams = op->main_as_Pool(); mPoolType = mPoolParams->type(); @@ -30,9 +27,6 @@ PoolBufExecution::PoolBufExecution(const std::vector &inputs, const MN mPaddings[0] = mPoolParams->padY() * 2; mPaddings[1] = mPoolParams->padX() * 2; mPadType = mPoolParams->padType(); - if (inputs[0]->channel() >= 16) { - TensorUtils::setTensorChannelPack(inputs[0], 16); - } auto kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("pooling_buf", "global_pooling_buf", {"-DLOCAL_SIZE=512"}); mMaxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(kernel)); } @@ -45,10 +39,12 @@ int PoolBufExecution::getLocalSize(int size, int maxGroupSize){ return local_size; } -ErrorCode PoolBufExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode PoolBufExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { #ifdef LOG_VERBOSE MNN_PRINT("start PoolBufExecution onResize !\n"); #endif + mUnits.resize(1); + auto &unit = mUnits[0]; auto input = inputs[0]; auto output = outputs[0]; bool returnRedice = outputs.size() == 2; @@ -60,7 +56,6 @@ ErrorCode PoolBufExecution::onResize(const std::vector &inputs, const return SubgrouponResize(inputs, outputs); } #endif /* MNN_SUPPORT_INTEL_SUBGROUP */ - mOpenCLBackend->startRecord(mRecording); std::set buildOptions; std::string kernelName = "pooling"; int local_size; @@ -123,8 +118,8 @@ ErrorCode PoolBufExecution::onResize(const std::vector &inputs, const buildOptions.emplace("-DRETURN_REDICE"); } - mKernel = runtime->buildKernel("pooling_buf", kernelName, buildOptions); - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + unit.kernel = runtime->buildKernel("pooling_buf", kernelName, buildOptions); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); mGlobalWorkSize = { static_cast(outputWidth), @@ -153,27 +148,28 @@ ErrorCode PoolBufExecution::onResize(const std::vector &inputs, const uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[2]); - ret |= mKernel.setArg(idx++, openCLBuffer(input)); - ret |= mKernel.setArg(idx++, sizeof(inputImageShape), inputImageShape); - ret |= mKernel.setArg(idx++, sizeof(outputImageShape), outputImageShape); - ret |= mKernel.setArg(idx++, sizeof(paddingShape), paddingShape); - ret |= mKernel.setArg(idx++, sizeof(strideShape), strideShape); - ret |= mKernel.setArg(idx++, sizeof(kernelShape), kernelShape); - ret |= mKernel.setArg(idx++, openCLBuffer(output)); - ret |= mKernel.setArg(idx++, openCLBuffer(redice)); - ret |= mKernel.setArg(idx++, channelBlocks); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(input)); + ret |= unit.kernel->get().setArg(idx++, sizeof(inputImageShape), inputImageShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(outputImageShape), outputImageShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(paddingShape), paddingShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(strideShape), strideShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(kernelShape), kernelShape); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(redice)); + ret |= unit.kernel->get().setArg(idx++, channelBlocks); MNN_CHECK_CL_SUCCESS(ret, "setArg PoolBufExecution"); std::string kernelNameTune = "pooling_buf"; if (!mPoolParams->isGlobal()){ - mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), kernelNameTune, mKernel).first; + mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), kernelNameTune, unit.kernel).first; } - mOpenCLBackend->recordKernel3d(mKernel, mGlobalWorkSize, mLocalWorkSize); - mOpenCLBackend->endRecord(mRecording); + mOpenCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1], mLocalWorkSize[2]}; #ifdef LOG_VERBOSE MNN_PRINT("end PoolBufExecution onResize !\n"); #endif @@ -185,13 +181,13 @@ ErrorCode PoolBufExecution::SubgrouponResize(const std::vector &inputs #ifdef LOG_VERBOSE MNN_PRINT("start PoolBufExecution onResize !\n"); #endif + auto &unit = mUnits[0]; auto input = inputs[0]; auto output = outputs[0]; bool returnRedice = outputs.size() == 2; auto redice = returnRedice ? outputs[1] : outputs[0]; auto runtime = mOpenCLBackend->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); if (mPoolParams->isGlobal()) { std::vector inputShape = tensorShapeFormat(inputs[0]); @@ -206,6 +202,21 @@ ErrorCode PoolBufExecution::SubgrouponResize(const std::vector &inputs mPaddings[0] = padNeededHeight; mPaddings[1] = padNeededWidth; + } else if (mPoolParams->padType() == PoolPadType_VALID) { + mPaddings[0] = mPaddings[1] = 0; + } + + auto countType = mPoolParams->countType(); + if (mPoolParams->pads() != nullptr && mPadType == PoolPadType_CAFFE) { + mPadType = PoolPadType_VALID; + } + + if (countType == MNN::AvgPoolCountType_DEFAULT) { + if (mPadType == MNN::PoolPadType_CAFFE) { + countType = MNN::AvgPoolCountType_INCLUDE_PADDING; + } else { + countType = MNN::AvgPoolCountType_EXCLUDE_PADDING; + } } MNN_ASSERT(mDilations[0] == 1 && mDilations[1] == 1); @@ -240,6 +251,9 @@ ErrorCode PoolBufExecution::SubgrouponResize(const std::vector &inputs if (mPoolType == PoolType_AVEPOOL) { buildOptions.emplace("-DPOOL_AVG"); + if (countType == MNN::AvgPoolCountType_INCLUDE_PADDING) { + buildOptions.emplace("-DCOUNT_INCLUDE_PADDING"); + } } if(returnRedice){ buildOptions.emplace("-DRETURN_REDICE"); @@ -254,8 +268,8 @@ ErrorCode PoolBufExecution::SubgrouponResize(const std::vector &inputs buildOptions.emplace("-DKERNEL_Y=" + std::to_string(kernelShape[0])); buildOptions.emplace("-DKERNEL_X=" + std::to_string(kernelShape[1])); - mKernel = runtime->buildKernel("pooling_subgroup_buf", KernelName, buildOptions); - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + unit.kernel = runtime->buildKernel("pooling_subgroup_buf", KernelName, buildOptions); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); mGlobalWorkSize = { static_cast(ROUND_UP(channels, 16)), @@ -272,32 +286,33 @@ ErrorCode PoolBufExecution::SubgrouponResize(const std::vector &inputs uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[2]); - ret |= mKernel.setArg(idx++, openCLBuffer(input)); - ret |= mKernel.setArg(idx++, sizeof(inputImageShape), inputImageShape); - ret |= mKernel.setArg(idx++, sizeof(outputImageShape), outputImageShape); - ret |= mKernel.setArg(idx++, sizeof(paddingShape), paddingShape); - ret |= mKernel.setArg(idx++, openCLBuffer(output)); - ret |= mKernel.setArg(idx++, openCLBuffer(redice)); - ret |= mKernel.setArg(idx++, channels); - ret |= mKernel.setArg(idx++, in_channel_block); - ret |= mKernel.setArg(idx++, out_channel_block); - ret |= mKernel.setArg(idx++, static_cast(inputpad.left)); - ret |= mKernel.setArg(idx++, static_cast(inputpad.right)); - ret |= mKernel.setArg(idx++, static_cast(outputpad.left)); - ret |= mKernel.setArg(idx++, static_cast(outputpad.right)); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(input)); + ret |= unit.kernel->get().setArg(idx++, sizeof(inputImageShape), inputImageShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(outputImageShape), outputImageShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(paddingShape), paddingShape); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(redice)); + ret |= unit.kernel->get().setArg(idx++, channels); + ret |= unit.kernel->get().setArg(idx++, in_channel_block); + ret |= unit.kernel->get().setArg(idx++, out_channel_block); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputpad.left)); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputpad.right)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputpad.left)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputpad.right)); MNN_CHECK_CL_SUCCESS(ret, "setArg PoolBufExecution SubGroup"); std::string kernelNameTune = "pooling_subgroup_buf"; if (input_c_pack == 16) { mLocalWorkSize = {16, 1, 1}; } else { - mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), kernelNameTune, mKernel).first; + mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), kernelNameTune, unit.kernel).first; } - mOpenCLBackend->recordKernel3d(mKernel, mGlobalWorkSize, mLocalWorkSize); - mOpenCLBackend->endRecord(mRecording); + mOpenCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1], mLocalWorkSize[2]}; #ifdef LOG_VERBOSE MNN_PRINT("end PoolBufExecution onResize !\n"); @@ -306,37 +321,21 @@ ErrorCode PoolBufExecution::SubgrouponResize(const std::vector &inputs } #endif /* MNN_SUPPORT_INTEL_SUBGROUP */ -ErrorCode PoolBufExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("start PoolBufExecution onExecute !\n"); -#endif - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Pooling", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End PoolBufExecution onExecute... \n"); -#endif - return NO_ERROR; +class PoolBufCreator : public OpenCLBackend::Creator { +public: + virtual ~PoolBufCreator() = default; + virtual Execution *onCreate(const std::vector &inputs, const std::vector &outputs, + const MNN::Op *op, Backend *backend) const override { + for (int i = 0; i < inputs.size(); ++i) { + int channel = inputs[i]->channel(); + if (channel >= 16 && static_cast(backend)->getOpenCLRuntime()->isSupportedIntelSubgroup()) { + TensorUtils::setTensorChannelPack(inputs[i], 16); + } + } + return new PoolBufExecution(inputs, op, backend); } - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end PoolBufExecution onExecute !\n"); -#endif - return NO_ERROR; -} +}; -using PoolBufCreator = TypedCreator; REGISTER_OPENCL_OP_CREATOR(PoolBufCreator, OpType_Pooling, BUFFER); } // namespace OpenCL diff --git a/source/backend/opencl/execution/buffer/PoolBufExecution.hpp b/source/backend/opencl/execution/buffer/PoolBufExecution.hpp index d5a3d90e3..f192a4e55 100644 --- a/source/backend/opencl/execution/buffer/PoolBufExecution.hpp +++ b/source/backend/opencl/execution/buffer/PoolBufExecution.hpp @@ -11,23 +11,16 @@ #ifndef PoolBufExecution_hpp #define PoolBufExecution_hpp -#include -#include -#include -#include "core/Execution.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "backend/opencl/execution/image/CommonExecution.hpp" namespace MNN { namespace OpenCL { -class PoolBufExecution : public Execution, public CommonExtension { +class PoolBufExecution : public CommonExecution { public: PoolBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend); virtual ~PoolBufExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; int getLocalSize(int size, int maxGroupSize); private: @@ -43,7 +36,6 @@ class PoolBufExecution : public Execution, public CommonExtension { std::vector mKernels{1, 1}; std::vector mPaddings{0, 0}; std::vector mDilations{1, 1}; - cl::Kernel mKernel; uint32_t mMaxWorkGroupSize; OpenCLBackend *mOpenCLBackend; }; diff --git a/source/backend/opencl/execution/buffer/RangeBufExecution.cpp b/source/backend/opencl/execution/buffer/RangeBufExecution.cpp index 0f2c9c414..913e841e8 100644 --- a/source/backend/opencl/execution/buffer/RangeBufExecution.cpp +++ b/source/backend/opencl/execution/buffer/RangeBufExecution.cpp @@ -8,23 +8,21 @@ #ifndef MNN_OPENCL_BUFFER_CLOSED #include "backend/opencl/execution/buffer/RangeBufExecution.hpp" -#include "core/Macro.h" -#include "core/TensorUtils.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" namespace MNN { namespace OpenCL { -RangeBufExecution::RangeBufExecution(const std::string &compute, Backend* backend) : Execution(backend) { +RangeBufExecution::RangeBufExecution(const std::string &compute, const MNN::Op *Op, Backend* backend) : CommonExecution(backend, Op) { mBuildOptions.emplace(compute); // Do nothing } -ErrorCode RangeBufExecution::onResize(const std::vector& inputs, const std::vector& outputs) { +ErrorCode RangeBufExecution::onEncode(const std::vector& inputs, const std::vector& outputs) { + mUnits.resize(1); + auto &unit = mUnits[0]; auto openCLBackend = static_cast(backend()); auto runtime = openCLBackend->getOpenCLRuntime(); - openCLBackend->startRecord(mRecording); - mKernel = runtime->buildKernel("range_buf", "range_buf", mBuildOptions); - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + unit.kernel = runtime->buildKernel("range_buf", "range_buf", mBuildOptions, inputs[0], outputs[0]); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); std::vector outputShape = tensorShapeFormat(outputs[0]); @@ -42,53 +40,23 @@ ErrorCode RangeBufExecution::onResize(const std::vector& inputs, const uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[2]); - ret |= mKernel.setArg(idx++, openCLBuffer(inputs[0])); - ret |= mKernel.setArg(idx++, openCLBuffer(inputs[2])); - ret |= mKernel.setArg(idx++, openCLBuffer(outputs[0])); - ret |= mKernel.setArg(idx++, outputWidth); - ret |= mKernel.setArg(idx++, outputHeight); - ret |= mKernel.setArg(idx++, channels); - ret |= mKernel.setArg(idx++, channelBlocks); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(inputs[0])); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(inputs[2])); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(outputs[0])); + ret |= unit.kernel->get().setArg(idx++, outputWidth); + ret |= unit.kernel->get().setArg(idx++, outputHeight); + ret |= unit.kernel->get().setArg(idx++, channels); + ret |= unit.kernel->get().setArg(idx++, channelBlocks); MNN_CHECK_CL_SUCCESS(ret, "setArg RangeBufExecution"); std::string kernelName = "range_buf"; - mLocalSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), kernelName, mKernel).first; - openCLBackend->recordKernel3d(mKernel, mGlobalWorkSize, mLocalSize); - openCLBackend->endRecord(mRecording); - return NO_ERROR; -} - -ErrorCode RangeBufExecution::onExecute(const std::vector& inputs, const std::vector& outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("start RangeBufExecution onExecute..."); -#endif - auto mOpenCLBackend = static_cast(backend()); - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalSize, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Range", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End RangeBufExecution onExecute... \n"); -#endif - return NO_ERROR; - } - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalSize, - mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end RangeBufExecution onExecute..."); -#endif + mLocalSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), kernelName, unit.kernel).first; + openCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; + unit.localWorkSize = {mLocalSize[0], mLocalSize[1], mLocalSize[2]}; return NO_ERROR; } @@ -105,9 +73,9 @@ class RangeBufCreator : public OpenCLBackend::Creator { auto code = inputs[0]->getType().code; switch (code) { case halide_type_int: - return new RangeBufExecution("-DUSE_INT", backend); + return new RangeBufExecution("-DUSE_INT", op, backend); case halide_type_float: - return new RangeBufExecution("-DUSE_FLOAT", backend); + return new RangeBufExecution("-DUSE_FLOAT", op, backend); default: return nullptr; } diff --git a/source/backend/opencl/execution/buffer/RangeBufExecution.hpp b/source/backend/opencl/execution/buffer/RangeBufExecution.hpp index 49d1126b3..5c9876f32 100644 --- a/source/backend/opencl/execution/buffer/RangeBufExecution.hpp +++ b/source/backend/opencl/execution/buffer/RangeBufExecution.hpp @@ -10,27 +10,19 @@ #ifndef RangeBufExecution_hpp #define RangeBufExecution_hpp -#include "core/Execution.hpp" - -#include -#include "MNN_generated.h" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "backend/opencl/execution/image/CommonExecution.hpp" namespace MNN { namespace OpenCL { -class RangeBufExecution : public Execution, public CommonExtension { +class RangeBufExecution : public CommonExecution { public: - RangeBufExecution(const std::string &compute, Backend *backend); + RangeBufExecution(const std::string &compute, const MNN::Op *Op, Backend *backend); virtual ~RangeBufExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: - cl::Kernel mKernel; uint32_t mMaxWorkGroupSize; std::vector mGlobalWorkSize = {1, 1, 1}; std::vector mLocalSize = {1, 1, 1}; diff --git a/source/backend/opencl/execution/buffer/RasterBufExecution.cpp b/source/backend/opencl/execution/buffer/RasterBufExecution.cpp index e3c521f86..97685e670 100644 --- a/source/backend/opencl/execution/buffer/RasterBufExecution.cpp +++ b/source/backend/opencl/execution/buffer/RasterBufExecution.cpp @@ -23,7 +23,7 @@ RasterBufExecution::RasterBufExecution(const std::vector &inputs, cons //nothing to do } -ErrorCode RasterBufExecution::onResize(const std::vector &____inputs, const std::vector &outputs) { +ErrorCode RasterBufExecution::onEncode(const std::vector &____inputs, const std::vector &outputs) { #ifdef LOG_VERBOSE MNN_PRINT("start RasterBufExecution onResize !\n"); #endif @@ -40,168 +40,32 @@ ErrorCode RasterBufExecution::onResize(const std::vector &____inputs, auto regionNum = des->regions.size(); auto mOpenCLBackend = static_cast(backend()); auto runtime = mOpenCLBackend->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); - - mFast = false; - if (outputDes->dimensionFormat == MNN_DATA_FORMAT_NC4HW4) { - mFast = true; - for (int i=0; i< des->regions.size(); ++i) { - auto& slice = des->regions[i]; - if (TensorUtils::getDescribe(slice.origin)->dimensionFormat != MNN_DATA_FORMAT_NC4HW4) { - mFast = false; - break; - } - if (!OpCommonUtils::canBlitFast(slice, output)) { - mFast = false; - break; - } - } - } - if(mFast) - { - mUnits.resize(regionNum); - int kernel_idx = 0; - - if(mNeedZero) - { - mUnits.resize(regionNum + 1); - auto outputShape = tensorShapeFormat(output); - int region[] = {outputShape[0], ROUND_UP(outputShape[3], 4), outputShape[1], outputShape[2]};//nc4hw - Unit &unit = mUnits[kernel_idx++]; - unit.kernel = runtime->buildKernel("raster", "buffer_set_zero", {}); - unit.localWorkSize = {8, 8}; - unit.globalWorkSize = {(uint32_t)UP_DIV((region[2] * region[3]), 8)*8, - (uint32_t)UP_DIV((region[0] * region[1]), 8)*8}; - - int global_dim0 = region[2] * region[3]; - int global_dim1 = region[0] * region[1]; - - uint32_t idx = 0; - cl_int ret = CL_SUCCESS; - ret |= unit.kernel.setArg(idx++, global_dim0); - ret |= unit.kernel.setArg(idx++, global_dim1); - ret |= unit.kernel.setArg(idx++, openCLBuffer(output)); - if(ret != CL_SUCCESS) - { - MNN_PRINT("setArg err %d\n", (int)ret); - } - mOpenCLBackend->recordKernel2d(unit.kernel, {(uint32_t)UP_DIV((region[2] * region[3]), 8)*8, - (uint32_t)UP_DIV((region[0] * region[1]), 8)*8}, {8, 8}); - } - - // nc4hw4 buffer raster - for (auto& slice : des->regions) - { - Tensor::InsideDescribe::Region C4Region; - OpCommonUtils::turnToPackRegion(slice, C4Region, output, 4); - - Unit &unit = mUnits[kernel_idx++]; - unit.kernel = runtime->buildKernel("raster_buf", "raster_nc4hw4_buffer", {}); - - const std::vector gws = {(uint32_t)C4Region.size[2], - (uint32_t)C4Region.size[1], - (uint32_t)C4Region.size[0]}; - uint32_t mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); - - auto outputShape = tensorShapeFormat(output); - auto sliceShape = tensorShapeFormat(slice.origin); - - uint32_t idx = 0; - cl_int ret = CL_SUCCESS; - ret |= unit.kernel.setArg(idx++, gws[0]); - ret |= unit.kernel.setArg(idx++, gws[1]); - ret |= unit.kernel.setArg(idx++, gws[2]); - ret |= unit.kernel.setArg(idx++, openCLBuffer(slice.origin)); - ret |= unit.kernel.setArg(idx++, C4Region.src.offset); - ret |= unit.kernel.setArg(idx++, C4Region.src.stride[0]); - ret |= unit.kernel.setArg(idx++, C4Region.src.stride[1]); - ret |= unit.kernel.setArg(idx++, C4Region.src.stride[2]); - ret |= unit.kernel.setArg(idx++, sliceShape[1]); - ret |= unit.kernel.setArg(idx++, sliceShape[2]); - ret |= unit.kernel.setArg(idx++, sliceShape[3]); - ret |= unit.kernel.setArg(idx++, openCLBuffer(output)); - ret |= unit.kernel.setArg(idx++, C4Region.dst.offset); - ret |= unit.kernel.setArg(idx++, C4Region.dst.stride[0]); - ret |= unit.kernel.setArg(idx++, C4Region.dst.stride[1]); - ret |= unit.kernel.setArg(idx++, C4Region.dst.stride[2]); - ret |= unit.kernel.setArg(idx++, outputShape[1]); - ret |= unit.kernel.setArg(idx++, outputShape[2]); - ret |= unit.kernel.setArg(idx++, outputShape[3]); - if(ret != CL_SUCCESS) - { - MNN_PRINT("setArg err %d\n", (int)ret); - } - std::string name = "raster_nc4hw4_buffer"; - const std::vector lws = localWS3DDefault(gws, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), name, unit.kernel).first; - - unit.localWorkSize = {lws[0], lws[1], lws[2]}; - - unit.globalWorkSize = {ROUND_UP(gws[0], std::max((uint32_t)1, lws[0])), - ROUND_UP(gws[1], std::max((uint32_t)1, lws[1])), - ROUND_UP(gws[2], std::max((uint32_t)1, lws[2]))}; - mOpenCLBackend->recordKernel3d(unit.kernel, gws, lws); - } - if(mNeedZero) - { - MNN_ASSERT((regionNum+1==kernel_idx)); - } - else - { - MNN_ASSERT((regionNum==kernel_idx)); - } - mOpenCLBackend->endRecord(mRecording); - return NO_ERROR; - } - + bool cancombine = CanCombine(outputs); - // Alloc Temp buffer - auto bufferPool = ((OpenCLBackend *)backend())->getBufferPool(); - auto bufferUnitSize = runtime->isSupportedFP16() ? sizeof(half_float::half) : sizeof(float); - for(int i=0; i< regionNum; ++i) - { - auto origin = des->regions[i].origin; - if(mTempInput.find(origin) != mTempInput.end()) - { - continue; - } - - auto buffer = bufferPool->alloc(origin->elementSize()*bufferUnitSize); - mTempInput.insert(std::make_pair(origin, buffer)); - } - mTempOutput = bufferPool->alloc(output->elementSize() * bufferUnitSize); - - for(auto& iter : mTempInput) - { - bufferPool->recycle(iter.second); - } - bufferPool->recycle(mTempOutput); - - auto originNum = mTempInput.size(); if(cancombine){ regionNum = 1; } - mUnits.resize(regionNum + originNum + 1); - int kernel_idx = 0; - if(mNeedZero) + mUnits.resize(regionNum); + auto outputShape = tensorShapeFormat(output); + if(mNeedZero || (outputShape[3] % 4) != 0) { - mUnits.resize(regionNum + originNum + 2); - auto outputShape = tensorShapeFormat(output); + mUnits.resize(regionNum + 1); int region[] = {outputShape[0], ROUND_UP(outputShape[3], 4), outputShape[1], outputShape[2]};//nhwc Unit &unit = mUnits[kernel_idx++]; - unit.kernel = runtime->buildKernel("raster", "buffer_set_zero", {}); + unit.kernel = runtime->buildKernel("raster", "buffer_set_zero", {}, output, output); unit.localWorkSize = {8, 8}; unit.globalWorkSize = {(uint32_t)UP_DIV((region[2] * region[3]), 8)*8, - (uint32_t)UP_DIV((region[0] * region[1]), 8)*8}; - + (uint32_t)UP_DIV((region[0] * region[1]), 8)*8}; + int global_dim0 = region[2] * region[3]; int global_dim1 = region[0] * region[1]; - + uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= unit.kernel.setArg(idx++, global_dim0); - ret |= unit.kernel.setArg(idx++, global_dim1); - ret |= unit.kernel.setArg(idx++, *mTempOutput); + ret |= unit.kernel->get().setArg(idx++, global_dim0); + ret |= unit.kernel->get().setArg(idx++, global_dim1); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(output)); if(ret != CL_SUCCESS) { MNN_PRINT("setArg err %d\n", (int)ret); @@ -209,65 +73,26 @@ ErrorCode RasterBufExecution::onResize(const std::vector &____inputs, mOpenCLBackend->recordKernel2d(unit.kernel, {(uint32_t)UP_DIV((region[2] * region[3]), 8)*8, (uint32_t)UP_DIV((region[0] * region[1]), 8)*8}, {8, 8}); } - - // nc4hw4 buffer to buffer - for(auto& iter : mTempInput) - { - Tensor* origin = iter.first; - std::vector regionShape = tensorShapeFormat(origin); - int inputWH[] = {regionShape[2], regionShape[1]}; - int region[] = {regionShape[0], UP_DIV(regionShape[3], 4), regionShape[1], regionShape[2]}; - - Unit &unit = mUnits[kernel_idx++]; - - if(TensorUtils::getDescribe(origin)->dimensionFormat == MNN_DATA_FORMAT_NHWC)// Image to nhwc buffer - { - unit.kernel = runtime->buildKernel("buffer_convert_buf", "nc4hw4_buffer_to_nhwc_buffer", {}); - } - else //Image to nchw buffer - { - unit.kernel = runtime->buildKernel("buffer_convert_buf", "nc4hw4_buffer_to_nchw_buffer", {}); - } - unit.localWorkSize = {16, 16}; - unit.globalWorkSize = {(uint32_t)UP_DIV(region[3] * region[1], 16) * 16, - (uint32_t)UP_DIV(region[2] * region[0], 16) * 16}; - - int global_dim0 = region[3] * region[1]; - int global_dim1 = region[2] * region[0]; - - //MNN_CHECK_CL_SUCCESS - uint32_t idx = 0; - cl_int ret = CL_SUCCESS; - ret |= unit.kernel.setArg(idx++, global_dim0); - ret |= unit.kernel.setArg(idx++, global_dim1); - ret |= unit.kernel.setArg(idx++, *(iter.second)); - ret |= unit.kernel.setArg(idx++, inputWH[1]); - ret |= unit.kernel.setArg(idx++, inputWH[0]); - ret |= unit.kernel.setArg(idx++, regionShape[3]); - ret |= unit.kernel.setArg(idx++, openCLBuffer(origin)); - - if(ret != CL_SUCCESS) - { - MNN_PRINT("setArg err %d\n", (int)ret); - } - mOpenCLBackend->recordKernel2d(unit.kernel, {(uint32_t)UP_DIV(region[3] * region[1], 16) * 16, - (uint32_t)UP_DIV(region[2] * region[0], 16) * 16}, {16, 16}); - } - - // buffer raster if(cancombine){ auto regions = des->regions; auto slice = regions[0]; int nums = regions.size(); int src_offset = regions[1].src.offset - slice.src.offset; int dst_offset = regions[1].dst.offset - slice.dst.offset; + std::set buildOptions; + auto origin = slice.origin; + auto inputShape = tensorShapeFormat(origin); + if(TensorUtils::getDescribe(origin)->dimensionFormat == MNN_DATA_FORMAT_NHWC) + { + buildOptions.emplace(" -DINPUT_DATA_FORMAT_NHWC"); + } + if(outputDes->dimensionFormat == MNN_DATA_FORMAT_NHWC)//nhwc buffer to Image + { + buildOptions.emplace(" -DOUTPUT_DATA_FORMAT_NHWC"); + } Unit &unit = mUnits[kernel_idx++]; - unit.kernel = runtime->buildKernel("raster", "raster_buffer_combine", {}); - - unit.globalWorkSize = {(uint32_t)slice.size[2] * nums, - (uint32_t)slice.size[1], - (uint32_t)slice.size[0]}; + unit.kernel = runtime->buildKernel("raster_buf", "raster_direct_buffer", buildOptions, output, output); const std::vector gws = {(uint32_t)slice.size[2] * nums, (uint32_t)slice.size[1], @@ -276,28 +101,34 @@ ErrorCode RasterBufExecution::onResize(const std::vector &____inputs, uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= unit.kernel.setArg(idx++, gws[0]); - ret |= unit.kernel.setArg(idx++, gws[1]); - ret |= unit.kernel.setArg(idx++, gws[2]); - ret |= unit.kernel.setArg(idx++, *(mTempInput[slice.origin])); - ret |= unit.kernel.setArg(idx++, slice.src.offset); - ret |= unit.kernel.setArg(idx++, src_offset); - ret |= unit.kernel.setArg(idx++, slice.src.stride[0]); - ret |= unit.kernel.setArg(idx++, slice.src.stride[1]); - ret |= unit.kernel.setArg(idx++, slice.src.stride[2]); - ret |= unit.kernel.setArg(idx++, *mTempOutput); - ret |= unit.kernel.setArg(idx++, slice.dst.offset); - ret |= unit.kernel.setArg(idx++, dst_offset); - ret |= unit.kernel.setArg(idx++, slice.dst.stride[0]); - ret |= unit.kernel.setArg(idx++, slice.dst.stride[1]); - ret |= unit.kernel.setArg(idx++, slice.dst.stride[2]); - ret |= unit.kernel.setArg(idx++, slice.size[2]); + ret |= unit.kernel->get().setArg(idx++, gws[0]); + ret |= unit.kernel->get().setArg(idx++, gws[1]); + ret |= unit.kernel->get().setArg(idx++, gws[2]); + ret |= unit.kernel->get().setArg(idx++, slice.size[2]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(origin)); + ret |= unit.kernel->get().setArg(idx++, slice.src.offset); + ret |= unit.kernel->get().setArg(idx++, src_offset); + ret |= unit.kernel->get().setArg(idx++, slice.src.stride[0]); + ret |= unit.kernel->get().setArg(idx++, slice.src.stride[1]); + ret |= unit.kernel->get().setArg(idx++, slice.src.stride[2]); + ret |= unit.kernel->get().setArg(idx++, inputShape[2]); + ret |= unit.kernel->get().setArg(idx++, inputShape[1]); + ret |= unit.kernel->get().setArg(idx++, inputShape[3]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(idx++, slice.dst.offset); + ret |= unit.kernel->get().setArg(idx++, dst_offset); + ret |= unit.kernel->get().setArg(idx++, slice.dst.stride[0]); + ret |= unit.kernel->get().setArg(idx++, slice.dst.stride[1]); + ret |= unit.kernel->get().setArg(idx++, slice.dst.stride[2]); + ret |= unit.kernel->get().setArg(idx++, outputShape[2]); + ret |= unit.kernel->get().setArg(idx++, outputShape[1]); + ret |= unit.kernel->get().setArg(idx++, outputShape[3]); if(ret != CL_SUCCESS) { MNN_PRINT("setArg err %d\n", (int)ret); } - std::string name = "rasterBuffer"; + std::string name = "raster_buffer"; const std::vector lws = localWS3DDefault(gws, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), name, unit.kernel).first; unit.localWorkSize = {lws[0], lws[1], lws[2]}; @@ -307,10 +138,23 @@ ErrorCode RasterBufExecution::onResize(const std::vector &____inputs, ROUND_UP(gws[2], std::max((uint32_t)1, lws[2]))}; mOpenCLBackend->recordKernel3d(unit.kernel, gws, lws); }else{ - for (auto& slice : des->regions) - { + for(auto& slice : des->regions){ + std::set buildOptions; + auto origin = slice.origin; + auto inputShape = tensorShapeFormat(origin); + int src_offset = 0; + int dst_offset = 0; + if(TensorUtils::getDescribe(origin)->dimensionFormat == MNN_DATA_FORMAT_NHWC) + { + buildOptions.emplace(" -DINPUT_DATA_FORMAT_NHWC"); + } + if(outputDes->dimensionFormat == MNN_DATA_FORMAT_NHWC)//nhwc buffer to Image + { + buildOptions.emplace(" -DOUTPUT_DATA_FORMAT_NHWC"); + } + Unit &unit = mUnits[kernel_idx++]; - unit.kernel = runtime->buildKernel("raster_buf", "raster_buffer", {}); + unit.kernel = runtime->buildKernel("raster_buf", "raster_direct_buffer", buildOptions, output, output); const std::vector gws = {(uint32_t)slice.size[2], (uint32_t)slice.size[1], @@ -319,19 +163,28 @@ ErrorCode RasterBufExecution::onResize(const std::vector &____inputs, uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= unit.kernel.setArg(idx++, gws[0]); - ret |= unit.kernel.setArg(idx++, gws[1]); - ret |= unit.kernel.setArg(idx++, gws[2]); - ret |= unit.kernel.setArg(idx++, *(mTempInput[slice.origin])); - ret |= unit.kernel.setArg(idx++, slice.src.offset); - ret |= unit.kernel.setArg(idx++, slice.src.stride[0]); - ret |= unit.kernel.setArg(idx++, slice.src.stride[1]); - ret |= unit.kernel.setArg(idx++, slice.src.stride[2]); - ret |= unit.kernel.setArg(idx++, *mTempOutput); - ret |= unit.kernel.setArg(idx++, slice.dst.offset); - ret |= unit.kernel.setArg(idx++, slice.dst.stride[0]); - ret |= unit.kernel.setArg(idx++, slice.dst.stride[1]); - ret |= unit.kernel.setArg(idx++, slice.dst.stride[2]); + ret |= unit.kernel->get().setArg(idx++, gws[0]); + ret |= unit.kernel->get().setArg(idx++, gws[1]); + ret |= unit.kernel->get().setArg(idx++, gws[2]); + ret |= unit.kernel->get().setArg(idx++, slice.size[2]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(origin)); + ret |= unit.kernel->get().setArg(idx++, slice.src.offset); + ret |= unit.kernel->get().setArg(idx++, src_offset); + ret |= unit.kernel->get().setArg(idx++, slice.src.stride[0]); + ret |= unit.kernel->get().setArg(idx++, slice.src.stride[1]); + ret |= unit.kernel->get().setArg(idx++, slice.src.stride[2]); + ret |= unit.kernel->get().setArg(idx++, inputShape[2]); + ret |= unit.kernel->get().setArg(idx++, inputShape[1]); + ret |= unit.kernel->get().setArg(idx++, inputShape[3]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(idx++, slice.dst.offset); + ret |= unit.kernel->get().setArg(idx++, dst_offset); + ret |= unit.kernel->get().setArg(idx++, slice.dst.stride[0]); + ret |= unit.kernel->get().setArg(idx++, slice.dst.stride[1]); + ret |= unit.kernel->get().setArg(idx++, slice.dst.stride[2]); + ret |= unit.kernel->get().setArg(idx++, outputShape[2]); + ret |= unit.kernel->get().setArg(idx++, outputShape[1]); + ret |= unit.kernel->get().setArg(idx++, outputShape[3]); if(ret != CL_SUCCESS) { MNN_PRINT("setArg err %d\n", (int)ret); @@ -348,57 +201,6 @@ ErrorCode RasterBufExecution::onResize(const std::vector &____inputs, mOpenCLBackend->recordKernel3d(unit.kernel, gws, lws); } } - - //buffer to nc4hw4 buffer - { - auto outputShape = tensorShapeFormat(output); - int wh[] = {outputShape[2], outputShape[1]}; - int region[] = {outputShape[0], UP_DIV(outputShape[3], 4), outputShape[1], outputShape[2]}; - - Unit &unit = mUnits[kernel_idx++]; - if(outputDes->dimensionFormat == MNN_DATA_FORMAT_NHWC)//nhwc buffer to Image - { - unit.kernel = runtime->buildKernel("buffer_convert_buf", "nhwc_buffer_to_nc4hw4_buffer", {}); - } - else //nchw buffer to Image - { - unit.kernel = runtime->buildKernel("buffer_convert_buf", "nchw_buffer_to_nc4hw4_buffer", {}); - } - unit.localWorkSize = {16, 16}; - unit.globalWorkSize = {(uint32_t)UP_DIV(region[3] * region[1], 16) * 16, - (uint32_t)UP_DIV(region[2] * region[0], 16) * 16}; - - int global_dim0 = region[3] * region[1]; - int global_dim1 = region[2] * region[0]; - - uint32_t idx = 0; - cl_int ret = CL_SUCCESS; - ret |= unit.kernel.setArg(idx++, global_dim0); - ret |= unit.kernel.setArg(idx++, global_dim1); - ret |= unit.kernel.setArg(idx++, *mTempOutput); - ret |= unit.kernel.setArg(idx++, wh[1]); - ret |= unit.kernel.setArg(idx++, wh[0]); - ret |= unit.kernel.setArg(idx++, outputShape[3]); - ret |= unit.kernel.setArg(idx++, openCLBuffer(output)); - if(ret != CL_SUCCESS) - { - MNN_PRINT("setArg err %d\n", (int)ret); - } - mOpenCLBackend->recordKernel2d(unit.kernel, {(uint32_t)UP_DIV(region[3] * region[1], 16) * 16, - (uint32_t)UP_DIV(region[2] * region[0], 16) * 16}, {16, 16}); - } - - //kernel num check - if(mNeedZero) - { - MNN_ASSERT((kernel_idx==regionNum + originNum + 2)); - } - else - { - MNN_ASSERT((kernel_idx==regionNum + originNum + 1)); - } - - mOpenCLBackend->endRecord(mRecording); #ifdef LOG_VERBOSE MNN_PRINT("end RasterBufExecution onResize !\n"); #endif diff --git a/source/backend/opencl/execution/buffer/RasterBufExecution.hpp b/source/backend/opencl/execution/buffer/RasterBufExecution.hpp index 9ada505f3..e704f0716 100644 --- a/source/backend/opencl/execution/buffer/RasterBufExecution.hpp +++ b/source/backend/opencl/execution/buffer/RasterBufExecution.hpp @@ -10,12 +10,7 @@ #ifndef RaterBufExecution_hpp #define RaterBufExecution_hpp -#include -#include -#include #include "backend/opencl/execution/image/CommonExecution.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" namespace MNN { namespace OpenCL { @@ -25,7 +20,7 @@ class RasterBufExecution : public CommonExecution { RasterBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend); virtual ~RasterBufExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: bool CanCombine(const std::vector &outputs); diff --git a/source/backend/opencl/execution/buffer/ReductionBufExecution.cpp b/source/backend/opencl/execution/buffer/ReductionBufExecution.cpp index 19a25dc41..83fc56474 100644 --- a/source/backend/opencl/execution/buffer/ReductionBufExecution.cpp +++ b/source/backend/opencl/execution/buffer/ReductionBufExecution.cpp @@ -15,7 +15,7 @@ namespace MNN { namespace OpenCL { -ReductionBufExecution::ReductionBufExecution(const MNN::Op* op, Backend* backend) : CommonExecution(backend, op) { +ReductionBufExecution::ReductionBufExecution(const std::vector &inputs, const std::vector &outputs, const MNN::Op* op, Backend* backend) : CommonExecution(backend, op) { #ifdef LOG_VERBOSE MNN_PRINT("start ReductionBufExecution init !\n"); #endif @@ -41,7 +41,7 @@ ReductionBufExecution::ReductionBufExecution(const MNN::Op* op, Backend* backend MNN_ASSERT(false); break; } - auto kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("reduction_buf", "reduct_width_buf", {"-DOPERATE(a,b)=(a+b)","-DVALUE=0","-DLOCAL_SIZE=512"}); + auto kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("reduction_buf", "reduct_width_buf", {"-DOPERATE(a,b)=(a+b)","-DVALUE=0","-DLOCAL_SIZE=512"}, inputs[0], outputs[0]); mMaxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(kernel)); #ifdef LOG_VERBOSE MNN_PRINT("end ReductionBufExecution init !\n"); @@ -56,12 +56,11 @@ int ReductionBufExecution::getLocalSize(int size, int maxGroupSize){ return local_size; } -ErrorCode ReductionBufExecution::onResize(const std::vector &inputs, const std::vector &outputs) { - - +ErrorCode ReductionBufExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { + mUnits.resize(1); + auto &unit = mUnits[0]; auto openCLBackend = static_cast(backend()); auto runtime = openCLBackend->getOpenCLRuntime(); - openCLBackend->startRecord(mRecording); auto MaxLocalSize = std::min(runtime->getMaxWorkItemSizes()[0], mMaxWorkGroupSize); auto input = inputs[0]; auto output = outputs[0]; @@ -135,41 +134,41 @@ ErrorCode ReductionBufExecution::onResize(const std::vector &inputs, c if(batch * inputHeight * inputChannels == outside && 1 == inside && dim == inputWidth){ local_size = getLocalSize(inputWidth, MaxLocalSize); buildOption.emplace("-DLOCAL_SIZE=" + std::to_string(local_size)); - mReduct1DKernel = runtime->buildKernel("reduction_buf", "reduct_width_buf", buildOption); + unit.kernel = runtime->buildKernel("reduction_buf", "reduct_width_buf", buildOption, input, output); }else if(batch * inputChannels == outside && inputWidth == inside && dim == inputHeight){ local_size = getLocalSize(inputHeight, MaxLocalSize); buildOption.emplace("-DLOCAL_SIZE=" + std::to_string(local_size)); - mReduct1DKernel = runtime->buildKernel("reduction_buf", "reduct_height_buf", buildOption); + unit.kernel = runtime->buildKernel("reduction_buf", "reduct_height_buf", buildOption, input, output); }else if(batch == outside && inputWidth * inputHeight == inside && dim == inputChannels){ local_size = getLocalSize(inputChannelBlocks - 1, MaxLocalSize); buildOption.emplace("-DLOCAL_SIZE=" + std::to_string(local_size)); if(output->buffer().dimensions == 1){ - mReduct1DKernel = runtime->buildKernel("reduction_buf", "reduct_channel_dim1_buf", buildOption); + unit.kernel = runtime->buildKernel("reduction_buf", "reduct_channel_dim1_buf", buildOption, input, output); }else{ - mReduct1DKernel = runtime->buildKernel("reduction_buf", "reduct_channel_buf", buildOption); + unit.kernel = runtime->buildKernel("reduction_buf", "reduct_channel_buf", buildOption, input, output); } mGlobalWorkSize[2] = static_cast(outputBatch * outputChannels); }else if(1 == outside && inputWidth * inputHeight * inputChannels == inside && dim == batch){ local_size = getLocalSize(batch, MaxLocalSize); buildOption.emplace("-DLOCAL_SIZE=" + std::to_string(local_size)); - mReduct1DKernel = runtime->buildKernel("reduction_buf", "reduct_batch_buf", buildOption); + unit.kernel = runtime->buildKernel("reduction_buf", "reduct_batch_buf", buildOption, input, output); } mGlobalWorkSize[0] *= local_size; }else{ buildOption.emplace("-DLOCAL_SIZE=0"); if(batch * inputHeight * inputChannels == outside && 1 == inside && dim == inputWidth){ - mReduct1DKernel = runtime->buildKernel("reduction_buf", "reduct_width_buf", buildOption); + unit.kernel = runtime->buildKernel("reduction_buf", "reduct_width_buf", buildOption, input, output); }else if(batch * inputChannels == outside && inputWidth == inside && dim == inputHeight){ - mReduct1DKernel = runtime->buildKernel("reduction_buf", "reduct_height_buf", buildOption); + unit.kernel = runtime->buildKernel("reduction_buf", "reduct_height_buf", buildOption, input, output); }else if(batch == outside && inputWidth * inputHeight == inside && dim == inputChannels){ if(output->buffer().dimensions == 1){ - mReduct1DKernel = runtime->buildKernel("reduction_buf", "reduct_channel_dim1_buf", buildOption); + unit.kernel = runtime->buildKernel("reduction_buf", "reduct_channel_dim1_buf", buildOption, input, output); }else{ - mReduct1DKernel = runtime->buildKernel("reduction_buf", "reduct_channel_buf", buildOption); + unit.kernel = runtime->buildKernel("reduction_buf", "reduct_channel_buf", buildOption, input, output); } mGlobalWorkSize[2] = static_cast(outputBatch * outputChannels); }else if(1 == outside && inputWidth * inputHeight * inputChannels == inside && dim == batch){ - mReduct1DKernel = runtime->buildKernel("reduction_buf", "reduct_batch_buf", buildOption); + unit.kernel = runtime->buildKernel("reduction_buf", "reduct_batch_buf", buildOption, input, output); } } //printf("reduce axis:%d , %d %d %d %d, useLocal:%d\n", mAxis[0], inputShape[0], inputShape[1], inputShape[2], inputShape[3], mUseLocal); @@ -177,61 +176,32 @@ ErrorCode ReductionBufExecution::onResize(const std::vector &inputs, c mUnits.resize(1); uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mReduct1DKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mReduct1DKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mReduct1DKernel.setArg(idx++, mGlobalWorkSize[2]); - ret |= mReduct1DKernel.setArg(idx++, openCLBuffer(input)); - ret |= mReduct1DKernel.setArg(idx++, openCLBuffer(output)); - ret |= mReduct1DKernel.setArg(idx++, inputWidth); - ret |= mReduct1DKernel.setArg(idx++, inputHeight); - ret |= mReduct1DKernel.setArg(idx++, inputChannels); - ret |= mReduct1DKernel.setArg(idx++, batch); - ret |= mReduct1DKernel.setArg(idx++, inputChannelBlocks); - ret |= mReduct1DKernel.setArg(idx++, outputWidth); - ret |= mReduct1DKernel.setArg(idx++, outputHeight); - ret |= mReduct1DKernel.setArg(idx++, outputChannels); - ret |= mReduct1DKernel.setArg(idx++, outputChannelBlocks); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(input)); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(idx++, inputWidth); + ret |= unit.kernel->get().setArg(idx++, inputHeight); + ret |= unit.kernel->get().setArg(idx++, inputChannels); + ret |= unit.kernel->get().setArg(idx++, batch); + ret |= unit.kernel->get().setArg(idx++, inputChannelBlocks); + ret |= unit.kernel->get().setArg(idx++, outputWidth); + ret |= unit.kernel->get().setArg(idx++, outputHeight); + ret |= unit.kernel->get().setArg(idx++, outputChannels); + ret |= unit.kernel->get().setArg(idx++, outputChannelBlocks); MNN_CHECK_CL_SUCCESS(ret, "setArg ReductionBufExecution"); if(mUseLocal){ mLocalWorkSize = {static_cast(local_size), 1, 1}; }else{ - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mReduct1DKernel)); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); std::string kernelName = "reduct_buf"; - mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), kernelName, mReduct1DKernel).first; - } - openCLBackend->recordKernel3d(mReduct1DKernel, mGlobalWorkSize, mLocalWorkSize); - openCLBackend->endRecord(mRecording); - return NO_ERROR; -} - -ErrorCode ReductionBufExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("start ReductionBufExecution onExecute !\n"); -#endif - - #ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mReduct1DKernel, mGlobalWorkSize, mLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Reduct1D", event}); - #else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End ReductionBufExecution onExecute... \n"); -#endif - return NO_ERROR; + mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), kernelName, unit.kernel).first; } - run3DKernelDefault(mReduct1DKernel, mGlobalWorkSize, mLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime()); - #endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end ReductionBufExecution onExecute !\n"); -#endif + openCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1], mLocalWorkSize[2]}; return NO_ERROR; } @@ -270,7 +240,7 @@ class ReductionBufCreator : public OpenCLBackend::Creator { return NULL; break; } - return new ReductionBufExecution(op, backend); + return new ReductionBufExecution(inputs, outputs, op, backend); } }; diff --git a/source/backend/opencl/execution/buffer/ReductionBufExecution.hpp b/source/backend/opencl/execution/buffer/ReductionBufExecution.hpp index d7636fca5..fb1d78172 100644 --- a/source/backend/opencl/execution/buffer/ReductionBufExecution.hpp +++ b/source/backend/opencl/execution/buffer/ReductionBufExecution.hpp @@ -11,12 +11,6 @@ #ifndef ReductionBufExecution_hpp #define ReductionBufExecution_hpp -#include "core/Execution.hpp" -#include -#include -#include -#include -#include "backend/opencl/core/OpenCLBackend.hpp" #include "backend/opencl/execution/image/CommonExecution.hpp" namespace MNN { @@ -24,15 +18,12 @@ namespace OpenCL { class ReductionBufExecution : public CommonExecution { public: - ReductionBufExecution(const MNN::Op* op, Backend* backend); + ReductionBufExecution(const std::vector &inputs, const std::vector &outputs, const MNN::Op* op, Backend* backend); virtual ~ReductionBufExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: int getLocalSize(int size, int maxGroupSize); - cl::Kernel mReduct1DKernel; - std::string mKernelName; OpenCLBackend *mOpenCLBackend; MNN::DataType mdataType; int mReductType; diff --git a/source/backend/opencl/execution/buffer/ReluBufExecution.cpp b/source/backend/opencl/execution/buffer/ReluBufExecution.cpp index 64873599b..6d1b9ee3d 100644 --- a/source/backend/opencl/execution/buffer/ReluBufExecution.cpp +++ b/source/backend/opencl/execution/buffer/ReluBufExecution.cpp @@ -9,7 +9,6 @@ #ifndef MNN_OPENCL_BUFFER_CLOSED #include "backend/opencl/execution/buffer/ReluBufExecution.hpp" -#include "core/TensorUtils.hpp" #include "backend/opencl/execution/buffer/UnaryBufExecution.hpp" namespace MNN { namespace OpenCL { @@ -53,10 +52,10 @@ ReluBufExecution::ReluBufExecution(const std::vector &inputs, const MN } ReluBufExecution::~ReluBufExecution() { - mOpenCLBackend->onReleaseBuffer(mPreluParam.get(), Backend::STATIC); + // Do nothing } -ErrorCode ReluBufExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode ReluBufExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { mUnits.resize(1); auto nhwc = tensorShapeFormat(outputs[0]); int nhwcArray[4] = {nhwc[0], nhwc[1], nhwc[2], UP_DIV(nhwc[3], 4)}; @@ -72,19 +71,18 @@ ErrorCode ReluBufExecution::onResize(const std::vector &inputs, const return SubgrouponResize(inputs, outputs); } #endif /* MNN_SUPPORT_INTEL_SUBGROUP */ - mOpenCLBackend->startRecord(mRecording); - mUnits[0].kernel = runTime->buildKernel("binary_buf", "prelu_buf", {"-DOPERATOR=select(in0*in1,in0,in0>=(FLOAT4)0)"}); + mUnits[0].kernel = runTime->buildKernel("binary_buf", "prelu_buf", {"-DOPERATOR=select(in0*in1,in0,in0>=(float4)0)"}, inputs[0], outputs[0]); mMaxWorkGroupSize = static_cast(runTime->getMaxWorkGroupSize(mUnits[0].kernel)); int fullCount[2] = {1, 1}; uint32_t index = 0; cl_int ret = CL_SUCCESS; - ret |= mUnits[0].kernel.setArg(index++, globalSize[0]); - ret |= mUnits[0].kernel.setArg(index++, globalSize[1]); - ret |= mUnits[0].kernel.setArg(index++, openCLBuffer(inputs[0])); - ret |= mUnits[0].kernel.setArg(index++, openCLBuffer(mPreluParam.get())); - ret |= mUnits[0].kernel.setArg(index++, openCLBuffer(outputs[0])); - ret |= mUnits[0].kernel.setArg(index++, nhwcArray); + ret |= mUnits[0].kernel->get().setArg(index++, globalSize[0]); + ret |= mUnits[0].kernel->get().setArg(index++, globalSize[1]); + ret |= mUnits[0].kernel->get().setArg(index++, openCLBuffer(inputs[0])); + ret |= mUnits[0].kernel->get().setArg(index++, openCLBuffer(mPreluParam.get())); + ret |= mUnits[0].kernel->get().setArg(index++, openCLBuffer(outputs[0])); + ret |= mUnits[0].kernel->get().setArg(index++, nhwcArray); MNN_CHECK_CL_SUCCESS(ret, "setArg ReluBufExecution"); std::string name = "prelu_buf"; @@ -93,7 +91,6 @@ ErrorCode ReluBufExecution::onResize(const std::vector &inputs, const mUnits[0].globalWorkSize = {globalSize[0], globalSize[1]}; mUnits[0].localWorkSize = {localSize[0], localSize[1]}; mOpenCLBackend->recordKernel2d(mUnits[0].kernel, globalSize, localSize); - mOpenCLBackend->endRecord(mRecording); return NO_ERROR; } @@ -104,16 +101,71 @@ ErrorCode ReluBufExecution::SubgrouponResize(const std::vector &inputs int nhwcArray[4] = {nhwc[0], nhwc[1], nhwc[2], nhwc[3]}; auto runTime = mOpenCLBackend->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); int input_c_pack = TensorUtils::getTensorChannelPack(inputs[0]); int output_c_pack = TensorUtils::getTensorChannelPack(outputs[0]); auto inputpad = TensorUtils::getDescribe(inputs[0])->mPads; auto outputpad = TensorUtils::getDescribe(outputs[0])->mPads; std::string kernelName = "prelu_buf_c" + std::to_string(input_c_pack) + "_c" + std::to_string(output_c_pack); - std::set BuildOptions; - BuildOptions.emplace("-DOPERATOR=select(in0*in1,in0,in0>=(FLOAT4)0)"); - mUnits[0].kernel = runTime->buildKernel("binary_subgroup_buf", kernelName, BuildOptions); + auto output = outputs[0]; + std::set buildOptions; + if (output->getType().code == halide_type_int) { + if (output->getType().bits == 8) { + buildOptions.emplace("-DINTEL_DATA=uchar"); + buildOptions.emplace("-DAS_INPUT_DATA=as_char"); + buildOptions.emplace("-DAS_INPUT_DATA4=as_char4"); + buildOptions.emplace("-DAS_OUTPUT_DATA4=as_uchar4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ=intel_sub_group_block_read_uc"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ4=intel_sub_group_block_read_uc4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_WRITE4=intel_sub_group_block_write_uc4"); + } else if (output->getType().bits == 32) { + buildOptions.emplace("-DINTEL_DATA=uint"); + buildOptions.emplace("-DAS_INPUT_DATA=as_int"); + buildOptions.emplace("-DAS_INPUT_DATA4=as_int4"); + buildOptions.emplace("-DAS_OUTPUT_DATA4=as_uint4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ=intel_sub_group_block_read"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ4=intel_sub_group_block_read4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_WRITE4=intel_sub_group_block_write4"); + } + } else if (output->getType().code == halide_type_uint) { + if (output->getType().bits == 8) { + buildOptions.emplace("-DINTEL_DATA=uchar"); + buildOptions.emplace("-DAS_INPUT_DATA=as_uchar"); + buildOptions.emplace("-DAS_INPUT_DATA4=as_uchar4"); + buildOptions.emplace("-DAS_OUTPUT_DATA4=as_uchar4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ=intel_sub_group_block_read_uc"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ4=intel_sub_group_block_read_uc4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_WRITE4=intel_sub_group_block_write_uc4"); + } else if (output->getType().bits == 32) { + buildOptions.emplace("-DINTEL_DATA=uint"); + buildOptions.emplace("-DAS_INPUT_DATA=as_uint"); + buildOptions.emplace("-DAS_INPUT_DATA4=as_uint4"); + buildOptions.emplace("-DAS_OUTPUT_DATA4=as_uint4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ=intel_sub_group_block_read"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ4=intel_sub_group_block_read4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_WRITE4=intel_sub_group_block_write4"); + } + } else { + if (runTime->isSupportedFP16()) { + buildOptions.emplace("-DINTEL_DATA=ushort"); + buildOptions.emplace("-DAS_INPUT_DATA=as_half"); + buildOptions.emplace("-DAS_INPUT_DATA4=as_half4"); + buildOptions.emplace("-DAS_OUTPUT_DATA4=as_ushort4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ=intel_sub_group_block_read_us"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ4=intel_sub_group_block_read_us4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_WRITE4=intel_sub_group_block_write_us4"); + } else { + buildOptions.emplace("-DINTEL_DATA=uint"); + buildOptions.emplace("-DAS_INPUT_DATA=as_float"); + buildOptions.emplace("-DAS_INPUT_DATA4=as_float4"); + buildOptions.emplace("-DAS_OUTPUT_DATA4=as_uint4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ=intel_sub_group_block_read"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ4=intel_sub_group_block_read4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_WRITE4=intel_sub_group_block_write4"); + } + } + buildOptions.emplace("-DOPERATOR=select(in0*in1,in0,in0>=(float4)0)"); + mUnits[0].kernel = runTime->buildKernel("binary_subgroup_buf", kernelName, buildOptions, inputs[0], output); mMaxWorkGroupSize = static_cast(runTime->getMaxWorkGroupSize(mUnits[0].kernel)); int fullCount[2] = {1, 1}; @@ -124,17 +176,17 @@ ErrorCode ReluBufExecution::SubgrouponResize(const std::vector &inputs std::vector lws = {1, 16, 1}; if (input_c_pack == 4) { mUnits[0].globalWorkSize = {gws[0], gws[1], gws[2]}; - ret |= mUnits[0].kernel.setArg(index++, mUnits[0].globalWorkSize[0]); - ret |= mUnits[0].kernel.setArg(index++, mUnits[0].globalWorkSize[1]); - ret |= mUnits[0].kernel.setArg(index++, mUnits[0].globalWorkSize[2]); - ret |= mUnits[0].kernel.setArg(index++, openCLBuffer(inputs[0])); - ret |= mUnits[0].kernel.setArg(index++, openCLBuffer(mPreluParam.get())); - ret |= mUnits[0].kernel.setArg(index++, openCLBuffer(outputs[0])); - ret |= mUnits[0].kernel.setArg(index++, nhwcArray); - ret |= mUnits[0].kernel.setArg(index++, static_cast(inputpad.left)); - ret |= mUnits[0].kernel.setArg(index++, static_cast(inputpad.right)); - ret |= mUnits[0].kernel.setArg(index++, static_cast(outputpad.left)); - ret |= mUnits[0].kernel.setArg(index++, static_cast(outputpad.right)); + ret |= mUnits[0].kernel->get().setArg(index++, mUnits[0].globalWorkSize[0]); + ret |= mUnits[0].kernel->get().setArg(index++, mUnits[0].globalWorkSize[1]); + ret |= mUnits[0].kernel->get().setArg(index++, mUnits[0].globalWorkSize[2]); + ret |= mUnits[0].kernel->get().setArg(index++, openCLBuffer(inputs[0])); + ret |= mUnits[0].kernel->get().setArg(index++, openCLBuffer(mPreluParam.get())); + ret |= mUnits[0].kernel->get().setArg(index++, openCLBuffer(output)); + ret |= mUnits[0].kernel->get().setArg(index++, nhwcArray); + ret |= mUnits[0].kernel->get().setArg(index++, static_cast(inputpad.left)); + ret |= mUnits[0].kernel->get().setArg(index++, static_cast(inputpad.right)); + ret |= mUnits[0].kernel->get().setArg(index++, static_cast(outputpad.left)); + ret |= mUnits[0].kernel->get().setArg(index++, static_cast(outputpad.right)); MNN_CHECK_CL_SUCCESS(ret, "setArg ReluBufExecution SubGroup C4"); lws = localWS3DDefault(gws, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), kernelName, mUnits[0].kernel).first; @@ -145,21 +197,20 @@ ErrorCode ReluBufExecution::SubgrouponResize(const std::vector &inputs mUnits[0].globalWorkSize = {gws[0], gws[1], gws[2]}; mUnits[0].localWorkSize = {lws[0], lws[1], lws[2]}; - ret |= mUnits[0].kernel.setArg(index++, mUnits[0].globalWorkSize[0]); - ret |= mUnits[0].kernel.setArg(index++, mUnits[0].globalWorkSize[1]); - ret |= mUnits[0].kernel.setArg(index++, mUnits[0].globalWorkSize[2]); - ret |= mUnits[0].kernel.setArg(index++, openCLBuffer(inputs[0])); - ret |= mUnits[0].kernel.setArg(index++, openCLBuffer(mPreluParam.get())); - ret |= mUnits[0].kernel.setArg(index++, openCLBuffer(outputs[0])); - ret |= mUnits[0].kernel.setArg(index++, nhwcArray); - ret |= mUnits[0].kernel.setArg(index++, static_cast(inputpad.left)); - ret |= mUnits[0].kernel.setArg(index++, static_cast(inputpad.right)); - ret |= mUnits[0].kernel.setArg(index++, static_cast(outputpad.left)); - ret |= mUnits[0].kernel.setArg(index++, static_cast(outputpad.right)); + ret |= mUnits[0].kernel->get().setArg(index++, mUnits[0].globalWorkSize[0]); + ret |= mUnits[0].kernel->get().setArg(index++, mUnits[0].globalWorkSize[1]); + ret |= mUnits[0].kernel->get().setArg(index++, mUnits[0].globalWorkSize[2]); + ret |= mUnits[0].kernel->get().setArg(index++, openCLBuffer(inputs[0])); + ret |= mUnits[0].kernel->get().setArg(index++, openCLBuffer(mPreluParam.get())); + ret |= mUnits[0].kernel->get().setArg(index++, openCLBuffer(outputs[0])); + ret |= mUnits[0].kernel->get().setArg(index++, nhwcArray); + ret |= mUnits[0].kernel->get().setArg(index++, static_cast(inputpad.left)); + ret |= mUnits[0].kernel->get().setArg(index++, static_cast(inputpad.right)); + ret |= mUnits[0].kernel->get().setArg(index++, static_cast(outputpad.left)); + ret |= mUnits[0].kernel->get().setArg(index++, static_cast(outputpad.right)); MNN_CHECK_CL_SUCCESS(ret, "setArg ReluBufExecution SubGroup"); } mOpenCLBackend->recordKernel3d(mUnits[0].kernel, gws, lws); - mOpenCLBackend->endRecord(mRecording); return NO_ERROR; } #endif /* MNN_SUPPORT_INTEL_SUBGROUP */ @@ -177,7 +228,7 @@ class ReluBufCreator : public OpenCLBackend::Creator { bool isRadeonGpu = (static_cast(backend)->getOpenCLRuntime()->getGpuType() == RADEON); for (int i = 0; i < inputs.size(); ++i) { int channel = inputs[i]->channel(); - if (channel >= 16) { + if (channel >= 16 && static_cast(backend)->getOpenCLRuntime()->isSupportedIntelSubgroup()) { TensorUtils::setTensorChannelPack(inputs[i], 16); } } @@ -191,29 +242,29 @@ class ReluBufCreator : public OpenCLBackend::Creator { maxValue = op->main_as_Relu6()->maxValue(); } if (isRadeonGpu) { - std::string temp = "(in<=(FLOAT4)((FLOAT)%f)?(FLOAT4)((FLOAT)%f):(in>=(FLOAT4)((FLOAT)%f)?(FLOAT4)((FLOAT)%f):in))"; + std::string temp = "(in<=(float4)((float)%f)?(float4)((float)%f):(in>=(float4)((float)%f)?(float4)((float)%f):in))"; sprintf(storage, temp.c_str(), minValue, minValue, maxValue, maxValue); - return new UnaryBufExecution(storage, backend); + return new UnaryBufExecution(storage, op, backend); } - std::string temp = "clamp(in,(FLOAT4)((FLOAT)%f),(FLOAT4)((FLOAT)%f))"; + std::string temp = "clamp(in,(float4)((float)%f),(float4)((float)%f))"; sprintf(storage, temp.c_str(), minValue, maxValue); - return new UnaryBufExecution(storage, backend); + return new UnaryBufExecution(storage, op, backend); } if (op->type() == OpType_ReLU) { if (op->main_as_Relu()->slope() == 0.0f) { if (isRadeonGpu) { - return new UnaryBufExecution("(in>(FLOAT4)((FLOAT)0)?in:(FLOAT4)((FLOAT)0))", backend); + return new UnaryBufExecution("(in>(float4)((float)0)?in:(float4)((float)0))", op, backend); } - return new UnaryBufExecution("fmax(in,(FLOAT4)((FLOAT)0))", backend); + return new UnaryBufExecution("fmax(in,(float4)((float)0))", op, backend); } auto slope = op->main_as_Relu()->slope(); char slopeCStr[30] = {}; sprintf(slopeCStr, "%.8f", slope); std::string slopeStr = slopeCStr; if (isRadeonGpu) { - return new UnaryBufExecution("in<(FLOAT4)((FLOAT)0)?(FLOAT)(" + slopeStr + "f)*in:in", backend); + return new UnaryBufExecution("in<(float4)((float)0)?(float)(" + slopeStr + "f)*in:in", op, backend); } - return new UnaryBufExecution("select((FLOAT)(" + slopeStr + "f)*in,in,in>=(FLOAT4)((FLOAT)0))", backend); + return new UnaryBufExecution("select((float)(" + slopeStr + "f)*in,in,in>=(float4)((float)0))", op, backend); } if (op->type() == OpType_PReLU) { if (op->main_as_PRelu()->slopeCount() == 1) { @@ -222,9 +273,9 @@ class ReluBufCreator : public OpenCLBackend::Creator { sprintf(slopeCStr, "%.8f", slope); std::string slopeStr = slopeCStr; if (isRadeonGpu) { - return new UnaryBufExecution("in<(FLOAT4)((FLOAT)0)?(FLOAT)(" + slopeStr + "f)*in:in", backend); + return new UnaryBufExecution("in<(float4)((float)0)?(float)(" + slopeStr + "f)*in:in", op, backend); } - return new UnaryBufExecution("select((FLOAT)(" + slopeStr + "f)*in,in,in>=(FLOAT4)((FLOAT)0))", backend); + return new UnaryBufExecution("select((float)(" + slopeStr + "f)*in,in,in>=(float4)((float)0))", op, backend); } return new ReluBufExecution(inputs, op, backend); } diff --git a/source/backend/opencl/execution/buffer/ReluBufExecution.hpp b/source/backend/opencl/execution/buffer/ReluBufExecution.hpp index 9b425595a..c8e6810b5 100644 --- a/source/backend/opencl/execution/buffer/ReluBufExecution.hpp +++ b/source/backend/opencl/execution/buffer/ReluBufExecution.hpp @@ -20,14 +20,13 @@ class ReluBufExecution : public CommonExecution { ReluBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend); virtual ~ReluBufExecution(); - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: #ifdef MNN_SUPPORT_INTEL_SUBGROUP ErrorCode SubgrouponResize(const std::vector &inputs, const std::vector &outputs); #endif /* MNN_SUPPORT_INTEL_SUBGROUP */ std::shared_ptr mPreluParam; - cl::Kernel mKernel; uint32_t mMaxWorkGroupSize; OpenCLBackend *mOpenCLBackend; }; diff --git a/source/backend/opencl/execution/buffer/ScaleBufExecution.cpp b/source/backend/opencl/execution/buffer/ScaleBufExecution.cpp index 2902e3191..43ce99a58 100644 --- a/source/backend/opencl/execution/buffer/ScaleBufExecution.cpp +++ b/source/backend/opencl/execution/buffer/ScaleBufExecution.cpp @@ -9,17 +9,17 @@ #ifndef MNN_OPENCL_BUFFER_CLOSED #include "backend/opencl/execution/buffer/ScaleBufExecution.hpp" -#include "core/Macro.h" -#include "core/TensorUtils.hpp" namespace MNN { namespace OpenCL { ScaleBufExecution::ScaleBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend) - : Execution(backend) { + : CommonExecution(backend, op) { #ifdef LOG_VERBOSE MNN_PRINT("Start ScaleBufExecution init !\n"); #endif + mUnits.resize(1); + auto &unit = mUnits[0]; auto openclBackend = (OpenCLBackend *)backend; mOpenCLBackend = static_cast(backend); const auto *scaleParams = op->main_as_Scale(); @@ -27,7 +27,7 @@ ScaleBufExecution::ScaleBufExecution(const std::vector &inputs, const const float *scaleDataPtr = scaleParams->scaleData()->data(); int buffer_size = ALIGN_UP4(scaleSize); - if(mOpenCLBackend->getOpenCLRuntime()->isWeightCpuTransHalf()) { + if (mOpenCLBackend->getOpenCLRuntime()->isSupportedFP16()) { buffer_size *= sizeof(half_float::half); } else { buffer_size *= sizeof(float); @@ -41,7 +41,7 @@ ScaleBufExecution::ScaleBufExecution(const std::vector &inputs, const auto scalePtrCL = openclBackend->getOpenCLRuntime()->commandQueue().enqueueMapBuffer( scaleBuffer, true, CL_MAP_WRITE, 0, buffer_size, nullptr, nullptr, &error); if(nullptr != scalePtrCL && error == CL_SUCCESS){ - if(mOpenCLBackend->getOpenCLRuntime()->isWeightCpuTransHalf()){ + if (mOpenCLBackend->getOpenCLRuntime()->isSupportedFP16()) { for (int i = 0; i < scaleSize; i++) { ((half_float::half *)scalePtrCL)[i] = (half_float::half)(scaleDataPtr[i]); } @@ -64,7 +64,7 @@ ScaleBufExecution::ScaleBufExecution(const std::vector &inputs, const const float *biasDataPtr = scaleParams->biasData()->data(); int buffer_size = ALIGN_UP4(biasSize); - if(openclBackend->getOpenCLRuntime()->isWeightCpuTransHalf()) { + if (openclBackend->getOpenCLRuntime()->isSupportedFP16()) { buffer_size *= sizeof(half_float::half); } else { buffer_size *= sizeof(float); @@ -77,7 +77,7 @@ ScaleBufExecution::ScaleBufExecution(const std::vector &inputs, const auto biasPtrCL = openclBackend->getOpenCLRuntime()->commandQueue().enqueueMapBuffer( biasBuffer, true, CL_MAP_WRITE, 0, buffer_size, nullptr, nullptr, &error); if(nullptr != biasPtrCL && error == CL_SUCCESS){ - if(mOpenCLBackend->getOpenCLRuntime()->isWeightCpuTransHalf()){ + if (mOpenCLBackend->getOpenCLRuntime()->isSupportedFP16()) { for (int i = 0; i < biasSize; i++) { ((half_float::half *)biasPtrCL)[i] = (half_float::half)(biasDataPtr[i]); } @@ -98,8 +98,8 @@ ScaleBufExecution::ScaleBufExecution(const std::vector &inputs, const } auto runtime = mOpenCLBackend->getOpenCLRuntime(); - mKernel = runtime->buildKernel("scale_buf", "scale_buf", buildOptions); - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + unit.kernel = runtime->buildKernel("scale_buf", "scale_buf", buildOptions); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); #ifdef LOG_VERBOSE MNN_PRINT("end ScaleBufExecution init !\n"); @@ -107,20 +107,16 @@ ScaleBufExecution::ScaleBufExecution(const std::vector &inputs, const } ScaleBufExecution::~ScaleBufExecution() { - if (nullptr != mBias) { - mOpenCLBackend->onReleaseBuffer(mBias.get(), Backend::STATIC); - } - mOpenCLBackend->onReleaseBuffer(mScale.get(), Backend::STATIC); + // Do nothing } -ErrorCode ScaleBufExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode ScaleBufExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { #ifdef LOG_VERBOSE MNN_PRINT("Start ScaleBufExecution onResize !\n"); #endif - + auto &unit = mUnits[0]; std::vector inputShape = tensorShapeFormat(inputs[0]); auto runtime = mOpenCLBackend->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); const int batch = inputShape.at(0); const int height = inputShape.at(1); @@ -135,52 +131,23 @@ ErrorCode ScaleBufExecution::onResize(const std::vector &inputs, const int shape[4] = {batch, height, width, channelBlocks}; uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, openCLBuffer(inputs[0])); - ret |= mKernel.setArg(idx++, openCLBuffer(mScale.get())); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(inputs[0])); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(mScale.get())); if (mHasBias) { - ret |= mKernel.setArg(idx++, openCLBuffer(mBias.get())); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(mBias.get())); } - ret |= mKernel.setArg(idx++, openCLBuffer(outputs[0])); - ret |= mKernel.setArg(idx++, shape); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(outputs[0])); + ret |= unit.kernel->get().setArg(idx++, shape); MNN_CHECK_CL_SUCCESS(ret, "setArg ScaleBufExecution"); std::string name = "scale_buf"; - mLocalWorkSize = localWS2DDefault(mGlobalWorkSize, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), name, mKernel).first; - - mOpenCLBackend->recordKernel2d(mKernel, mGlobalWorkSize, mLocalWorkSize); - mOpenCLBackend->endRecord(mRecording); - return NO_ERROR; -} - -ErrorCode ScaleBufExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("Start ScaleBufExecution onExecute !\n"); -#endif - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - runKernel2D(mKernel, mGlobalWorkSize, mLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime(), &event); + mLocalWorkSize = localWS2DDefault(mGlobalWorkSize, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), name, unit.kernel).first; - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Scale", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End ScaleBufExecution onExecute... \n"); -#endif - return NO_ERROR; - } - runKernel2D(mKernel, mGlobalWorkSize, mLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end ScaleBufExecution onExecute !\n"); -#endif + mOpenCLBackend->recordKernel2d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1]}; return NO_ERROR; } diff --git a/source/backend/opencl/execution/buffer/ScaleBufExecution.hpp b/source/backend/opencl/execution/buffer/ScaleBufExecution.hpp index 832b2d634..b01897bf3 100644 --- a/source/backend/opencl/execution/buffer/ScaleBufExecution.hpp +++ b/source/backend/opencl/execution/buffer/ScaleBufExecution.hpp @@ -11,29 +11,21 @@ #ifndef ScaleBufExecution_hpp #define ScaleBufExecution_hpp -#include -#include -#include -#include "core/Execution.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "backend/opencl/execution/image/CommonExecution.hpp" namespace MNN { namespace OpenCL { -class ScaleBufExecution : public Execution, public CommonExtension { +class ScaleBufExecution : public CommonExecution { public: ScaleBufExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend); virtual ~ScaleBufExecution(); - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: std::shared_ptr mScale; std::shared_ptr mBias; - cl::Kernel mKernel; uint32_t mMaxWorkGroupSize; std::vector mGlobalWorkSize{1, 1, 1}; std::vector mLocalWorkSize{1, 1, 1}; diff --git a/source/backend/opencl/execution/buffer/SelectBufExecution.cpp b/source/backend/opencl/execution/buffer/SelectBufExecution.cpp index ff91f0144..385c853a4 100644 --- a/source/backend/opencl/execution/buffer/SelectBufExecution.cpp +++ b/source/backend/opencl/execution/buffer/SelectBufExecution.cpp @@ -15,21 +15,23 @@ namespace MNN { namespace OpenCL { -SelectBufExecution::SelectBufExecution(Backend* backend) : Execution(backend) { +SelectBufExecution::SelectBufExecution(Backend* backend, const MNN::Op* Op) : CommonExecution(backend, Op) { // Do nothing } -ErrorCode SelectBufExecution::onResize(const std::vector& inputs, const std::vector& outputs) { +ErrorCode SelectBufExecution::onEncode(const std::vector& inputs, const std::vector& outputs) { + mUnits.resize(1); + auto &unit = mUnits[0]; auto inSize1 = inputs[1]->elementSize(); auto inSize2 = inputs[2]->elementSize(); auto openCLBackend = static_cast(backend()); auto runtime = openCLBackend->getOpenCLRuntime(); - openCLBackend->startRecord(mRecording); + std::set buildOptions = mBuildOptions; if(inSize1 == 1) - mBuildOptions.emplace("-DINSIZE1_EUQAL_1"); + buildOptions.emplace("-DINSIZE1_EUQAL_1"); if(inSize2 == 1) - mBuildOptions.emplace("-DINSIZE2_EUQAL_1"); - mKernel = runtime->buildKernel("select_buf", "select_buf", mBuildOptions); - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + buildOptions.emplace("-DINSIZE2_EUQAL_1"); + unit.kernel = runtime->buildKernel("select_buf", "select_buf", buildOptions); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); std::vector outputShape = tensorShapeFormat(outputs[0]); @@ -47,49 +49,19 @@ ErrorCode SelectBufExecution::onResize(const std::vector& inputs, const uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, openCLBuffer(inputs[0])); - ret |= mKernel.setArg(idx++, openCLBuffer(inputs[1])); - ret |= mKernel.setArg(idx++, openCLBuffer(inputs[2])); - ret |= mKernel.setArg(idx++, openCLBuffer(outputs[0])); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(inputs[0])); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(inputs[1])); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(inputs[2])); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(outputs[0])); MNN_CHECK_CL_SUCCESS(ret, "setArg SelectBufExecution"); std::string kernelName = "select_buf"; - mLocalSize = localWS2DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), kernelName, mKernel).first; - openCLBackend->recordKernel2d(mKernel, mGlobalWorkSize, mLocalSize); - openCLBackend->endRecord(mRecording); - return NO_ERROR; -} - -ErrorCode SelectBufExecution::onExecute(const std::vector& inputs, const std::vector& outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("start SelectBufExecution onExecute..."); -#endif - auto mOpenCLBackend = static_cast(backend()); - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - runKernel2D(mKernel, mGlobalWorkSize, mLocalSize, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Select", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End SelectBufExecution onExecute... \n"); -#endif - return NO_ERROR; - } - runKernel2D(mKernel, mGlobalWorkSize, mLocalSize, - mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end SelectBufExecution onExecute..."); -#endif + mLocalSize = localWS2DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), kernelName, unit.kernel).first; + openCLBackend->recordKernel2d(unit.kernel, mGlobalWorkSize, mLocalSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1]}; + unit.localWorkSize = {mLocalSize[0], mLocalSize[1]}; return NO_ERROR; } @@ -103,7 +75,7 @@ class SelectBufCreator : public OpenCLBackend::Creator { for (int i = 0; i < outputs.size(); ++i) { TensorUtils::setTensorSupportPack(outputs[i], false); } - return new SelectBufExecution(backend); + return new SelectBufExecution(backend, op); } }; diff --git a/source/backend/opencl/execution/buffer/SelectBufExecution.hpp b/source/backend/opencl/execution/buffer/SelectBufExecution.hpp index db8351950..ea59310bc 100644 --- a/source/backend/opencl/execution/buffer/SelectBufExecution.hpp +++ b/source/backend/opencl/execution/buffer/SelectBufExecution.hpp @@ -10,27 +10,19 @@ #ifndef SelectBufExecution_hpp #define SelectBufExecution_hpp -#include "core/Execution.hpp" - -#include -#include "MNN_generated.h" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "backend/opencl/execution/image/CommonExecution.hpp" namespace MNN { namespace OpenCL { -class SelectBufExecution : public Execution, public CommonExtension { +class SelectBufExecution : public CommonExecution { public: - SelectBufExecution(Backend *backend); + SelectBufExecution(Backend *backend, const MNN::Op* Op); virtual ~SelectBufExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: - cl::Kernel mKernel; uint32_t mMaxWorkGroupSize; std::vector mGlobalWorkSize = {1, 1, 1}; std::vector mLocalSize = {1, 1, 1}; diff --git a/source/backend/opencl/execution/buffer/SoftmaxBufExecution.cpp b/source/backend/opencl/execution/buffer/SoftmaxBufExecution.cpp index 103a281cc..09dca38d5 100644 --- a/source/backend/opencl/execution/buffer/SoftmaxBufExecution.cpp +++ b/source/backend/opencl/execution/buffer/SoftmaxBufExecution.cpp @@ -9,14 +9,12 @@ #ifndef MNN_OPENCL_BUFFER_CLOSED #include "backend/opencl/execution/buffer/SoftmaxBufExecution.hpp" -#include "core/Macro.h" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" namespace MNN { namespace OpenCL { -SoftmaxBufExecution::SoftmaxBufExecution(const std::vector &inputs, int axis, Backend *backend) - : Execution(backend) { +SoftmaxBufExecution::SoftmaxBufExecution(const std::vector &inputs, int axis, const MNN::Op* Op, Backend *backend) + : CommonExecution(backend, Op) { mAxis = axis; mOpenCLBackend = static_cast(backend); auto kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("softmax_buf", "softmax_channel", {"-DSOFTMAX_LOCAL_SIZE=512"}); @@ -25,20 +23,18 @@ SoftmaxBufExecution::SoftmaxBufExecution(const std::vector &inputs, in bool SoftmaxBufExecution::buildSoftmaxKernel(int localSize) { auto runtime = mOpenCLBackend->getOpenCLRuntime(); - if (mKernel.get() == nullptr) { - std::set buildOptions; - buildOptions.emplace("-DSOFTMAX_LOCAL_SIZE=" + std::to_string(localSize)); - std::string kernelName; - if (mAxis == 1) { - mKernel = runtime->buildKernel("softmax_buf", "softmax_channel", buildOptions); - } else if (mAxis == 2) { - mKernel = runtime->buildKernel("softmax_buf", "softmax_height", buildOptions); - } else { - MNN_ASSERT(mAxis == 3); - mKernel = runtime->buildKernel("softmax_buf", "softmax_width", buildOptions); - } - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + std::set buildOptions; + buildOptions.emplace("-DSOFTMAX_LOCAL_SIZE=" + std::to_string(localSize)); + std::string kernelName; + if (mAxis == 1) { + mUnits[0].kernel = runtime->buildKernel("softmax_buf", "softmax_channel", buildOptions); + } else if (mAxis == 2) { + mUnits[0].kernel = runtime->buildKernel("softmax_buf", "softmax_height", buildOptions); + } else { + MNN_ASSERT(mAxis == 3); + mUnits[0].kernel = runtime->buildKernel("softmax_buf", "softmax_width", buildOptions); } + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mUnits[0].kernel)); return true; } @@ -50,13 +46,14 @@ int SoftmaxBufExecution::getLocalSize(int size, int maxGroupSize){ return local_size; } -ErrorCode SoftmaxBufExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode SoftmaxBufExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { + mUnits.resize(1); + auto &unit = mUnits[0]; Tensor *input = inputs[0]; Tensor *output = outputs[0]; const auto dims = input->buffer().dimensions; auto runtime = mOpenCLBackend->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); auto MaxLocalSize = std::min(runtime->getMaxWorkItemSizes()[0], mMaxWorkGroupSize); int inside = 1; int outside = 1; @@ -84,79 +81,44 @@ ErrorCode SoftmaxBufExecution::onResize(const std::vector &inputs, con const int channelBlocks = UP_DIV(outputChannels, 4); const int remainChannels = channelBlocks * 4 - outputChannels; + int shape[] = {outputBatch, channelBlocks, outputHeight, outputWidth}; int localSize = getLocalSize(channel, MaxLocalSize); if(localSize < 4){ localSize = 1; } if(inputBatch == outside && channel == inputChannels && inside == inputWidth * inputHeight){ mAxis = 1; + mGlobalWorkSize = {(uint32_t)(localSize), (uint32_t)outputWidth, (uint32_t)outputHeight * outputBatch}; localSize = getLocalSize(channelBlocks, MaxLocalSize); }else if(inputBatch * inputChannels == outside && channel == inputHeight && inside == inputWidth){ mAxis = 2; + mGlobalWorkSize = {(uint32_t)(localSize), (uint32_t)channelBlocks*outputWidth, (uint32_t)outputBatch}; }else if(inputBatch * inputChannels * inputHeight == outside && channel == inputWidth && inside == 1){ mAxis = 3; + mGlobalWorkSize = {(uint32_t)(localSize), (uint32_t)channelBlocks, (uint32_t)outputBatch*outputHeight}; } buildSoftmaxKernel(localSize); cl_int ret = CL_SUCCESS; - int shape[] = {outputBatch, channelBlocks, outputHeight, outputWidth}; - if (mAxis == 1) { - mGlobalWorkSize = {(uint32_t)(localSize), (uint32_t)outputWidth, (uint32_t)outputHeight * outputBatch}; - - } else if (mAxis == 2){ - mGlobalWorkSize = {(uint32_t)(localSize), (uint32_t)channelBlocks*outputWidth, (uint32_t)outputBatch}; - } else { - MNN_ASSERT(mAxis == 3); - mGlobalWorkSize = {(uint32_t)(localSize), (uint32_t)channelBlocks, (uint32_t)outputBatch*outputHeight}; - } mLocalWorkSize = {(uint32_t)(localSize), 1, 1}; uint32_t idx = 0; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[2]); - - ret |= mKernel.setArg(idx++, openCLImage(input)); - ret |= mKernel.setArg(idx++, openCLImage(output)); - ret |= mKernel.setArg(idx++, remainChannels); - ret |= mKernel.setArg(idx++, shape); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[2]); + + ret |= unit.kernel->get().setArg(idx++, openCLImage(input)); + ret |= unit.kernel->get().setArg(idx++, openCLImage(output)); + ret |= unit.kernel->get().setArg(idx++, remainChannels); + ret |= unit.kernel->get().setArg(idx++, shape); MNN_CHECK_CL_SUCCESS(ret, "setArg SoftmaxBufExecution"); if(localSize == 1){ - mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), "softmax_buf", mKernel).first; + mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), "softmax_buf", unit.kernel).first; } - mOpenCLBackend->recordKernel3d(mKernel, mGlobalWorkSize, mLocalWorkSize); - mOpenCLBackend->endRecord(mRecording); - return NO_ERROR; -} - -ErrorCode SoftmaxBufExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("start SoftmaxBufExecution onExecute !\n"); -#endif - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Softmax", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End SelectBufExecution onExecute... \n"); -#endif - return NO_ERROR; - } - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalWorkSize, mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end SoftmaxBufExecution onExecute !\n"); -#endif - + mOpenCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1], mLocalWorkSize[2]}; return NO_ERROR; } @@ -181,7 +143,7 @@ class SoftmaxBufCreator : public OpenCLBackend::Creator { axis = index[axis]; //1 : channel //2 : height if (1 == axis || 2 == axis || 3 == axis) { - return new SoftmaxBufExecution(inputs, axis, backend); + return new SoftmaxBufExecution(inputs, axis, op, backend); } return nullptr; } else { @@ -191,7 +153,7 @@ class SoftmaxBufCreator : public OpenCLBackend::Creator { } if (1 == axis || 2 == axis || 3 == axis) { - return new SoftmaxBufExecution(inputs, axis, backend); + return new SoftmaxBufExecution(inputs, axis, op, backend); } return nullptr; } diff --git a/source/backend/opencl/execution/buffer/SoftmaxBufExecution.hpp b/source/backend/opencl/execution/buffer/SoftmaxBufExecution.hpp index dcc87f6c7..4385bae7d 100644 --- a/source/backend/opencl/execution/buffer/SoftmaxBufExecution.hpp +++ b/source/backend/opencl/execution/buffer/SoftmaxBufExecution.hpp @@ -11,26 +11,21 @@ #ifndef SoftmaxBufExecution_hpp #define SoftmaxBufExecution_hpp -#include -#include "core/Execution.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "backend/opencl/execution/image/CommonExecution.hpp" namespace MNN { namespace OpenCL { -class SoftmaxBufExecution : public Execution, public CommonExtension { +class SoftmaxBufExecution : public CommonExecution { public: - SoftmaxBufExecution(const std::vector &inputs, int axis, Backend *backend); + SoftmaxBufExecution(const std::vector &inputs, int axis, const MNN::Op* Op, Backend *backend); virtual ~SoftmaxBufExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; bool buildSoftmaxKernel(int localSize); private: int getLocalSize(int size, int maxGroupSize); - cl::Kernel mKernel; uint32_t mMaxWorkGroupSize; OpenCLBackend *mOpenCLBackend; std::vector mGlobalWorkSize{1, 1, 1}; diff --git a/source/backend/opencl/execution/buffer/UnaryBufExecution.cpp b/source/backend/opencl/execution/buffer/UnaryBufExecution.cpp index 18ac68319..e176e5c1c 100644 --- a/source/backend/opencl/execution/buffer/UnaryBufExecution.cpp +++ b/source/backend/opencl/execution/buffer/UnaryBufExecution.cpp @@ -8,34 +8,33 @@ #ifndef MNN_OPENCL_BUFFER_CLOSED #include "backend/opencl/execution/buffer/UnaryBufExecution.hpp" -#include "core/Macro.h" -#include "core/TensorUtils.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" namespace MNN { namespace OpenCL { -UnaryBufExecution::UnaryBufExecution(const std::string& compute, Backend* backend) : Execution(backend) { +UnaryBufExecution::UnaryBufExecution(const std::string& compute, const MNN::Op* op, Backend* backend) : CommonExecution(backend, op) { mBuildOptions.emplace(" -DOPERATOR=" + compute); } -ErrorCode UnaryBufExecution::onResize(const std::vector& inputs, const std::vector& outputs) { +ErrorCode UnaryBufExecution::onEncode(const std::vector& inputs, const std::vector& outputs) { + mUnits.resize(1); + auto &unit = mUnits[0]; Tensor* input = inputs[0]; Tensor* output = outputs[0]; auto openCLBackend = static_cast(backend()); auto runtime = openCLBackend->getOpenCLRuntime(); auto dataType = inputs[0]->getType(); + std::set buildOptions = mBuildOptions; if (dataType.code == halide_type_int){ - mBuildOptions.emplace("-DOPENCL_INPUT_INT"); + buildOptions.emplace("-DOPENCL_INPUT_INT"); } #ifdef MNN_SUPPORT_INTEL_SUBGROUP if (runtime->isSupportedIntelSubgroup()) { return SubgrouponResize(inputs, outputs); } #endif /* MNN_SUPPORT_INTEL_SUBGROUP */ - openCLBackend->startRecord(mRecording); - mKernel = runtime->buildKernel("unary_buf", "unary_buf", mBuildOptions); - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + unit.kernel = runtime->buildKernel("unary_buf", "unary_buf", buildOptions, input, output); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); std::vector inputShape = tensorShapeFormat(input); std::vector outputShape = tensorShapeFormat(output); @@ -55,28 +54,29 @@ ErrorCode UnaryBufExecution::onResize(const std::vector& inputs, const uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[2]); - ret |= mKernel.setArg(idx++, openCLBuffer(input)); - ret |= mKernel.setArg(idx++, openCLBuffer(output)); - ret |= mKernel.setArg(idx++, outputHeight); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(input)); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(idx++, outputHeight); MNN_CHECK_CL_SUCCESS(ret, "setArg UnaryBufExecution"); std::string kernelName = "unary_buf"; - mLocalSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), kernelName, mKernel).first; - openCLBackend->recordKernel3d(mKernel, mGlobalWorkSize, mLocalSize); - openCLBackend->endRecord(mRecording); + mLocalSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), kernelName, unit.kernel).first; + openCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; + unit.localWorkSize = {mLocalSize[0], mLocalSize[1], mLocalSize[2]}; return NO_ERROR; } #ifdef MNN_SUPPORT_INTEL_SUBGROUP ErrorCode UnaryBufExecution::SubgrouponResize(const std::vector& inputs, const std::vector& outputs) { + auto &unit = mUnits[0]; Tensor* input = inputs[0]; Tensor* output = outputs[0]; auto openCLBackend = static_cast(backend()); auto runtime = openCLBackend->getOpenCLRuntime(); - openCLBackend->startRecord(mRecording); std::vector inputShape = tensorShapeFormat(input); std::vector outputShape = tensorShapeFormat(output); @@ -89,10 +89,54 @@ ErrorCode UnaryBufExecution::SubgrouponResize(const std::vector& inputs auto outputpad = TensorUtils::getDescribe(output)->mPads; int input_c_pack = TensorUtils::getTensorChannelPack(input); int output_c_pack = TensorUtils::getTensorChannelPack(output); - + + std::set buildOptions = mBuildOptions; + if(output->getType().code == halide_type_int) { + if(output->getType().bits == 8){ + buildOptions.emplace("-DINTEL_DATA=uchar"); + buildOptions.emplace("-DAS_INPUT_DATA4=as_char4"); + buildOptions.emplace("-DAS_OUTPUT_DATA4=as_uchar4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ4=intel_sub_group_block_read_uc4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_WRITE4=intel_sub_group_block_write_uc4"); + } else if(output->getType().bits == 32){ + buildOptions.emplace("-DINTEL_DATA=uint"); + buildOptions.emplace("-DAS_INPUT_DATA4=as_int4"); + buildOptions.emplace("-DAS_OUTPUT_DATA4=as_uint4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ4=intel_sub_group_block_read4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_WRITE4=intel_sub_group_block_write4"); + } + } else if(output->getType().code == halide_type_uint){ + if(output->getType().bits == 8){ + buildOptions.emplace("-DINTEL_DATA=uchar"); + buildOptions.emplace("-DAS_INPUT_DATA4=as_uchar4"); + buildOptions.emplace("-DAS_OUTPUT_DATA4=as_uchar4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ4=intel_sub_group_block_read_uc4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_WRITE4=intel_sub_group_block_write_uc4"); + } else if(output->getType().bits == 32){ + buildOptions.emplace("-DINTEL_DATA=uint"); + buildOptions.emplace("-DAS_INPUT_DATA4=as_uint4"); + buildOptions.emplace("-DAS_OUTPUT_DATA4=as_uint4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ4=intel_sub_group_block_read4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_WRITE4=intel_sub_group_block_write4"); + } + } else { + if(runtime->isSupportedFP16()){ + buildOptions.emplace("-DINTEL_DATA=ushort"); + buildOptions.emplace("-DAS_INPUT_DATA4=as_half4"); + buildOptions.emplace("-DAS_OUTPUT_DATA4=as_ushort4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ4=intel_sub_group_block_read_us4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_WRITE4=intel_sub_group_block_write_us4"); + }else{ + buildOptions.emplace("-DINTEL_DATA=uint"); + buildOptions.emplace("-DAS_INPUT_DATA4=as_float4"); + buildOptions.emplace("-DAS_OUTPUT_DATA4=as_uint4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_READ4=intel_sub_group_block_read4"); + buildOptions.emplace("-DINTEL_SUB_GROUP_WRITE4=intel_sub_group_block_write4"); + } + } std::string KernelName = "unary_buf_c" + std::to_string(input_c_pack) + "_c" + std::to_string(output_c_pack); - mKernel = runtime->buildKernel("unary_subgroup_buf", KernelName, mBuildOptions); - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + unit.kernel = runtime->buildKernel("unary_subgroup_buf", KernelName, buildOptions, input, output); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); int channelBlocks = (channels + 3) / 4; @@ -110,145 +154,115 @@ ErrorCode UnaryBufExecution::SubgrouponResize(const std::vector& inputs uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[2]); - ret |= mKernel.setArg(idx++, openCLBuffer(input)); - ret |= mKernel.setArg(idx++, openCLBuffer(output)); - ret |= mKernel.setArg(idx++, outputWidth); - ret |= mKernel.setArg(idx++, outputHeight); - ret |= mKernel.setArg(idx++, channelBlocks); - ret |= mKernel.setArg(idx++, static_cast(inputpad.left)); - ret |= mKernel.setArg(idx++, static_cast(inputpad.right)); - ret |= mKernel.setArg(idx++, static_cast(outputpad.left)); - ret |= mKernel.setArg(idx++, static_cast(outputpad.right)); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(input)); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(output)); + ret |= unit.kernel->get().setArg(idx++, outputWidth); + ret |= unit.kernel->get().setArg(idx++, outputHeight); + ret |= unit.kernel->get().setArg(idx++, channels); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputpad.left)); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputpad.right)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputpad.left)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputpad.right)); MNN_CHECK_CL_SUCCESS(ret, "setArg UnaryBufExecution SubGroup"); std::string kernelName = "unary_buf"; if (runtime->isSupportedIntelSubgroup() && input_c_pack == 16) { mLocalSize = {16, 1, 1}; } else { - mLocalSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), kernelName, mKernel).first; + mLocalSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), kernelName, unit.kernel).first; } - openCLBackend->recordKernel3d(mKernel, mGlobalWorkSize, mLocalSize); - openCLBackend->endRecord(mRecording); + openCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; + unit.localWorkSize = {mLocalSize[0], mLocalSize[1], mLocalSize[2]}; return NO_ERROR; } #endif /* MNN_SUPPORT_INTEL_SUBGROUP */ -ErrorCode UnaryBufExecution::onExecute(const std::vector& inputs, const std::vector& outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("start UnaryBufExecution onExecute..."); -#endif - auto mOpenCLBackend = static_cast(backend()); - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalSize, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Unary", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End UnaryBufExecution onExecute... \n"); -#endif - return NO_ERROR; - } - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalSize, - mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end UnaryBufExecution onExecute..."); -#endif - return NO_ERROR; -} - class UnaryBufCreator : public OpenCLBackend::Creator { public: virtual Execution* onCreate(const std::vector& inputs, const std::vector& outputs, const MNN::Op* op, Backend* backend) const override { for (int i = 0; i < inputs.size(); ++i) { int channel = inputs[i]->channel(); - if (channel >= 16) { + if (channel >= 16 && static_cast(backend)->getOpenCLRuntime()->isSupportedIntelSubgroup()) { TensorUtils::setTensorChannelPack(inputs[i], 16); } } if (op->type() == OpType_UnaryOp) { switch (op->main_as_UnaryOp()->opType()) { case UnaryOpOperation_ABS: - return new UnaryBufExecution("fabs(convert_float4(in))", backend); + return new UnaryBufExecution("fabs(convert_float4(in))", op, backend); case UnaryOpOperation_SQUARE: - return new UnaryBufExecution("in*in", backend); + return new UnaryBufExecution("in*in", op, backend); case UnaryOpOperation_RSQRT: - return new UnaryBufExecution("rsqrt(convert_float4(in)>(float4)(0.000001)?convert_float4(in):(float4)(0.000001))", backend); + return new UnaryBufExecution("rsqrt(convert_float4(in)>(float4)(0.000001)?convert_float4(in):(float4)(0.000001))", op, backend); case UnaryOpOperation_NEG: - return new UnaryBufExecution("-(in)", backend); + return new UnaryBufExecution("-(in)", op, backend); case UnaryOpOperation_EXP: - return new UnaryBufExecution("exp(convert_float4(in))", backend); + return new UnaryBufExecution("exp(convert_float4(in))", op, backend); case UnaryOpOperation_COS: - return new UnaryBufExecution("cos(convert_float4(in))", backend); + return new UnaryBufExecution("cos(convert_float4(in))", op, backend); case UnaryOpOperation_SIN: - return new UnaryBufExecution("sin(convert_float4(in))", backend); + return new UnaryBufExecution("sin(convert_float4(in))", op, backend); case UnaryOpOperation_TAN: - return new UnaryBufExecution("tan(convert_float4(in))", backend); + return new UnaryBufExecution("tan(convert_float4(in))", op, backend); case UnaryOpOperation_ATAN: - return new UnaryBufExecution("atan(convert_float4(in))", backend); + return new UnaryBufExecution("atan(convert_float4(in))", op, backend); case UnaryOpOperation_SQRT: - return new UnaryBufExecution("sqrt(convert_float4(in))", backend); + return new UnaryBufExecution("sqrt(convert_float4(in))", op, backend); case UnaryOpOperation_CEIL: - return new UnaryBufExecution("ceil(convert_float4(in))", backend); + return new UnaryBufExecution("ceil(convert_float4(in))", op, backend); case UnaryOpOperation_RECIPROCAL: - return new UnaryBufExecution("native_recip(convert_float4(in))", backend); + return new UnaryBufExecution("native_recip(convert_float4(in))", op, backend); case UnaryOpOperation_LOG1P: - return new UnaryBufExecution("log1p(convert_float4(in))", backend); + return new UnaryBufExecution("log1p(convert_float4(in))", op, backend); case UnaryOpOperation_LOG: - return new UnaryBufExecution("native_log(convert_float4(in)>(float4)(0.0000001)?convert_float4(in):(float4)(0.0000001))", backend); + return new UnaryBufExecution("native_log(convert_float4(in)>(float4)(0.0000001)?convert_float4(in):(float4)(0.0000001))", op, backend); case UnaryOpOperation_FLOOR: - return new UnaryBufExecution("floor(convert_float4(in))", backend); + return new UnaryBufExecution("floor(convert_float4(in))", op, backend); case UnaryOpOperation_BNLL: - return new UnaryBufExecution("in>(FLOAT4)((FLOAT)0)?(in+native_log(exp(convert_float4(-(in)))+(float4)(1.0))):(native_log(exp(convert_float4(in))+(float4)(1.0)))", backend); + return new UnaryBufExecution("in>(float4)((float)0)?(in+native_log(exp(convert_float4(-(in)))+(float4)(1.0))):(native_log(exp(convert_float4(in))+(float4)(1.0)))", op, backend); case UnaryOpOperation_ACOSH: - return new UnaryBufExecution("acosh(convert_float4(in))", backend); + return new UnaryBufExecution("acosh(convert_float4(in))", op, backend); case UnaryOpOperation_SINH: - return new UnaryBufExecution("sinh(convert_float4(in))", backend); + return new UnaryBufExecution("sinh(convert_float4(in))", op, backend); case UnaryOpOperation_ASINH: - return new UnaryBufExecution("asinh(convert_float4(in))", backend); + return new UnaryBufExecution("asinh(convert_float4(in))", op, backend); case UnaryOpOperation_ATANH: - return new UnaryBufExecution("atanh(convert_float4(in))", backend); + return new UnaryBufExecution("atanh(convert_float4(in))", op, backend); case UnaryOpOperation_SIGN: - return new UnaryBufExecution("sign(convert_float4(in))", backend); + return new UnaryBufExecution("sign(convert_float4(in))", op, backend); case UnaryOpOperation_ROUND: - return new UnaryBufExecution("round(convert_float4(in))", backend); + return new UnaryBufExecution("round(convert_float4(in))", op, backend); case UnaryOpOperation_COSH: - return new UnaryBufExecution("cosh(convert_float4(in))", backend); + return new UnaryBufExecution("cosh(convert_float4(in))", op, backend); case UnaryOpOperation_ERF: - return new UnaryBufExecution("erf(convert_float4(in))", backend); + return new UnaryBufExecution("erf(convert_float4(in))", op, backend); case UnaryOpOperation_ERFC: - return new UnaryBufExecution("erfc(convert_float4(in))", backend); + return new UnaryBufExecution("erfc(convert_float4(in))", op, backend); case UnaryOpOperation_EXPM1: - return new UnaryBufExecution("expm1(convert_float4(in))", backend); + return new UnaryBufExecution("expm1(convert_float4(in))", op, backend); case UnaryOpOperation_SIGMOID: - return new UnaryBufExecution("native_recip((float4)1+native_exp(convert_float4(-in)))", backend); + return new UnaryBufExecution("native_recip((float4)1+native_exp(convert_float4(-in)))", op, backend); case UnaryOpOperation_TANH: - return new UnaryBufExecution("tanh(convert_float4(in))", backend); + return new UnaryBufExecution("tanh(convert_float4(in))", op, backend); case UnaryOpOperation_HARDSWISH: - return new UnaryBufExecution("convert_float4(in)>(float4)(-3.0f)?(convert_float4(in)<(float4)(3.0f)?((convert_float4(in)*(convert_float4(in)+(float4)3.0f))/(float4)6.0f):convert_float4(in)):(float4)(0.0f)", backend); + return new UnaryBufExecution("convert_float4(in)>(float4)(-3.0f)?(convert_float4(in)<(float4)(3.0f)?((convert_float4(in)*(convert_float4(in)+(float4)3.0f))/(float4)6.0f):convert_float4(in)):(float4)(0.0f)", op, backend); case UnaryOpOperation_GELU: - return new UnaryBufExecution("gelu(convert_float4(in))", backend); + return new UnaryBufExecution("gelu(convert_float4(in))", op, backend); default: break; } return nullptr; } if (op->type() == OpType_Sigmoid) { - return new UnaryBufExecution("native_recip((float4)(1.0)+native_exp(convert_float4(-(in))))", backend); + return new UnaryBufExecution("native_recip((float4)(1.0)+native_exp(convert_float4(-(in))))", op, backend); } if (op->type() == OpType_TanH) { - return new UnaryBufExecution("tanh(convert_float4(in))", backend); + return new UnaryBufExecution("tanh(convert_float4(in))", op, backend); } return nullptr; } diff --git a/source/backend/opencl/execution/buffer/UnaryBufExecution.hpp b/source/backend/opencl/execution/buffer/UnaryBufExecution.hpp index 512bec1cd..7ca01a9ff 100644 --- a/source/backend/opencl/execution/buffer/UnaryBufExecution.hpp +++ b/source/backend/opencl/execution/buffer/UnaryBufExecution.hpp @@ -10,30 +10,22 @@ #ifndef UnaryBufExecution_hpp #define UnaryBufExecution_hpp -#include "core/Execution.hpp" - -#include -#include "MNN_generated.h" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "backend/opencl/execution/image/CommonExecution.hpp" namespace MNN { namespace OpenCL { -class UnaryBufExecution : public Execution, public CommonExtension { +class UnaryBufExecution : public CommonExecution { public: - UnaryBufExecution(const std::string &compute, Backend *backend); + UnaryBufExecution(const std::string &compute, const MNN::Op* op, Backend *backend); virtual ~UnaryBufExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: #ifdef MNN_SUPPORT_INTEL_SUBGROUP ErrorCode SubgrouponResize(const std::vector &inputs, const std::vector &outputs); #endif /* MNN_SUPPORT_INTEL_SUBGROUP */ - cl::Kernel mKernel; uint32_t mMaxWorkGroupSize; std::vector mGlobalWorkSize = {1, 1, 1}; std::vector mLocalSize = {1, 1, 1}; diff --git a/source/backend/opencl/execution/cl/argmax_buf.cl b/source/backend/opencl/execution/cl/argmax_buf.cl index 8b7be9954..48b2b3acc 100644 --- a/source/backend/opencl/execution/cl/argmax_buf.cl +++ b/source/backend/opencl/execution/cl/argmax_buf.cl @@ -10,21 +10,21 @@ __private const int global_size_dim0, __private const int global_size_dim1, __pr return; \ } -#define ARGMAX_SELECT(a, b, c, d) \ - a.x = b.x < c.x ? d : a.x; \ - a.y = b.y < c.y ? d : a.y; \ - a.z = b.z < c.z ? d : a.z; \ - a.w = b.w < c.w ? d : a.w; \ +#define ARGMAX_SELECT(A, B, C, D) \ + if(A.x < B.x){ A.x = B.x; C.x = D; } \ + if(A.y < B.y){ A.y = B.y; C.y = D; } \ + if(A.z < B.z){ A.z = B.z; C.z = D; } \ + if(A.w < B.w){ A.w = B.w; C.w = D; } \ -#define ARGMIN_SELECT(a, b, c, d) \ - a.x = b.x > c.x ? d : a.x; \ - a.y = b.y > c.y ? d : a.y; \ - a.z = b.z > c.z ? d : a.z; \ - a.w = b.w > c.w ? d : a.w; \ +#define ARGMIN_SELECT(A, B, C, D) \ + if(A.x > B.x){ A.x = B.x; C.x = D; } \ + if(A.y > B.y){ A.y = B.y; C.y = D; } \ + if(A.z > B.z){ A.z = B.z; C.z = D; } \ + if(A.w > B.w){ A.w = B.w; C.w = D; } \ __kernel void argmax_width_buf(GLOBAL_SIZE_3_DIMS __global const FLOAT* input, - __global FLOAT* output, + __global int* output, __private const int inputWidth, __private const int inputHeight, __private const int inputChannel, @@ -35,11 +35,11 @@ __kernel void argmax_width_buf(GLOBAL_SIZE_3_DIMS __private const int outputChannel, __private const int outputChannelBlock ) { - const int width_idx = get_global_id(0); + const int x = get_global_id(0); const int height_idx = get_global_id(1); const int batch_channel_idx = get_global_id(2); - DEAL_NON_UNIFORM_DIM3(width_idx, height_idx, batch_channel_idx); + DEAL_NON_UNIFORM_DIM3(x, height_idx, batch_channel_idx); const int batch_idx = batch_channel_idx / outputChannelBlock; const int channel_idx = batch_channel_idx % outputChannelBlock; @@ -47,24 +47,63 @@ __kernel void argmax_width_buf(GLOBAL_SIZE_3_DIMS const int offset = ((((batch_idx * inputChannelBlock) + channel_idx) * inputHeight + height_idx) * inputWidth + 0)*4; const int outputOffset = ((((batch_idx * outputChannelBlock) + channel_idx) * outputHeight + height_idx) * oututWidth + 0)*4; int4 index = 0; - FLOAT4 maxValue = vload4(0, input + offset); - for(int i = 1; i < inputWidth; ++i){ +#ifdef ARGMAX + FLOAT4 maxValue = (FLOAT4)-FLT_MAX; +#else + FLOAT4 maxValue = (FLOAT4)FLT_MAX; +#endif +#if ARGMAX_LOCAL_SIZE >= 4 + int lid = get_local_id(0); + FLOAT4 local reduce[ARGMAX_LOCAL_SIZE]; + int4 local index_reduce[ARGMAX_LOCAL_SIZE]; + + for (int i=lid; i < inputWidth; i+=ARGMAX_LOCAL_SIZE) { + FLOAT4 value = vload4(i, input + offset); +#ifdef ARGMAX + ARGMAX_SELECT(maxValue, value, index, i); +#else + ARGMIN_SELECT(maxValue, value, index, i); +#endif + } + reduce[lid] = maxValue; + index_reduce[lid] = index; + barrier(CLK_LOCAL_MEM_FENCE); + for(int i = ARGMAX_LOCAL_SIZE/2; i > 0; i /= 2){ + if (lid < i){ +#ifdef ARGMAX + if(reduce[lid].x < reduce[lid + i].x){reduce[lid].x = reduce[lid + i].x; index_reduce[lid].x = index_reduce[lid + i].x;} + if(reduce[lid].y < reduce[lid + i].y){reduce[lid].y = reduce[lid + i].y; index_reduce[lid].y = index_reduce[lid + i].y;} + if(reduce[lid].z < reduce[lid + i].z){reduce[lid].z = reduce[lid + i].z; index_reduce[lid].z = index_reduce[lid + i].z;} + if(reduce[lid].w < reduce[lid + i].w){reduce[lid].w = reduce[lid + i].w; index_reduce[lid].w = index_reduce[lid + i].w;} +#else + if(reduce[lid].x > reduce[lid + i].x){reduce[lid].x = reduce[lid + i].x; index_reduce[lid].x = index_reduce[lid + i].x;} + if(reduce[lid].y > reduce[lid + i].y){reduce[lid].y = reduce[lid + i].y; index_reduce[lid].y = index_reduce[lid + i].y;} + if(reduce[lid].z > reduce[lid + i].z){reduce[lid].z = reduce[lid + i].z; index_reduce[lid].z = index_reduce[lid + i].z;} + if(reduce[lid].w > reduce[lid + i].w){reduce[lid].w = reduce[lid + i].w; index_reduce[lid].w = index_reduce[lid + i].w;} +#endif + } + barrier(CLK_LOCAL_MEM_FENCE); + } + if(lid == 0){ + vstore4(index_reduce[0], 0, output + outputOffset); + } +#else + for(int i = 0; i < inputWidth; ++i){ FLOAT4 value = vload4(i, input + offset); #ifdef ARGMAX - ARGMAX_SELECT(index, maxValue, value, i); - maxValue = fmax(maxValue, value); + ARGMAX_SELECT(maxValue, value, index, i); #else - ARGMIN_SELECT(index, maxValue, value, i); - maxValue = fmin(maxValue, value); + ARGMIN_SELECT(maxValue, value, index, i); #endif } - vstore4(CONVERT_FLOAT4(index), 0, output + outputOffset); + vstore4(index, 0, output + outputOffset); +#endif } __kernel void argmax_height_buf(GLOBAL_SIZE_3_DIMS __global const FLOAT* input, - __global FLOAT* output, + __global int* output, __private const int inputWidth, __private const int inputHeight, __private const int inputChannel, @@ -75,11 +114,11 @@ __kernel void argmax_height_buf(GLOBAL_SIZE_3_DIMS __private const int outputChannel, __private const int outputChannelBlock ) { - const int width_idx = get_global_id(0); - const int height_idx = get_global_id(1); + const int x = get_global_id(0); + const int width_idx = get_global_id(1); const int batch_channel_idx = get_global_id(2); - DEAL_NON_UNIFORM_DIM3(width_idx, height_idx, batch_channel_idx); + DEAL_NON_UNIFORM_DIM3(x, width_idx, batch_channel_idx); const int batch_idx = batch_channel_idx / outputChannelBlock; const int channel_idx = batch_channel_idx % outputChannelBlock; @@ -87,23 +126,62 @@ __kernel void argmax_height_buf(GLOBAL_SIZE_3_DIMS const int offset = ((((batch_idx * inputChannelBlock) + channel_idx) * inputHeight + 0) * inputWidth + width_idx)*4; const int outputOffset = ((((batch_idx * outputChannelBlock) + channel_idx) * outputHeight + 0) * oututWidth + width_idx)*4; int4 index = 0; - FLOAT4 maxValue = vload4(0, input + offset); - for(int i = 1; i < inputHeight; ++i){ +#ifdef ARGMAX + FLOAT4 maxValue = (FLOAT4)-FLT_MAX; +#else + FLOAT4 maxValue = (FLOAT4)FLT_MAX; +#endif +#if ARGMAX_LOCAL_SIZE >= 4 + int lid = get_local_id(0); + FLOAT4 local reduce[ARGMAX_LOCAL_SIZE]; + int4 local index_reduce[ARGMAX_LOCAL_SIZE]; + + for (int i=lid; i < inputHeight; i+=ARGMAX_LOCAL_SIZE) { + FLOAT4 value = vload4(i * inputWidth, input + offset); +#ifdef ARGMAX + ARGMAX_SELECT(maxValue, value, index, i); +#else + ARGMIN_SELECT(maxValue, value, index, i); +#endif + } + reduce[lid] = maxValue; + index_reduce[lid] = index; + barrier(CLK_LOCAL_MEM_FENCE); + for(int i = ARGMAX_LOCAL_SIZE/2; i > 0; i /= 2){ + if (lid < i){ +#ifdef ARGMAX + if(reduce[lid].x < reduce[lid + i].x){reduce[lid].x = reduce[lid + i].x; index_reduce[lid].x = index_reduce[lid + i].x;} + if(reduce[lid].y < reduce[lid + i].y){reduce[lid].y = reduce[lid + i].y; index_reduce[lid].y = index_reduce[lid + i].y;} + if(reduce[lid].z < reduce[lid + i].z){reduce[lid].z = reduce[lid + i].z; index_reduce[lid].z = index_reduce[lid + i].z;} + if(reduce[lid].w < reduce[lid + i].w){reduce[lid].w = reduce[lid + i].w; index_reduce[lid].w = index_reduce[lid + i].w;} +#else + if(reduce[lid].x > reduce[lid + i].x){reduce[lid].x = reduce[lid + i].x; index_reduce[lid].x = index_reduce[lid + i].x;} + if(reduce[lid].y > reduce[lid + i].y){reduce[lid].y = reduce[lid + i].y; index_reduce[lid].y = index_reduce[lid + i].y;} + if(reduce[lid].z > reduce[lid + i].z){reduce[lid].z = reduce[lid + i].z; index_reduce[lid].z = index_reduce[lid + i].z;} + if(reduce[lid].w > reduce[lid + i].w){reduce[lid].w = reduce[lid + i].w; index_reduce[lid].w = index_reduce[lid + i].w;} +#endif + } + barrier(CLK_LOCAL_MEM_FENCE); + } + if(lid == 0){ + vstore4(index_reduce[0], 0, output + outputOffset); + } +#else + for(int i = 0; i < inputHeight; ++i){ FLOAT4 value = vload4(i * inputWidth, input + offset); #ifdef ARGMAX - ARGMAX_SELECT(index, maxValue, value, i); - maxValue = fmax(maxValue, value); + ARGMAX_SELECT(maxValue, value, index, i); #else - ARGMIN_SELECT(index, maxValue, value, i); - maxValue = fmin(maxValue, value); + ARGMIN_SELECT(maxValue, value, index, i); #endif } - vstore4(CONVERT_FLOAT4(index), 0, output + outputOffset); + vstore4(index, 0, output + outputOffset); +#endif } __kernel void argmax_channel_buf(GLOBAL_SIZE_3_DIMS __global const FLOAT* input, - __global FLOAT* output, + __global int* output, __private const int inputWidth, __private const int inputHeight, __private const int inputChannel, @@ -114,24 +192,35 @@ __kernel void argmax_channel_buf(GLOBAL_SIZE_3_DIMS __private const int outputChannel, __private const int outputChannelBlock ) { - const int width_idx = get_global_id(0); - const int height_idx = get_global_id(1); + const int x = get_global_id(0); + const int wh = get_global_id(1); const int batch_idx = get_global_id(2); - DEAL_NON_UNIFORM_DIM3(width_idx, height_idx, batch_idx); + DEAL_NON_UNIFORM_DIM3(x, wh, batch_idx); + const int width_idx = wh % oututWidth; + const int height_idx = wh / oututWidth; const int offset = ((((batch_idx * inputChannelBlock) + 0) * inputHeight + height_idx) * inputWidth + width_idx)*4; +#ifdef ARGMAX_CHANNEL_DIM1 + const int outputOffset = ((batch_idx * outputHeight + height_idx) * oututWidth + width_idx); +#else const int outputOffset = ((((batch_idx * outputChannelBlock) + 0) * outputHeight + height_idx) * oututWidth + width_idx)*4; - int index = 0; +#endif int remain = inputChannel - (inputChannelBlock - 1) * 4; #ifdef ARGMAX FLOAT maxValue = (FLOAT)-FLT_MAX; #else FLOAT maxValue = (FLOAT)FLT_MAX; #endif + int index = 0; FLOAT4 value; FLOAT *valuePtr = (FLOAT*)&value; - for(int i = 0; i < inputChannelBlock - 1; ++i){ +#if ARGMAX_LOCAL_SIZE >= 4 + int lid = get_local_id(0); + FLOAT local reduce[ARGMAX_LOCAL_SIZE]; + int local index_reduce[ARGMAX_LOCAL_SIZE]; + + for (int i=lid; i < inputChannelBlock - 1; i+=ARGMAX_LOCAL_SIZE) { value = vload4(i * inputWidth * inputHeight, input + offset); for(int j = 0; j < 4; ++j){ #ifdef ARGMAX @@ -147,8 +236,24 @@ __kernel void argmax_channel_buf(GLOBAL_SIZE_3_DIMS #endif } } - value = vload4((inputChannelBlock - 1) * inputWidth * inputHeight, input + offset); - for(int j = 0; j < remain; ++j){ + reduce[lid] = maxValue; + index_reduce[lid] = index; + barrier(CLK_LOCAL_MEM_FENCE); + for(int i = ARGMAX_LOCAL_SIZE/2; i > 0; i /= 2){ + if (lid < i){ +#ifdef ARGMAX + if(reduce[lid] < reduce[lid + i]){reduce[lid] = reduce[lid + i]; index_reduce[lid] = index_reduce[lid + i];} +#else + if(reduce[lid] > reduce[lid + i]){reduce[lid] = reduce[lid + i]; index_reduce[lid] = index_reduce[lid + i];} +#endif + } + barrier(CLK_LOCAL_MEM_FENCE); + } + if(lid == 0){ + maxValue = reduce[lid]; + index = index_reduce[lid]; + value = vload4((inputChannelBlock - 1) * inputWidth * inputHeight, input + offset); + for(int j = 0; j < remain; ++j){ #ifdef ARGMAX if(maxValue < valuePtr[j]){ index = (inputChannelBlock - 1) * 4 + j; @@ -160,40 +265,10 @@ __kernel void argmax_channel_buf(GLOBAL_SIZE_3_DIMS maxValue = valuePtr[j]; } #endif + } + output[outputOffset] = index; } - output[outputOffset] = (FLOAT)index; -} - -__kernel void argmax_channel_dim1_buf(GLOBAL_SIZE_3_DIMS - __global const FLOAT* input, - __global FLOAT* output, - __private const int inputWidth, - __private const int inputHeight, - __private const int inputChannel, - __private const int inputBatch, - __private const int inputChannelBlock, - __private const int oututWidth, - __private const int outputHeight, - __private const int outputChannel, - __private const int outputChannelBlock - ) { - const int width_idx = get_global_id(0); - const int height_idx = get_global_id(1); - const int batch_idx = get_global_id(2); - - DEAL_NON_UNIFORM_DIM3(width_idx, height_idx, batch_idx); - - const int offset = ((((batch_idx * inputChannelBlock) + 0) * inputHeight + height_idx) * inputWidth + width_idx)*4; - const int outputOffset = ((batch_idx * outputHeight + height_idx) * oututWidth + width_idx); - int index = 0; - int remain = inputChannel - (inputChannelBlock - 1) * 4; -#ifdef ARGMAX - FLOAT maxValue = (FLOAT)-FLT_MAX; #else - FLOAT maxValue = (FLOAT)FLT_MAX; -#endif - FLOAT4 value; - FLOAT *valuePtr = (FLOAT*)&value; for(int i = 0; i < inputChannelBlock - 1; ++i){ value = vload4(i * inputWidth * inputHeight, input + offset); for(int j = 0; j < 4; ++j){ @@ -224,13 +299,13 @@ __kernel void argmax_channel_dim1_buf(GLOBAL_SIZE_3_DIMS } #endif } - output[outputOffset] = (FLOAT)index; + output[outputOffset] = index; +#endif } - __kernel void argmax_batch_buf(GLOBAL_SIZE_3_DIMS __global const FLOAT* input, - __global FLOAT* output, + __global int* output, __private const int inputWidth, __private const int inputHeight, __private const int inputChannel, @@ -241,26 +316,67 @@ __kernel void argmax_batch_buf(GLOBAL_SIZE_3_DIMS __private const int outputChannel, __private const int outputChannelBlock ) { - const int width_idx = get_global_id(0); - const int height_idx = get_global_id(1); + const int x = get_global_id(0); + const int wh = get_global_id(1); const int channel_idx = get_global_id(2); - DEAL_NON_UNIFORM_DIM3(width_idx, height_idx, channel_idx); - + DEAL_NON_UNIFORM_DIM3(x, wh, channel_idx); + + const int width_idx = wh % oututWidth; + const int height_idx = wh / oututWidth; const int offset = ((((0 * inputChannelBlock) + channel_idx) * inputHeight + height_idx) * inputWidth + width_idx)*4; const int outputOffset = ((((0 * outputChannelBlock) + channel_idx) * outputHeight + height_idx) * oututWidth + width_idx)*4; int4 index = 0; int batchOffset = inputChannelBlock * inputHeight * inputWidth; - FLOAT4 maxValue = vload4(0, input + offset); - for(int i = 1; i < inputBatch; ++i){ +#ifdef ARGMAX + FLOAT4 maxValue = (FLOAT4)-FLT_MAX; +#else + FLOAT4 maxValue = (FLOAT4)FLT_MAX; +#endif +#if ARGMAX_LOCAL_SIZE >= 4 + int lid = get_local_id(0); + FLOAT4 local reduce[ARGMAX_LOCAL_SIZE]; + int4 local index_reduce[ARGMAX_LOCAL_SIZE]; + + for (int i=lid; i < inputBatch; i+=ARGMAX_LOCAL_SIZE) { FLOAT4 value = vload4(i * batchOffset, input + offset); #ifdef ARGMAX - ARGMAX_SELECT(index, maxValue, value, i); - maxValue = fmax(maxValue, value); + ARGMAX_SELECT(maxValue, value, index, i); #else - ARGMIN_SELECT(index, maxValue, value, i); - maxValue = fmin(maxValue, value); + ARGMIN_SELECT(maxValue, value, index, i); #endif } - vstore4(CONVERT_FLOAT4(index), 0, output + outputOffset); + reduce[lid] = maxValue; + index_reduce[lid] = index; + barrier(CLK_LOCAL_MEM_FENCE); + for(int i = ARGMAX_LOCAL_SIZE/2; i > 0; i /= 2){ + if (lid < i){ +#ifdef ARGMAX + if(reduce[lid].x < reduce[lid + i].x){reduce[lid].x = reduce[lid + i].x; index_reduce[lid].x = index_reduce[lid + i].x;} + if(reduce[lid].y < reduce[lid + i].y){reduce[lid].y = reduce[lid + i].y; index_reduce[lid].y = index_reduce[lid + i].y;} + if(reduce[lid].z < reduce[lid + i].z){reduce[lid].z = reduce[lid + i].z; index_reduce[lid].z = index_reduce[lid + i].z;} + if(reduce[lid].w < reduce[lid + i].w){reduce[lid].w = reduce[lid + i].w; index_reduce[lid].w = index_reduce[lid + i].w;} +#else + if(reduce[lid].x > reduce[lid + i].x){reduce[lid].x = reduce[lid + i].x; index_reduce[lid].x = index_reduce[lid + i].x;} + if(reduce[lid].y > reduce[lid + i].y){reduce[lid].y = reduce[lid + i].y; index_reduce[lid].y = index_reduce[lid + i].y;} + if(reduce[lid].z > reduce[lid + i].z){reduce[lid].z = reduce[lid + i].z; index_reduce[lid].z = index_reduce[lid + i].z;} + if(reduce[lid].w > reduce[lid + i].w){reduce[lid].w = reduce[lid + i].w; index_reduce[lid].w = index_reduce[lid + i].w;} +#endif + } + barrier(CLK_LOCAL_MEM_FENCE); + } + if(lid == 0){ + vstore4(index_reduce[0], 0, output + outputOffset); + } +#else + for(int i = 0; i < inputBatch; ++i){ + FLOAT4 value = vload4(i * batchOffset, input + offset); +#ifdef ARGMAX + ARGMAX_SELECT(maxValue, value, index, i); +#else + ARGMIN_SELECT(maxValue, value, index, i); +#endif + } + vstore4(index, 0, output + outputOffset); +#endif } diff --git a/source/backend/opencl/execution/cl/binary.cl b/source/backend/opencl/execution/cl/binary.cl index bee2f9d0b..a0a14b676 100644 --- a/source/backend/opencl/execution/cl/binary.cl +++ b/source/backend/opencl/execution/cl/binary.cl @@ -12,44 +12,28 @@ __kernel void binary(__private int global_dim0, __private int global_dim1, __private const int activationType) { int2 pos = (int2)(get_global_id(0), get_global_id(1));//WC4, NH - FLOAT4 in0, in1; + float4 in0, in1; if (pos.x < global_dim0 && pos.y < global_dim1) { -#ifdef OPENCL_INPUT_INT if(isFull.x == 0) { - in0 = CONVERT_FLOAT4(convert_int4(RI_F(input0, SAMPLER, (int2)(0, 0)))); - in0 = (FLOAT4)(in0.x, in0.x, in0.x, in0.x); + in0 = convert_float4(RI_DATA(input0, SAMPLER, (int2)(0, 0))); + in0 = (float4)(in0.x, in0.x, in0.x, in0.x); } else { - in0 = CONVERT_FLOAT4(convert_int4(RI_F(input0, SAMPLER, pos))); + in0 = convert_float4(RI_DATA(input0, SAMPLER, pos)); } if(isFull.y == 0) { - in1 = CONVERT_FLOAT4(convert_int4(RI_F(input1, SAMPLER, (int2)(0, 0)))); - in1 = (FLOAT4)(in1.x, in1.x, in1.x, in1.x); + in1 = convert_float4(RI_DATA(input1, SAMPLER, (int2)(0, 0))); + in1 = (float4)(in1.x, in1.x, in1.x, in1.x); } else { - in1 = CONVERT_FLOAT4(convert_int4(RI_F(input1, SAMPLER, pos))); + in1 = convert_float4(RI_DATA(input1, SAMPLER, pos)); } - FLOAT4 out = CONVERT_FLOAT4(convert_int4(OPERATOR)); -#else - if(isFull.x == 0) { - in0 = RI_F(input0, SAMPLER, (int2)(0, 0)); - in0 = (FLOAT4)(in0.x, in0.x, in0.x, in0.x); - } else { - in0 = RI_F(input0, SAMPLER, pos); - } - if(isFull.y == 0) { - in1 = RI_F(input1, SAMPLER, (int2)(0, 0)); - in1 = (FLOAT4)(in1.x, in1.x, in1.x, in1.x); - } else { - in1 = RI_F(input1, SAMPLER, pos); - } + float4 out = OPERATOR; - FLOAT4 out = CONVERT_FLOAT4(OPERATOR); -#endif if(activationType == 1) { - out = fmax(out, (FLOAT4)0); + out = fmax(out, (float4)0); } - WI_F(output, pos, out); + WI_DATA(output, pos, CONVERT_OUTPUT_I4(out)); } } @@ -61,16 +45,10 @@ __kernel void binary_prelu(__read_only image2d_t input0, __read_only image2d_t i int4 nhwc1 = nhwc * input1NHWCStep; int2 pos1 = (int2)(nhwc1.w*whInput1.x+nhwc1.z, nhwc1.x*whInput1.y+nhwc1.y); -#ifdef OPENCL_INPUT_INT - FLOAT4 in0 = CONVERT_FLOAT4(convert_int4(RI_F(input0, SAMPLER, pos))); - FLOAT4 in1 = CONVERT_FLOAT4(convert_int4(RI_F(input1, SAMPLER, pos1))); - FLOAT4 out = CONVERT_FLOAT4(convert_int4(OPERATOR)); -#else - FLOAT4 in0 = RI_F(input0, SAMPLER, pos); - FLOAT4 in1 = RI_F(input1, SAMPLER, pos1); - FLOAT4 out = CONVERT_FLOAT4(OPERATOR); -#endif - WI_F(output, pos, out); + float4 in0 = convert_float4(RI_DATA(input0, SAMPLER, pos)); + float4 in1 = convert_float4(RI_DATA(input1, SAMPLER, pos1)); + OUTPUT_TYPE_I4 out = CONVERT_OUTPUT_I4(OPERATOR); + WI_DATA(output, pos, out); } } @@ -80,5 +58,5 @@ __kernel void imageCopy(__read_only image2d_t input, __write_only image2d_t outp if (pos.x >= dim.x && pos.y >= dim.y) { return; } - WI_F(output, pos, RI_F(input, SAMPLER, pos)); + WI_DATA(output, pos, CONVERT_OUTPUT_I4(RI_DATA(input, SAMPLER, pos))); } diff --git a/source/backend/opencl/execution/cl/binary_buf.cl b/source/backend/opencl/execution/cl/binary_buf.cl index 271564881..383ca782b 100644 --- a/source/backend/opencl/execution/cl/binary_buf.cl +++ b/source/backend/opencl/execution/cl/binary_buf.cl @@ -4,7 +4,7 @@ #define PI 3.141592653589f __kernel void binary_buf(__private int global_dim0, __private int global_dim1, - __global FLOAT* input0, __global FLOAT* input1, __global FLOAT* output, + __global INPUT_TYPE* input0, __global INPUT_TYPE* input1, __global OUTPUT_TYPE* output, __private const int4 shape,//[N,H,W,C4] __private const int2 isFull, __private const int activationType) { @@ -12,49 +12,37 @@ __kernel void binary_buf(__private int global_dim0, __private int global_dim1, if (pos.x < global_dim0 && pos.y < global_dim1) { int offset = pos.x * (shape.y*shape.z) + pos.y; -#ifdef OPENCL_INPUT_INT - FLOAT4 in0 = CONVERT_FLOAT4(convert_int4(vload4(offset*isFull.x, input0))); - FLOAT4 in1 = CONVERT_FLOAT4(convert_int4(vload4(offset*isFull.y, input1))); -#else - FLOAT4 in0 = vload4(offset*isFull.x, input0); - FLOAT4 in1 = vload4(offset*isFull.y, input1); -#endif + + float4 in0 = convert_float4(vload4(offset*isFull.x, input0)); + float4 in1 = convert_float4(vload4(offset*isFull.y, input1)); if(isFull.x == 0) { - in0 = (FLOAT4)(in0.x, in0.x, in0.x, in0.x); + in0 = (float4)(in0.x, in0.x, in0.x, in0.x); } if(isFull.y == 0) { - in1 = (FLOAT4)(in1.x, in1.x, in1.x, in1.x); + in1 = (float4)(in1.x, in1.x, in1.x, in1.x); } -#ifdef OPENCL_INPUT_INT - FLOAT4 out = CONVERT_FLOAT4(convert_int4(OPERATOR)); -#else - FLOAT4 out = CONVERT_FLOAT4(OPERATOR); -#endif + + float4 out = OPERATOR; + if(activationType == 1) { - out = fmax(out, (FLOAT4)0); + out = fmax(out, (float4)0); } - vstore4(out, offset, output); + vstore4(CONVERT_OUTPUT4(out), offset, output); } } __kernel void prelu_buf(__private int global_dim0, __private int global_dim1, - __global FLOAT* input0, __global FLOAT* input1, __global FLOAT* output, + __global INPUT_TYPE* input0, __global INPUT_TYPE* input1, __global OUTPUT_TYPE* output, __private const int4 shape//[N,H,W,C4] ) { int2 pos = (int2)(get_global_id(0), get_global_id(1));//NC4, HW if (pos.x < global_dim0 && pos.y < global_dim1) { int offset = pos.x * (shape.y*shape.z) + pos.y; -#ifdef OPENCL_INPUT_INT - FLOAT4 in0 = CONVERT_FLOAT4(convert_int4(vload4(offset, input0))); - FLOAT4 in1 = CONVERT_FLOAT4(convert_int4(vload4(pos.x % shape.w, input1))); - FLOAT4 out = CONVERT_FLOAT4(convert_int4(OPERATOR)); -#else - FLOAT4 in0 = vload4(offset, input0); - FLOAT4 in1 = vload4(pos.x % shape.w, input1); - FLOAT4 out = CONVERT_FLOAT4(OPERATOR); -#endif - vstore4(out, offset, output); + float4 in0 = convert_float4(vload4(offset, input0)); + float4 in1 = convert_float4(vload4(pos.x % shape.w, input1)); + float4 out = OPERATOR; + vstore4(CONVERT_OUTPUT4(out), offset, output); } } diff --git a/source/backend/opencl/execution/cl/binary_subgroup_buf.cl b/source/backend/opencl/execution/cl/binary_subgroup_buf.cl index dbe678c3b..e3362a21b 100644 --- a/source/backend/opencl/execution/cl/binary_subgroup_buf.cl +++ b/source/backend/opencl/execution/cl/binary_subgroup_buf.cl @@ -4,7 +4,7 @@ #define PI 3.141592653589f __kernel void binary_buf_c4_c4_c4(__private int global_dim0, __private int global_dim1, __private int global_dim2, - __global FLOAT* input0, __global FLOAT* input1, __global FLOAT* output, + __global INPUT_TYPE* input0, __global INPUT_TYPE* input1, __global OUTPUT_TYPE* output, __private const int4 shape,//[N,H,W,C] __private const int2 isFull, __private const int activationType, @@ -21,32 +21,25 @@ __kernel void binary_buf_c4_c4_c4(__private int global_dim0, __private int globa const int offset = (((batch_idx*channel4+channel_idx)*shape.y+h_idx)*shape.z+w_idx) * 4; -#ifdef OPENCL_INPUT_INT - FLOAT4 in0 = CONVERT_FLOAT4(convert_int4(vload4(0, input0 + offset*isFull.x))); - FLOAT4 in1 = CONVERT_FLOAT4(convert_int4(vload4(0, input1 + offset*isFull.y))); -#else - FLOAT4 in0 = vload4(0, input0 + offset*isFull.x); - FLOAT4 in1 = vload4(0, input1 + offset*isFull.y); -#endif + float4 in0 = convert_float4(vload4(0, input0 + offset*isFull.x)); + float4 in1 = convert_float4(vload4(0, input1 + offset*isFull.y)); if(isFull.x == 0) { - in0 = (FLOAT4)(in0.x, in0.x, in0.x, in0.x); + in0 = (float4)(in0.x, in0.x, in0.x, in0.x); } if(isFull.y == 0) { - in1 = (FLOAT4)(in1.x, in1.x, in1.x, in1.x); + in1 = (float4)(in1.x, in1.x, in1.x, in1.x); } -#ifdef OPENCL_INPUT_INT - FLOAT4 out = CONVERT_FLOAT4(convert_int4(OPERATOR)); -#else - FLOAT4 out = CONVERT_FLOAT4(OPERATOR); -#endif + + float4 out = OPERATOR; + if(activationType == 1) { - out = fmax(out, (FLOAT4)0); + out = fmax(out, (float4)0); } - vstore4(out, 0, output + offset); + vstore4(CONVERT_OUTPUT4(out), 0, output + offset); } __kernel void binary_buf_c4_c4_c16(__private int global_dim0, __private int global_dim1, __private int global_dim2, - __global FLOAT* input0, __global FLOAT* input1, __global FLOAT* output, + __global INPUT_TYPE* input0, __global INPUT_TYPE* input1, __global OUTPUT_TYPE* output, __private const int4 shape,//[N,H,W,C] __private const int2 isFull, __private const int activationType, @@ -67,42 +60,34 @@ __kernel void binary_buf_c4_c4_c16(__private int global_dim0, __private int glob const int offset = (((batch_idx*channel4+channel_idx)*shape.y+h_idx)*shape.z+w_idx) * 4; const int dst_offset = (((batch_idx*channel16+channe_out_idx)*shape.y+h_idx)*dst_width+w_idx+output_pad_left) * 16 + (channel_idx % 4) * 4; -#ifdef OPENCL_INPUT_INT - FLOAT4 in0 = CONVERT_FLOAT4(convert_int4(vload4(0, input0 + offset*isFull.x))); - FLOAT4 in1 = CONVERT_FLOAT4(convert_int4(vload4(0, input1 + offset*isFull.y))); -#else - FLOAT4 in0 = vload4(0, input0 + offset*isFull.x); - FLOAT4 in1 = vload4(0, input1 + offset*isFull.y); -#endif + float4 in0 = convert_float4(vload4(0, input0 + offset*isFull.x)); + float4 in1 = convert_float4(vload4(0, input1 + offset*isFull.y)); if(isFull.x == 0) { - in0 = (FLOAT4)(in0.x, in0.x, in0.x, in0.x); + in0 = (float4)(in0.x, in0.x, in0.x, in0.x); } if(isFull.y == 0) { - in1 = (FLOAT4)(in1.x, in1.x, in1.x, in1.x); + in1 = (float4)(in1.x, in1.x, in1.x, in1.x); } -#ifdef OPENCL_INPUT_INT - FLOAT4 out = CONVERT_FLOAT4(convert_int4(OPERATOR)); -#else - FLOAT4 out = CONVERT_FLOAT4(OPERATOR); -#endif + float4 out = OPERATOR; + if(activationType == 1) { - out = fmax(out, (FLOAT4)0); + out = fmax(out, (float4)0); } - vstore4(out, 0, output + dst_offset); + vstore4(CONVERT_OUTPUT4(out), 0, output + dst_offset); if(w_idx == 0){ int pad_offset = (((batch_idx*channel16+channe_out_idx)*shape.y+h_idx)*dst_width) * 16 + (channel_idx % 4) * 4; for(int i = 0; i < output_pad_left; ++i){ - vstore4((FLOAT4)0, 0, output + pad_offset + i * 16); + vstore4((OUTPUT_TYPE4)0, 0, output + pad_offset + i * 16); } pad_offset += (shape.z + output_pad_left) * 16; for(int i = 0; i < output_pad_right; ++i){ - vstore4((FLOAT4)0, 0, output + pad_offset + i * 16); + vstore4((OUTPUT_TYPE4)0, 0, output + pad_offset + i * 16); } } } __kernel void binary_buf_c4_c16_c4(__private int global_dim0, __private int global_dim1, __private int global_dim2, - __global FLOAT* input0, __global FLOAT* input1, __global FLOAT* output, + __global INPUT_TYPE* input0, __global INPUT_TYPE* input1, __global OUTPUT_TYPE* output, __private const int4 shape,//[N,H,W,C] __private const int2 isFull, __private const int activationType, @@ -123,32 +108,23 @@ __kernel void binary_buf_c4_c16_c4(__private int global_dim0, __private int glob const int offset0 = (((batch_idx*channel4+channel_idx)*shape.y+h_idx)*shape.z+w_idx) * 4; const int offset1 = (((batch_idx*channel16+channe_out_idx)*shape.y+h_idx)*src_width+w_idx+input1_pad_left) * 16 + (channel_idx % 4) * 4; -#ifdef OPENCL_INPUT_INT - FLOAT4 in0 = CONVERT_FLOAT4(convert_int4(vload4(0, input0 + offset0*isFull.x))); - FLOAT4 in1 = CONVERT_FLOAT4(convert_int4(vload4(0, input1 + offset1*isFull.y))); -#else - FLOAT4 in0 = vload4(0, input0 + offset0*isFull.x); - FLOAT4 in1 = vload4(0, input1 + offset1*isFull.y); -#endif + float4 in0 = convert_float4(vload4(0, input0 + offset0*isFull.x)); + float4 in1 = convert_float4(vload4(0, input1 + offset1*isFull.y)); if(isFull.x == 0) { - in0 = (FLOAT4)(in0.x, in0.x, in0.x, in0.x); + in0 = (float4)(in0.x, in0.x, in0.x, in0.x); } if(isFull.y == 0) { - in1 = (FLOAT4)(in1.x, in1.x, in1.x, in1.x); + in1 = (float4)(in1.x, in1.x, in1.x, in1.x); } -#ifdef OPENCL_INPUT_INT - FLOAT4 out = CONVERT_FLOAT4(convert_int4(OPERATOR)); -#else - FLOAT4 out = CONVERT_FLOAT4(OPERATOR); -#endif + float4 out = OPERATOR; if(activationType == 1) { - out = fmax(out, (FLOAT4)0); + out = fmax(out, (float4)0); } - vstore4(out, 0, output + offset0); + vstore4(CONVERT_OUTPUT4(out), 0, output + offset0); } __kernel void binary_buf_c16_c4_c4(__private int global_dim0, __private int global_dim1, __private int global_dim2, - __global FLOAT* input0, __global FLOAT* input1, __global FLOAT* output, + __global INPUT_TYPE* input0, __global INPUT_TYPE* input1, __global OUTPUT_TYPE* output, __private const int4 shape,//[N,H,W,C] __private const int2 isFull, __private const int activationType, @@ -169,32 +145,24 @@ __kernel void binary_buf_c16_c4_c4(__private int global_dim0, __private int glob const int offset1 = (((batch_idx*channel4+channel_idx)*shape.y+h_idx)*shape.z+w_idx) * 4; const int offset0 = (((batch_idx*channel16+channe_out_idx)*shape.y+h_idx)*src_width+w_idx+input0_pad_left) * 16 + (channel_idx % 4) * 4; -#ifdef OPENCL_INPUT_INT - FLOAT4 in0 = CONVERT_FLOAT4(convert_int4(vload4(0, input0 + offset0*isFull.x))); - FLOAT4 in1 = CONVERT_FLOAT4(convert_int4(vload4(0, input1 + offset1*isFull.y))); -#else - FLOAT4 in0 = vload4(0, input0 + offset0*isFull.x); - FLOAT4 in1 = vload4(0, input1 + offset1*isFull.y); -#endif + float4 in0 = convert_float4(vload4(0, input0 + offset0*isFull.x)); + float4 in1 = convert_float4(vload4(0, input1 + offset1*isFull.y)); if(isFull.x == 0) { - in0 = (FLOAT4)(in0.x, in0.x, in0.x, in0.x); + in0 = (float4)(in0.x, in0.x, in0.x, in0.x); } if(isFull.y == 0) { - in1 = (FLOAT4)(in1.x, in1.x, in1.x, in1.x); + in1 = (float4)(in1.x, in1.x, in1.x, in1.x); } -#ifdef OPENCL_INPUT_INT - FLOAT4 out = CONVERT_FLOAT4(convert_int4(OPERATOR)); -#else - FLOAT4 out = CONVERT_FLOAT4(OPERATOR); -#endif + float4 out = OPERATOR; + if(activationType == 1) { - out = fmax(out, (FLOAT4)0); + out = fmax(out, (float4)0); } - vstore4(out, 0, output + offset1); + vstore4(CONVERT_OUTPUT4(out), 0, output + offset1); } __kernel void binary_buf_c4_c16_c16(__private int global_dim0, __private int global_dim1, __private int global_dim2, - __global FLOAT* input0, __global FLOAT* input1, __global FLOAT* output, + __global INPUT_TYPE* input0, __global INPUT_TYPE* input1, __global OUTPUT_TYPE* output, __private const int4 shape,//[N,H,W,C] __private const int2 isFull, __private const int activationType, @@ -217,42 +185,34 @@ __kernel void binary_buf_c4_c16_c16(__private int global_dim0, __private int glo const int offset1 = (((batch_idx*channel16+channe_out_idx)*shape.y+h_idx)*src_width+w_idx+input1_pad_left) * 16 + (channel_idx % 4) * 4; const int dst_offset = (((batch_idx*channel16+channe_out_idx)*shape.y+h_idx)*dst_width+w_idx+output_pad_left) * 16 + (channel_idx % 4) * 4; -#ifdef OPENCL_INPUT_INT - FLOAT4 in0 = CONVERT_FLOAT4(convert_int4(vload4(0, input0 + offset0*isFull.x))); - FLOAT4 in1 = CONVERT_FLOAT4(convert_int4(vload4(0, input1 + offset1*isFull.y))); -#else - FLOAT4 in0 = vload4(0, input0 + offset0*isFull.x); - FLOAT4 in1 = vload4(0, input1 + offset1*isFull.y); -#endif + float4 in0 = convert_float4(vload4(0, input0 + offset0*isFull.x)); + float4 in1 = convert_float4(vload4(0, input1 + offset1*isFull.y)); if(isFull.x == 0) { - in0 = (FLOAT4)(in0.x, in0.x, in0.x, in0.x); + in0 = (float4)(in0.x, in0.x, in0.x, in0.x); } if(isFull.y == 0) { - in1 = (FLOAT4)(in1.x, in1.x, in1.x, in1.x); + in1 = (float4)(in1.x, in1.x, in1.x, in1.x); } -#ifdef OPENCL_INPUT_INT - FLOAT4 out = CONVERT_FLOAT4(convert_int4(OPERATOR)); -#else - FLOAT4 out = CONVERT_FLOAT4(OPERATOR); -#endif + float4 out = OPERATOR; + if(activationType == 1) { - out = fmax(out, (FLOAT4)0); + out = fmax(out, (float4)0); } - vstore4(out, 0, output + dst_offset); + vstore4(CONVERT_OUTPUT4(out), 0, output + dst_offset); if(w_idx == 0){ int pad_offset = (((batch_idx*channel16+channe_out_idx)*shape.y+h_idx)*dst_width) * 16 + (channel_idx % 4) * 4; for(int i = 0; i < output_pad_left; ++i){ - vstore4((FLOAT4)0, 0, output + pad_offset + i * 16); + vstore4((OUTPUT_TYPE4)0, 0, output + pad_offset + i * 16); } pad_offset += (shape.z + output_pad_left) * 16; for(int i = 0; i < output_pad_right; ++i){ - vstore4((FLOAT4)0, 0, output + pad_offset + i * 16); + vstore4((OUTPUT_TYPE4)0, 0, output + pad_offset + i * 16); } } } __kernel void binary_buf_c16_c4_c16(__private int global_dim0, __private int global_dim1, __private int global_dim2, - __global FLOAT* input0, __global FLOAT* input1, __global FLOAT* output, + __global INPUT_TYPE* input0, __global INPUT_TYPE* input1, __global OUTPUT_TYPE* output, __private const int4 shape,//[N,H,W,C] __private const int2 isFull, __private const int activationType, @@ -275,36 +235,28 @@ __kernel void binary_buf_c16_c4_c16(__private int global_dim0, __private int glo const int offset0 = (((batch_idx*channel16+channe_out_idx)*shape.y+h_idx)*src_width+w_idx+input0_pad_left) * 16 + (channel_idx % 4) * 4; const int dst_offset = (((batch_idx*channel16+channe_out_idx)*shape.y+h_idx)*dst_width+w_idx+output_pad_left) * 16 + (channel_idx % 4) * 4; -#ifdef OPENCL_INPUT_INT - FLOAT4 in0 = CONVERT_FLOAT4(convert_int4(vload4(0, input0 + offset0*isFull.x))); - FLOAT4 in1 = CONVERT_FLOAT4(convert_int4(vload4(0, input1 + offset1*isFull.y))); -#else - FLOAT4 in0 = vload4(0, input0 + offset0*isFull.x); - FLOAT4 in1 = vload4(0, input1 + offset1*isFull.y); -#endif + float4 in0 = convert_float4(vload4(0, input0 + offset0*isFull.x)); + float4 in1 = convert_float4(vload4(0, input1 + offset1*isFull.y)); if(isFull.x == 0) { - in0 = (FLOAT4)(in0.x, in0.x, in0.x, in0.x); + in0 = (float4)(in0.x, in0.x, in0.x, in0.x); } if(isFull.y == 0) { - in1 = (FLOAT4)(in1.x, in1.x, in1.x, in1.x); + in1 = (float4)(in1.x, in1.x, in1.x, in1.x); } -#ifdef OPENCL_INPUT_INT - FLOAT4 out = CONVERT_FLOAT4(convert_int4(OPERATOR)); -#else - FLOAT4 out = CONVERT_FLOAT4(OPERATOR); -#endif + float4 out = OPERATOR; + if(activationType == 1) { - out = fmax(out, (FLOAT4)0); + out = fmax(out, (float4)0); } - vstore4(out, 0, output + dst_offset); + vstore4(CONVERT_OUTPUT4(out), 0, output + dst_offset); if(w_idx == 0){ int pad_offset = (((batch_idx*channel16+channe_out_idx)*shape.y+h_idx)*dst_width) * 16 + (channel_idx % 4) * 4; for(int i = 0; i < output_pad_left; ++i){ - vstore4((FLOAT4)0, 0, output + pad_offset + i * 16); + vstore4((OUTPUT_TYPE4)0, 0, output + pad_offset + i * 16); } pad_offset += (shape.z + output_pad_left) * 16; for(int i = 0; i < output_pad_right; ++i){ - vstore4((FLOAT4)0, 0, output + pad_offset + i * 16); + vstore4((OUTPUT_TYPE4)0, 0, output + pad_offset + i * 16); } } } @@ -312,7 +264,7 @@ __kernel void binary_buf_c16_c4_c16(__private int global_dim0, __private int glo __kernel void prelu_buf_c4_c4(__private int global_dim0, __private int global_dim1, __private int global_dim2, - __global FLOAT* input0, __global FLOAT* input1, __global FLOAT* output, + __global INPUT_TYPE* input0, __global INPUT_TYPE* input1, __global OUTPUT_TYPE* output, __private const int4 shape,//[N,H,W,C] __private const int input0_pad_left, __private const int input0_pad_right, __private const int output_pad_left, __private const int output_pad_right @@ -327,20 +279,16 @@ __kernel void prelu_buf_c4_c4(__private int global_dim0, __private int global_di const int offset0 = (((batch_idx*channel4+channel_idx)*shape.y+h_idx)*shape.z+w_idx) * 4; const int offset1 = channel_idx * 4; -#ifdef OPENCL_INPUT_INT - FLOAT4 in0 = CONVERT_FLOAT4(convert_int4(vload4(0, input0 + offset0))); - FLOAT4 in1 = CONVERT_FLOAT4(convert_int4(vload4(0, input1 + offset1))); - FLOAT4 out = CONVERT_FLOAT4(convert_int4(OPERATOR)); -#else - FLOAT4 in0 = vload4(0, input0 + offset0); - FLOAT4 in1 = vload4(0, input1 + offset1); - FLOAT4 out = CONVERT_FLOAT4(OPERATOR); -#endif - vstore4(out, 0, output + offset0); + + float4 in0 = convert_float4(vload4(0, input0 + offset0)); + float4 in1 = convert_float4(vload4(0, input1 + offset1)); + float4 out = OPERATOR; + + vstore4(CONVERT_OUTPUT4(out), 0, output + offset0); } __kernel void prelu_buf_c4_c16(__private int global_dim0, __private int global_dim1,__private int global_dim2, - __global FLOAT* input0, __global FLOAT* input1, __global FLOAT* output, + __global INPUT_TYPE* input0, __global INPUT_TYPE* input1, __global OUTPUT_TYPE* output, __private const int4 shape,//[N,H,W,C] __private const int input0_pad_left, __private const int input0_pad_right, __private const int output_pad_left, __private const int output_pad_right @@ -360,31 +308,26 @@ __kernel void prelu_buf_c4_c16(__private int global_dim0, __private int global_d const int offset1 = channel_idx * 4; const int offset = (((batch_idx*channel16+channe_out_idx)*shape.y+h_idx)*dst_width+w_idx+output_pad_left) * 16 + (channel_idx % 4) * 4; -#ifdef OPENCL_INPUT_INT - FLOAT4 in0 = CONVERT_FLOAT4(convert_int4(vload4(0, input0 + offset0))); - FLOAT4 in1 = CONVERT_FLOAT4(convert_int4(vload4(0, input1 + offset1))); - FLOAT4 out = CONVERT_FLOAT4(convert_int4(OPERATOR)); -#else - FLOAT4 in0 = vload4(0, input0 + offset0); - FLOAT4 in1 = vload4(0, input1 + offset1); - FLOAT4 out = CONVERT_FLOAT4(OPERATOR); -#endif - vstore4(out, 0, output + offset); + float4 in0 = convert_float4(vload4(0, input0 + offset0)); + float4 in1 = convert_float4(vload4(0, input1 + offset1)); + float4 out = OPERATOR; + + vstore4(CONVERT_OUTPUT4(out), 0, output + offset); if(w_idx == 0){ int pad_offset = (((batch_idx*channel16+channe_out_idx)*shape.y+h_idx)*dst_width) * 16 + (channel_idx % 4) * 4; for(int i = 0; i < output_pad_left; ++i){ - vstore4((FLOAT4)0, 0, output + pad_offset + i * 16); + vstore4((OUTPUT_TYPE4)0, 0, output + pad_offset + i * 16); } pad_offset += (shape.z + output_pad_left) * 16; for(int i = 0; i < output_pad_right; ++i){ - vstore4((FLOAT4)0, 0, output + pad_offset + i * 16); + vstore4((OUTPUT_TYPE4)0, 0, output + pad_offset + i * 16); } } } __attribute__((intel_reqd_sub_group_size(16))) __kernel void prelu_buf_c16_c16(__private int global_dim0, __private int global_dim1,__private int global_dim2, - __global FLOAT* input0, __global FLOAT* input1, __global FLOAT* output, + __global INPUT_TYPE* input0, __global INPUT_TYPE* input1, __global OUTPUT_TYPE* output, __private const int4 shape,//[N,H,W,C] __private const int input0_pad_left, __private const int input0_pad_right, __private const int output_pad_left, __private const int output_pad_right) { @@ -402,54 +345,34 @@ __kernel void prelu_buf_c16_c16(__private int global_dim0, __private int global_ const int offset1 = channel_idx * 16; const int offset = (((batch_idx*channel16+channel_idx)*shape.y+h_idx)*dst_width+w_idx+output_pad_left) * 16; -#ifdef OPENCL_INPUT_INT -#ifdef MNN_SUPPORT_FP16 - FLOAT4 in0 = CONVERT_FLOAT4(convert_int4(as_half4(intel_sub_group_block_read_us4((__global ushort*)(input0 + offset0))))); - FLOAT4 in1 = (FLOAT4)(convert_int(as_half(intel_sub_group_block_read_us((__global ushort*)(input1 + offset1))))); -#else - FLOAT4 in0 = CONVERT_FLOAT4(convert_int4(as_float4(intel_sub_group_block_read4((__global uint*)(input0 + offset0))))); - FLOAT4 in1 = (FLOAT4)(convert_int(as_float(intel_sub_group_block_read((__global uint*)(input1 + offset1))))); -#endif - FLOAT4 out = CONVERT_FLOAT4(convert_int4(OPERATOR)); -#else -#ifdef MNN_SUPPORT_FP16 - FLOAT4 in0 = as_half4(intel_sub_group_block_read_us4((__global ushort*)(input0 + offset0))); - FLOAT4 in1 = (FLOAT4)(as_half(intel_sub_group_block_read_us((__global ushort*)(input1 + offset1)))); -#else - FLOAT4 in0 = as_float4(intel_sub_group_block_read4((__global uint*)(input0 + offset0))); - FLOAT4 in1 = (FLOAT4)(as_float(intel_sub_group_block_read((__global uint*)(input1 + offset1)))); -#endif + float4 in0 = convert_float4(AS_INPUT_DATA4(INTEL_SUB_GROUP_READ4((__global INTEL_DATA*)(input0 + offset0)))); + float4 in1 = (float4)(AS_INPUT_DATA(INTEL_SUB_GROUP_READ((__global INTEL_DATA*)(input1 + offset1)))); - FLOAT4 out = CONVERT_FLOAT4(OPERATOR); -#endif + float4 out = OPERATOR; { if (w_idx + 4 > shape.z) { for (int i = 0; i < shape.z % 4; i++) { - output[offset + i * 16 + sglid] = out[i]; + output[offset + i * 16 + sglid] = (OUTPUT_TYPE)out[i]; } }else{ -#ifdef MNN_SUPPORT_FP16 - intel_sub_group_block_write_us4((__global ushort*)(output + offset), as_ushort4(out)); -#else - intel_sub_group_block_write4((__global uint*)(output + offset), as_uint4(out)); -#endif + INTEL_SUB_GROUP_WRITE4((__global INTEL_DATA*)(output + offset), AS_OUTPUT_DATA4(CONVERT_OUTPUT4(out))); } } if(w_idx == 0){ int pad_offset = (((batch_idx*channel16+channel_idx)*shape.y+h_idx)*dst_width) * 16 + sglid; for(int i = 0; i < output_pad_left; ++i){ - output[pad_offset + i * 16] = 0; + output[pad_offset + i * 16] = (OUTPUT_TYPE)0; } pad_offset += (shape.z + output_pad_left) * 16; for(int i = 0; i < output_pad_right; ++i){ - output[pad_offset + i * 16] = 0; + output[pad_offset + i * 16] = (OUTPUT_TYPE)0; } } } __attribute__((intel_reqd_sub_group_size(16))) __kernel void prelu_buf_c16_c4(__private int global_dim0, __private int global_dim1,__private int global_dim2, - __global FLOAT* input0, __global FLOAT* input1, __global FLOAT* output, + __global INPUT_TYPE* input0, __global INPUT_TYPE* input1, __global OUTPUT_TYPE* output, __private const int4 shape,//[N,H,W,C] __private const int input0_pad_left, __private const int input0_pad_right, __private const int output_pad_left, __private const int output_pad_right) { @@ -468,32 +391,16 @@ __kernel void prelu_buf_c16_c4(__private int global_dim0, __private int global_d const int offset1 = channel_idx * 16; const int offset = (((batch_idx*channel4+(channel_idx<<2))*shape.y+h_idx)*shape.z+w_idx) * 4; -#ifdef OPENCL_INPUT_INT -#ifdef MNN_SUPPORT_FP16 - FLOAT4 in0 = CONVERT_FLOAT4(convert_int4(as_half4(intel_sub_group_block_read_us4((__global ushort*)(input0 + offset0))))); - FLOAT4 in1 = (FLOAT4)(convert_int(as_half(intel_sub_group_block_read_us((__global ushort*)(input1 + offset1))))); -#else - FLOAT4 in0 = CONVERT_FLOAT4(convert_int4(as_float4(intel_sub_group_block_read4((__global uint*)(input0 + offset0))))); - FLOAT4 in1 = (FLOAT4)(convert_int(as_float(intel_sub_group_block_read((__global uint*)(input1 + offset1))))); -#endif - FLOAT4 out = CONVERT_FLOAT4(convert_int4(OPERATOR)); -#else -#ifdef MNN_SUPPORT_FP16 - FLOAT4 in0 = as_half4(intel_sub_group_block_read_us4((__global ushort*)(input0 + offset0))); - FLOAT4 in1 = (FLOAT4)(as_half(intel_sub_group_block_read_us((__global ushort*)(input1 + offset1)))); -#else - FLOAT4 in0 = as_float4(intel_sub_group_block_read4((__global uint*)(input0 + offset0))); - FLOAT4 in1 = (FLOAT4)(as_float(intel_sub_group_block_read((__global uint*)(input1 + offset1)))); -#endif + float4 in0 = convert_float4(AS_INPUT_DATA4(INTEL_SUB_GROUP_READ4((__global INTEL_DATA*)(input0 + offset0)))); + float4 in1 = (float4)(AS_INPUT_DATA(INTEL_SUB_GROUP_READ((__global INTEL_DATA*)(input1 + offset1)))); - FLOAT4 out = CONVERT_FLOAT4(OPERATOR); -#endif + float4 out = OPERATOR; const int lid_x = sglid % 4; const int lid_y = sglid / 4; int block_size = w_idx + 4 > shape.z ? (shape.z % 4) : 4; for (int i = 0; i < block_size; i++) { - output[offset + i * 4 + lid_y * width_height + lid_x] = out[i]; + output[offset + i * 4 + lid_y * width_height + lid_x] = (OUTPUT_TYPE)out[i]; } } @@ -501,7 +408,7 @@ __kernel void prelu_buf_c16_c4(__private int global_dim0, __private int global_d __attribute__((intel_reqd_sub_group_size(16))) __kernel void binary_buf_c16_c16_c16(__private int global_dim0, __private int global_dim1,__private int global_dim2, - __global FLOAT* input0, __global FLOAT* input1, __global FLOAT* output, + __global INPUT_TYPE* input0, __global INPUT_TYPE* input1, __global OUTPUT_TYPE* output, __private const int4 shape,//[N,H,W,C4] __private const int2 isFull, __private const int activationType, @@ -523,58 +430,38 @@ __kernel void binary_buf_c16_c16_c16(__private int global_dim0, __private int gl const int offset1 = (((batch_idx*channel16+channel_idx)*shape.y+h_idx)*src1_width+w_idx+input1_pad_left) * 16; const int offset = (((batch_idx*channel16+channel_idx)*shape.y+h_idx)*dst_width+w_idx+output_pad_left) * 16; -#ifdef OPENCL_INPUT_INT -#ifdef MNN_SUPPORT_FP16 - FLOAT4 in0 = isFull.x ? CONVERT_FLOAT4(convert_int4(as_half4(intel_sub_group_block_read_us4((__global ushort*)(input0 + offset0))))) : (FLOAT4)(convert_int(input0[0])); - FLOAT4 in1 = isFull.y ? CONVERT_FLOAT4(convert_int4(as_half4(intel_sub_group_block_read_us4((__global ushort*)(input1 + offset1))))) : (FLOAT4)(convert_int(input1[0])); -#else - FLOAT4 in0 = isFull.x ? CONVERT_FLOAT4(convert_int4(as_float4(intel_sub_group_block_read4((__global uint*)(input0 + offset0))))) : (FLOAT4)(convert_int(input0[0])); - FLOAT4 in1 = isFull.y ? CONVERT_FLOAT4(convert_int4(as_float4(intel_sub_group_block_read4((__global uint*)(input1 + offset1))))) : (FLOAT4)(convert_int(input1[0])); -#endif - FLOAT4 out = CONVERT_FLOAT4(convert_int4(OPERATOR)); -#else -#ifdef MNN_SUPPORT_FP16 - FLOAT4 in0 = isFull.x ? as_half4(intel_sub_group_block_read_us4((__global ushort*)(input0 + offset0))) : (FLOAT4)(input0[0]); - FLOAT4 in1 = isFull.y ? as_half4(intel_sub_group_block_read_us4((__global ushort*)(input1 + offset1))) : (FLOAT4)(input1[0]); -#else - FLOAT4 in0 = isFull.x ? as_float4(intel_sub_group_block_read4((__global uint*)(input0 + offset0))) : (FLOAT4)(input0[0]); - FLOAT4 in1 = isFull.y ? as_float4(intel_sub_group_block_read4((__global uint*)(input1 + offset1))) : (FLOAT4)(input1[0]); -#endif + float4 in0 = isFull.x ? convert_float4(AS_INPUT_DATA4(INTEL_SUB_GROUP_READ4((__global INTEL_DATA*)(input0 + offset0)))) : (float4)(input0[0]); + float4 in1 = isFull.y ? convert_float4(AS_INPUT_DATA4(INTEL_SUB_GROUP_READ4((__global INTEL_DATA*)(input1 + offset1)))) : (float4)(input1[0]); - FLOAT4 out = CONVERT_FLOAT4(OPERATOR); -#endif + float4 out = OPERATOR; if(activationType == 1) { - out = fmax(out, (FLOAT4)0); + out = fmax(out, (float4)0); } { if (w_idx + 4 > shape.z) { for (int i = 0; i < shape.z % 4; i++) { - output[offset + i * 16 + sglid] = out[i]; + output[offset + i * 16 + sglid] = (OUTPUT_TYPE)out[i]; } }else{ -#ifdef MNN_SUPPORT_FP16 - intel_sub_group_block_write_us4((__global ushort*)(output + offset), as_ushort4(out)); -#else - intel_sub_group_block_write4((__global uint*)(output + offset), as_uint4(out)); -#endif + INTEL_SUB_GROUP_WRITE4((__global INTEL_DATA*)(output + offset), AS_OUTPUT_DATA4(CONVERT_OUTPUT4(out))); } } if(w_idx == 0){ int pad_offset = (((batch_idx*channel16+channel_idx)*shape.y+h_idx)*dst_width) * 16 + sglid; for(int i = 0; i < output_pad_left; ++i){ - output[pad_offset + i * 16] = 0; + output[pad_offset + i * 16] = (OUTPUT_TYPE)0; } pad_offset += (shape.z + output_pad_left) * 16; for(int i = 0; i < output_pad_right; ++i){ - output[pad_offset + i * 16] = 0; + output[pad_offset + i * 16] = (OUTPUT_TYPE)0; } } } __attribute__((intel_reqd_sub_group_size(16))) __kernel void binary_buf_c16_c16_c4(__private int global_dim0, __private int global_dim1,__private int global_dim2, - __global FLOAT* input0, __global FLOAT* input1, __global FLOAT* output, + __global INPUT_TYPE* input0, __global INPUT_TYPE* input1, __global OUTPUT_TYPE* output, __private const int4 shape,//[N,H,W,C4] __private const int2 isFull, __private const int activationType, @@ -597,34 +484,18 @@ __kernel void binary_buf_c16_c16_c4(__private int global_dim0, __private int glo const int offset1 = (((batch_idx*channel16+channel_idx)*shape.y+h_idx)*src1_width+w_idx+input1_pad_left) * 16; const int offset = (((batch_idx*channel4+(channel_idx << 2))*shape.y+h_idx)*shape.z+w_idx) * 4; -#ifdef OPENCL_INPUT_INT -#ifdef MNN_SUPPORT_FP16 - FLOAT4 in0 = isFull.x ? CONVERT_FLOAT4(convert_int4(as_half4(intel_sub_group_block_read_us4((__global ushort*)(input0 + offset0))))) : (FLOAT4)(convert_int(input0[0])); - FLOAT4 in1 = isFull.y ? CONVERT_FLOAT4(convert_int4(as_half4(intel_sub_group_block_read_us4((__global ushort*)(input1 + offset1))))) : (FLOAT4)(convert_int(input1[0])); -#else - FLOAT4 in0 = isFull.x ? CONVERT_FLOAT4(convert_int4(as_float4(intel_sub_group_block_read4((__global uint*)(input0 + offset0))))) : (FLOAT4)(convert_int(input0[0])); - FLOAT4 in1 = isFull.y ? CONVERT_FLOAT4(convert_int4(as_float4(intel_sub_group_block_read4((__global uint*)(input1 + offset1))))) : (FLOAT4)(convert_int(input1[0])); -#endif - FLOAT4 out = CONVERT_FLOAT4(convert_int4(OPERATOR)); -#else -#ifdef MNN_SUPPORT_FP16 - FLOAT4 in0 = isFull.x ? as_half4(intel_sub_group_block_read_us4((__global ushort*)(input0 + offset0))) : (FLOAT4)(input0[0]); - FLOAT4 in1 = isFull.y ? as_half4(intel_sub_group_block_read_us4((__global ushort*)(input1 + offset1))) : (FLOAT4)(input1[0]); -#else - FLOAT4 in0 = isFull.x ? as_float4(intel_sub_group_block_read4((__global uint*)(input0 + offset0))) : (FLOAT4)(input0[0]); - FLOAT4 in1 = isFull.y ? as_float4(intel_sub_group_block_read4((__global uint*)(input1 + offset1))) : (FLOAT4)(input1[0]); -#endif + float4 in0 = isFull.x ? convert_float4(AS_INPUT_DATA4(INTEL_SUB_GROUP_READ4((__global INTEL_DATA*)(input0 + offset0)))) : (float4)(input0[0]); + float4 in1 = isFull.y ? convert_float4(AS_INPUT_DATA4(INTEL_SUB_GROUP_READ4((__global INTEL_DATA*)(input1 + offset1)))) : (float4)(input1[0]); - FLOAT4 out = CONVERT_FLOAT4(OPERATOR); -#endif + float4 out = OPERATOR; if(activationType == 1) { - out = fmax(out, (FLOAT4)0); + out = fmax(out, (float4)0); } const int lid_x = sglid % 4; const int lid_y = sglid / 4; int block_size = w_idx + 4 > shape.z ? (shape.z % 4) : 4; for (int i = 0; i < block_size; i++) { - output[offset + i * 4 + lid_y * width_height + lid_x] = out[i]; + output[offset + i * 4 + lid_y * width_height + lid_x] = (OUTPUT_TYPE)out[i]; } } diff --git a/source/backend/opencl/execution/cl/buffer_convert_buf.cl b/source/backend/opencl/execution/cl/buffer_convert_buf.cl index 6b79edfc4..0177d3d41 100644 --- a/source/backend/opencl/execution/cl/buffer_convert_buf.cl +++ b/source/backend/opencl/execution/cl/buffer_convert_buf.cl @@ -7,50 +7,12 @@ if (input1 >= global_size_dim0 || input2 >= global_size_dim1) { \ return; \ } - // convert data from buffer(nhwc) to buffer(nc4hw4) __kernel void nhwc_buffer_to_nc4hw4_buffer(GLOBAL_SIZE_2_DIMS - __global const FLOAT *input_ptr, - __private const int height, - __private const int width, __private const int channels, - __global FLOAT *output) { - int image_width_idx = get_global_id(0); - int image_height_idx = get_global_id(1); - - DEAL_NON_UNIFORM_DIM2(image_width_idx, image_height_idx); - - const int batch_idx = image_height_idx / height; - const int height_idx = image_height_idx % height; - const int width_idx = image_width_idx % width; - const int channel_4_idx = (image_width_idx / width) << 2; - const int buffer_offset = ((batch_idx * height + height_idx) * width + width_idx) * channels + channel_4_idx; - - const int remain_channel = channels - channel_4_idx; - FLOAT4 values = 0; - - __global const FLOAT *input_current_ptr = input_ptr + buffer_offset; - values = vload4(0, input_current_ptr); - - if (remain_channel == 3) { - values.w = 0; - } else if (remain_channel == 2) { - values.z = 0; - values.w = 0; - } else if (remain_channel == 1) { - values.y = 0; - values.z = 0; - values.w = 0; - } - const int out_offset = (((batch_idx * ((channels+3)/4) + channel_4_idx/4) * height + height_idx) * width + width_idx)*4; - vstore4(values, 0, output+out_offset); -} - -// convert data from buffer(nhwc) to buffer(nc4hw4) float input -__kernel void nhwc_buffer_to_nc4hw4_buffer_floatin(GLOBAL_SIZE_2_DIMS - __global const float *input_ptr, + __global const INPUT_TYPE *input_ptr, __private const int height, __private const int width, __private const int channels, - __global FLOAT *output) { + __global OUTPUT_TYPE *output) { int image_width_idx = get_global_id(0); int image_height_idx = get_global_id(1); @@ -63,10 +25,7 @@ __kernel void nhwc_buffer_to_nc4hw4_buffer_floatin(GLOBAL_SIZE_2_DIMS const int buffer_offset = ((batch_idx * height + height_idx) * width + width_idx) * channels + channel_4_idx; const int remain_channel = channels - channel_4_idx; - FLOAT4 values = 0; - - __global const float *input_current_ptr = input_ptr + buffer_offset; - values = CONVERT_FLOAT4(vload4(0, input_current_ptr)); + float4 values = convert_float4(vload4(0, input_ptr + buffer_offset)); if (remain_channel == 3) { values.w = 0; @@ -79,14 +38,14 @@ __kernel void nhwc_buffer_to_nc4hw4_buffer_floatin(GLOBAL_SIZE_2_DIMS values.w = 0; } const int out_offset = (((batch_idx * ((channels+3)/4) + channel_4_idx/4) * height + height_idx) * width + width_idx)*4; - vstore4(values, 0, output+out_offset); + vstore4(CONVERT_OUTPUT4(values), 0, output+out_offset); } // convert data from buffer(nchw) to buffer(nc4hw4) __kernel void nchw_buffer_to_nc4hw4_buffer(GLOBAL_SIZE_2_DIMS - __global const FLOAT *input_ptr, + __global const INPUT_TYPE *input_ptr, __private const int height, __private const int width, __private const int channels, - __global FLOAT *output) { + __global OUTPUT_TYPE *output) { int image_width_idx = get_global_id(0); int image_height_idx = get_global_id(1); @@ -100,118 +59,45 @@ __kernel void nchw_buffer_to_nc4hw4_buffer(GLOBAL_SIZE_2_DIMS const int remain_channel = channels - channel_4_idx; const int height_width_size = height * width; - FLOAT4 output_values = 0; + float4 output_values = 0; if (remain_channel >= 4) { int offset = buffer_offset; - output_values.x = (FLOAT)*(input_ptr + offset); + output_values.x = (float)*(input_ptr + offset); offset += height_width_size; - output_values.y = (FLOAT)*(input_ptr + offset); + output_values.y = (float)*(input_ptr + offset); offset += height_width_size; - output_values.z = (FLOAT)*(input_ptr + offset); + output_values.z = (float)*(input_ptr + offset); offset += height_width_size; - output_values.w = (FLOAT)*(input_ptr + offset); + output_values.w = (float)*(input_ptr + offset); } else if (remain_channel == 3) { int offset = buffer_offset; - output_values.x = (FLOAT)*(input_ptr + offset); + output_values.x = (float)*(input_ptr + offset); offset += height_width_size; - output_values.y = (FLOAT)*(input_ptr + offset); + output_values.y = (float)*(input_ptr + offset); offset += height_width_size; - output_values.z = (FLOAT)*(input_ptr + offset); + output_values.z = (float)*(input_ptr + offset); } else if (remain_channel == 2) { int offset = buffer_offset; - output_values.x = (FLOAT)*(input_ptr + offset); + output_values.x = (float)*(input_ptr + offset); offset += height_width_size; - output_values.y = (FLOAT)*(input_ptr + offset); + output_values.y = (float)*(input_ptr + offset); } else if (remain_channel == 1) { int offset = buffer_offset; - output_values.x = (FLOAT)*(input_ptr + offset); + output_values.x = (float)*(input_ptr + offset); } const int out_offset = (((batch_idx * ((channels+3)/4) + channel_4_idx/4) * height + height_idx) * width + width_idx)*4; - vstore4(output_values, 0, output+out_offset); + vstore4(CONVERT_OUTPUT4(output_values), 0, output+out_offset); } -// convert data from buffer(nchw) to buffer(nc4hw4) -__kernel void nchw_buffer_to_nc4hw4_buffer_floatin(GLOBAL_SIZE_2_DIMS - __global const float *input_ptr, - __private const int height, __private const int width, __private const int channels, - __global FLOAT *output) { - int image_width_idx = get_global_id(0); - int image_height_idx = get_global_id(1); - - DEAL_NON_UNIFORM_DIM2(image_width_idx, image_height_idx); - - const int batch_idx = image_height_idx / height; - const int height_idx = image_height_idx % height; - const int width_idx = image_width_idx % width; - const int channel_4_idx = image_width_idx / width << 2; - const int buffer_offset = ((batch_idx * channels + channel_4_idx) * height + height_idx) * width + width_idx; - - const int remain_channel = channels - channel_4_idx; - const int height_width_size = height * width; - FLOAT4 output_values = 0; - - if (remain_channel >= 4) { - int offset = buffer_offset; - output_values.x = (FLOAT)*(input_ptr + offset); - offset += height_width_size; - output_values.y = (FLOAT)*(input_ptr + offset); - offset += height_width_size; - output_values.z = (FLOAT)*(input_ptr + offset); - offset += height_width_size; - output_values.w = (FLOAT)*(input_ptr + offset); - } else if (remain_channel == 3) { - int offset = buffer_offset; - output_values.x = (FLOAT)*(input_ptr + offset); - offset += height_width_size; - output_values.y = (FLOAT)*(input_ptr + offset); - offset += height_width_size; - output_values.z = (FLOAT)*(input_ptr + offset); - } else if (remain_channel == 2) { - int offset = buffer_offset; - output_values.x = (FLOAT)*(input_ptr + offset); - offset += height_width_size; - output_values.y = (FLOAT)*(input_ptr + offset); - } else if (remain_channel == 1) { - int offset = buffer_offset; - output_values.x = (FLOAT)*(input_ptr + offset); - } - - const int out_offset = (((batch_idx * ((channels+3)/4) + channel_4_idx/4) * height + height_idx) * width + width_idx)*4; - vstore4(output_values, 0, output+out_offset); -} -__kernel void nchw_buffer_to_nchw_buffer_floatin(GLOBAL_SIZE_2_DIMS - __global float *input_ptr, +__kernel void nchw_buffer_to_nchw_buffer(GLOBAL_SIZE_2_DIMS + __global INPUT_TYPE *input_ptr, __private const int height, __private const int width, __private const int channels, __private const int input_pad_left, __private const int input_pad_right, __private const int output_pad_left, __private const int output_pad_right, - __global FLOAT *output) { - int image_width_idx = get_global_id(0); - int image_height_idx = get_global_id(1); - - DEAL_NON_UNIFORM_DIM2(image_width_idx, image_height_idx); - - const int src_width = width + input_pad_left + input_pad_right; - const int dst_width = width + output_pad_left + output_pad_right; - const int batch_idx = image_height_idx / height; - const int height_idx = image_height_idx % height; - const int width_idx = image_width_idx % width; - const int channel_idx = image_width_idx / width; - const int in_offset = ((batch_idx * channels + channel_idx) * height + height_idx) * src_width + width_idx + input_pad_left; - const int out_offset = ((batch_idx * channels + channel_idx) * height + height_idx) * dst_width + width_idx + output_pad_left; - - output[out_offset] = (FLOAT)input_ptr[in_offset]; -} - - -__kernel void nchw_buffer_to_nchw_buffer_floatout(GLOBAL_SIZE_2_DIMS - __global float *output, - __private const int height, __private const int width, __private const int channels, - __global FLOAT *input_ptr, - __private const int input_pad_left, __private const int input_pad_right, - __private const int output_pad_left, __private const int output_pad_right) { + __global OUTPUT_TYPE *output) { int image_width_idx = get_global_id(0); int image_height_idx = get_global_id(1); @@ -226,16 +112,15 @@ __kernel void nchw_buffer_to_nchw_buffer_floatout(GLOBAL_SIZE_2_DIMS const int in_offset = ((batch_idx * channels + channel_idx) * height + height_idx) * src_width + width_idx + input_pad_left; const int out_offset = ((batch_idx * channels + channel_idx) * height + height_idx) * dst_width + width_idx + output_pad_left; - output[out_offset] = (float)input_ptr[in_offset]; + output[out_offset] = (OUTPUT_TYPE)input_ptr[in_offset]; } - // convert data from image(b h, ic/4 w ic4) to buffer(nhwc) __kernel void nc4hw4_buffer_to_nhwc_buffer(GLOBAL_SIZE_2_DIMS - __global FLOAT *output, + __global OUTPUT_TYPE *output, __private const int height, __private const int width, __private const int channels, - __global FLOAT *input_ptr) { + __global INPUT_TYPE *input_ptr) { int image_width_idx = get_global_id(0); int image_height_idx = get_global_id(1); @@ -249,126 +134,34 @@ __kernel void nc4hw4_buffer_to_nhwc_buffer(GLOBAL_SIZE_2_DIMS const int in_offset = (((batch_idx * ((channels+3)/4) + channel_4_idx/4) * height + height_idx) * width + width_idx)*4; - FLOAT4 values = vload4(0, input_ptr+in_offset); - const int remain_channel = channels - channel_4_idx; - if (remain_channel >= 4) { - vstore4(values, 0, output + buffer_offset); - } else if (remain_channel == 3) { - int offset = buffer_offset; - output[offset] = values.x; - offset++; - output[offset] = values.y; - offset++; - output[offset] = values.z; - } else if (remain_channel == 2) { - int offset = buffer_offset; - output[offset] = values.x; - offset++; - output[offset] = values.y; - } else if (remain_channel == 1) { - int offset = buffer_offset; - output[offset] = values.x; - } -} - -// convert data from image(b h, ic/4 w ic4) to buffer(nhwc) -__kernel void nc4hw4_buffer_to_nhwc_buffer_floatout(GLOBAL_SIZE_2_DIMS - __global float *output, - __private const int height, __private const int width, - __private const int channels, - __global FLOAT *input_ptr) { - int image_width_idx = get_global_id(0); - int image_height_idx = get_global_id(1); - - DEAL_NON_UNIFORM_DIM2(image_width_idx, image_height_idx); - - const int batch_idx = image_height_idx / height; - const int height_idx = image_height_idx % height; - const int width_idx = image_width_idx % width; - const int channel_4_idx = (image_width_idx / width) << 2; - const int buffer_offset = ((batch_idx * height + height_idx) * width + width_idx) * channels + channel_4_idx; - - const int in_offset = (((batch_idx * ((channels+3)/4) + channel_4_idx/4) * height + height_idx) * width + width_idx)*4; - float4 values = convert_float4(vload4(0, input_ptr+in_offset)); const int remain_channel = channels - channel_4_idx; if (remain_channel >= 4) { - vstore4(values, 0, output + buffer_offset); + vstore4(CONVERT_OUTPUT4(values), 0, output + buffer_offset); } else if (remain_channel == 3) { int offset = buffer_offset; - output[offset] = values.x; + output[offset] = (OUTPUT_TYPE)values.x; offset++; - output[offset] = values.y; + output[offset] = (OUTPUT_TYPE)values.y; offset++; - output[offset] = values.z; + output[offset] = (OUTPUT_TYPE)values.z; } else if (remain_channel == 2) { int offset = buffer_offset; - output[offset] = values.x; + output[offset] = (OUTPUT_TYPE)values.x; offset++; - output[offset] = values.y; + output[offset] = (OUTPUT_TYPE)values.y; } else if (remain_channel == 1) { int offset = buffer_offset; - output[offset] = values.x; + output[offset] = (OUTPUT_TYPE)values.x; } } // convert data from buffer(nc4hw4) to buffer(nchw) __kernel void nc4hw4_buffer_to_nchw_buffer(GLOBAL_SIZE_2_DIMS - __global FLOAT *output, - __private const int height, __private const int width, - __private const int channels, - __global FLOAT *input_ptr) { - int image_width_idx = get_global_id(0); - int image_height_idx = get_global_id(1); - - DEAL_NON_UNIFORM_DIM2(image_width_idx, image_height_idx); - - const int batch_idx = image_height_idx / height; - const int height_idx = image_height_idx % height; - const int width_idx = image_width_idx % width; - int channel_4_idx = (image_width_idx / width) * 4; - int buffer_offset = ((batch_idx * channels + channel_4_idx) * height + height_idx) * width + width_idx; - - const int in_offset = (((batch_idx * ((channels+3)/4) + channel_4_idx/4) * height + height_idx) * width + width_idx)*4; - FLOAT4 values = vload4(0, input_ptr+in_offset); - - const int height_width_size = height * width; - - const int remain_channel = channels - channel_4_idx; - - if (remain_channel >= 4) { - int offset = buffer_offset; - output[offset] = values.x; - offset += height_width_size; - output[offset] = values.y; - offset += height_width_size; - output[offset] = values.z; - offset += height_width_size; - output[offset] = values.w; - } else if (remain_channel == 3) { - int offset = buffer_offset; - output[offset] = values.x; - offset += height_width_size; - output[offset] = values.y; - offset += height_width_size; - output[offset] = values.z; - } else if (remain_channel == 2) { - int offset = buffer_offset; - output[offset] = values.x; - offset += height_width_size; - output[offset] = values.y; - } else if (remain_channel == 1) { - int offset = buffer_offset; - output[offset] = values.x; - } -} - -// convert data from buffer(nc4hw4) to buffer(nchw) -__kernel void nc4hw4_buffer_to_nchw_buffer_floatout(GLOBAL_SIZE_2_DIMS - __global float *output, + __global OUTPUT_TYPE *output, __private const int height, __private const int width, __private const int channels, - __global FLOAT *input_ptr) { + __global INPUT_TYPE *input_ptr) { int image_width_idx = get_global_id(0); int image_height_idx = get_global_id(1); @@ -389,121 +182,37 @@ __kernel void nc4hw4_buffer_to_nchw_buffer_floatout(GLOBAL_SIZE_2_DIMS if (remain_channel >= 4) { int offset = buffer_offset; - output[offset] = values.x; + output[offset] = (OUTPUT_TYPE)values.x; offset += height_width_size; - output[offset] = values.y; + output[offset] = (OUTPUT_TYPE)values.y; offset += height_width_size; - output[offset] = values.z; + output[offset] = (OUTPUT_TYPE)values.z; offset += height_width_size; - output[offset] = values.w; + output[offset] = (OUTPUT_TYPE)values.w; } else if (remain_channel == 3) { int offset = buffer_offset; - output[offset] = values.x; + output[offset] = (OUTPUT_TYPE)values.x; offset += height_width_size; - output[offset] = values.y; + output[offset] = (OUTPUT_TYPE)values.y; offset += height_width_size; - output[offset] = values.z; + output[offset] = (OUTPUT_TYPE)values.z; } else if (remain_channel == 2) { int offset = buffer_offset; - output[offset] = values.x; + output[offset] = (OUTPUT_TYPE)values.x; offset += height_width_size; - output[offset] = values.y; + output[offset] = (OUTPUT_TYPE)values.y; } else if (remain_channel == 1) { int offset = buffer_offset; - output[offset] = values.x; + output[offset] = (OUTPUT_TYPE)values.x; } } __kernel void nc4hw4_buffer_to_nc4hw4_buffer(GLOBAL_SIZE_2_DIMS - __global const FLOAT *input_ptr, - __private const int2 output_shape, - __private const int2 src_stride, - __private const int2 dst_stride, - __global FLOAT *output -) { - - int image_width_idx = get_global_id(0); - int image_height_idx = get_global_id(1); - - DEAL_NON_UNIFORM_DIM2(image_width_idx, image_height_idx); - - const int batch_idx = image_height_idx / output_shape.x; - const int height_idx = image_height_idx % output_shape.x; - const int width_idx = image_width_idx % output_shape.y; - const int channel_block_idx = image_width_idx / output_shape.y; - int2 src_bc_offset = src_stride * (int2)(batch_idx, channel_block_idx); - int2 dst_bc_offset = dst_stride * (int2)(batch_idx, channel_block_idx); - int src_buffer_offset = - (((src_bc_offset.x + src_bc_offset.y) * output_shape.x + height_idx) * output_shape.y + width_idx) * 4; - int dst_buffer_offset = - (((dst_bc_offset.x + dst_bc_offset.y) * output_shape.x + height_idx) * output_shape.y + width_idx) * 4; - FLOAT4 values = vload4(0, input_ptr + src_buffer_offset); - - vstore4(values, 0, output+dst_buffer_offset); -} - -__kernel void nc4hw4_buffer_to_nc4hw4_buffer_floatin(GLOBAL_SIZE_2_DIMS - __global const float *input_ptr, - __private const int2 output_shape, - __private const int2 src_stride, - __private const int2 dst_stride, - __global FLOAT *output -) { - - int image_width_idx = get_global_id(0); - int image_height_idx = get_global_id(1); - - DEAL_NON_UNIFORM_DIM2(image_width_idx, image_height_idx); - - const int batch_idx = image_height_idx / output_shape.x; - const int height_idx = image_height_idx % output_shape.x; - const int width_idx = image_width_idx % output_shape.y; - const int channel_block_idx = image_width_idx / output_shape.y; - int2 src_bc_offset = src_stride * (int2)(batch_idx, channel_block_idx); - int2 dst_bc_offset = dst_stride * (int2)(batch_idx, channel_block_idx); - int src_buffer_offset = - (((src_bc_offset.x + src_bc_offset.y) * output_shape.x + height_idx) * output_shape.y + width_idx) * 4; - int dst_buffer_offset = - (((dst_bc_offset.x + dst_bc_offset.y) * output_shape.x + height_idx) * output_shape.y + width_idx) * 4; - FLOAT4 values = CONVERT_FLOAT4(vload4(0, input_ptr + src_buffer_offset)); - - vstore4(values, 0, output+dst_buffer_offset); -} - -__kernel void nc4hw4_buffer_to_nc4hw4_buffer_floatout(GLOBAL_SIZE_2_DIMS - __global const FLOAT *input_ptr, - __private const int2 output_shape, - __private const int2 src_stride, - __private const int2 dst_stride, - __global float *output -) { - - int image_width_idx = get_global_id(0); - int image_height_idx = get_global_id(1); - - DEAL_NON_UNIFORM_DIM2(image_width_idx, image_height_idx); - - const int batch_idx = image_height_idx / output_shape.x; - const int height_idx = image_height_idx % output_shape.x; - const int width_idx = image_width_idx % output_shape.y; - const int channel_block_idx = image_width_idx / output_shape.y; - int2 src_bc_offset = src_stride * (int2)(batch_idx, channel_block_idx); - int2 dst_bc_offset = dst_stride * (int2)(batch_idx, channel_block_idx); - int src_buffer_offset = - (((src_bc_offset.x + src_bc_offset.y) * output_shape.x + height_idx) * output_shape.y + width_idx) * 4; - int dst_buffer_offset = - (((dst_bc_offset.x + dst_bc_offset.y) * output_shape.x + height_idx) * output_shape.y + width_idx) * 4; - FLOAT4 values = vload4(0, input_ptr + src_buffer_offset); - - vstore4(convert_float4(values), 0, output+dst_buffer_offset); -} - -__kernel void nc4hw4_buffer_to_nc4hw4_buffer_floatin_floatout(GLOBAL_SIZE_2_DIMS - __global const float *input_ptr, + __global const INPUT_TYPE *input_ptr, __private const int2 output_shape, __private const int2 src_stride, __private const int2 dst_stride, - __global float *output + __global OUTPUT_TYPE *output ) { int image_width_idx = get_global_id(0); @@ -521,9 +230,8 @@ __kernel void nc4hw4_buffer_to_nc4hw4_buffer_floatin_floatout(GLOBAL_SIZE_2_DIMS (((src_bc_offset.x + src_bc_offset.y) * output_shape.x + height_idx) * output_shape.y + width_idx) * 4; int dst_buffer_offset = (((dst_bc_offset.x + dst_bc_offset.y) * output_shape.x + height_idx) * output_shape.y + width_idx) * 4; - FLOAT4 values = CONVERT_FLOAT4(vload4(0, input_ptr + src_buffer_offset)); - vstore4(convert_float4(values), 0, output+dst_buffer_offset); + vstore4(CONVERT_OUTPUT4(vload4(0, input_ptr + src_buffer_offset)), 0, output+dst_buffer_offset); } // convert kernel : from buffer(oihw) to image(oc/4 h w , ic oc4) diff --git a/source/backend/opencl/execution/cl/buffer_convert_subgroup_buf.cl b/source/backend/opencl/execution/cl/buffer_convert_subgroup_buf.cl index d89c77d8b..6d92c7610 100644 --- a/source/backend/opencl/execution/cl/buffer_convert_subgroup_buf.cl +++ b/source/backend/opencl/execution/cl/buffer_convert_subgroup_buf.cl @@ -9,52 +9,11 @@ } // convert data from buffer(nhwc) to buffer(nc16hw16) float input -__kernel void nhwc_buffer_to_nc16hw16_buffer_floatin(GLOBAL_SIZE_2_DIMS - __global const float *input_ptr, - __private const int height, - __private const int width, __private const int channels, - __global FLOAT *output, - __private const int input_pad_left, __private const int input_pad_right, - __private const int output_pad_left, __private const int output_pad_right) { - int image_width_idx = get_global_id(0); - int image_height_idx = get_global_id(1); - - DEAL_NON_UNIFORM_DIM2(image_width_idx, image_height_idx); - - const int batch_idx = image_height_idx / height; - const int height_idx = image_height_idx % height; - const int width_idx = image_width_idx % width; - const int channel_16_idx = (image_width_idx / width) << 4; - const int buffer_offset = ((batch_idx * height + height_idx) * width + width_idx) * channels + channel_16_idx; - - const int remain_channel = min(channels - channel_16_idx, 16); - FLOAT16 values = 0; - FLOAT* values_ptr = (FLOAT*)(&values); - - __global const float *input_current_ptr = input_ptr + buffer_offset; - - for(int i = 0; i < remain_channel; ++i){ - values_ptr[i] = (FLOAT)*(input_current_ptr + i); - } - const int out_offset = (((batch_idx * ((channels+15)/16) + channel_16_idx/16) * height + height_idx) * (output_pad_left + width + output_pad_right) + width_idx + output_pad_left)*16; - vstore16(values, 0, output+out_offset); - if(width_idx == 0){ - int pad_offset = (((batch_idx * ((channels+15)/16) + channel_16_idx/16) * height + height_idx) * (output_pad_left + width + output_pad_right))*16; - for(int i = 0; i < output_pad_left; ++i){ - vstore16(values, 0, output+pad_offset+i*16); - } - pad_offset += (output_pad_right + width) * 16; - for(int i = 0; i < output_pad_right; ++i){ - vstore16(values, 0, output+pad_offset+i*16); - } - } -} - __kernel void nhwc_buffer_to_nc16hw16_buffer(GLOBAL_SIZE_2_DIMS - __global const FLOAT *input_ptr, + __global const INPUT_TYPE *input_ptr, __private const int height, __private const int width, __private const int channels, - __global FLOAT *output, + __global OUTPUT_TYPE *output, __private const int input_pad_left, __private const int input_pad_right, __private const int output_pad_left, __private const int output_pad_right) { int image_width_idx = get_global_id(0); @@ -69,33 +28,33 @@ __kernel void nhwc_buffer_to_nc16hw16_buffer(GLOBAL_SIZE_2_DIMS const int buffer_offset = ((batch_idx * height + height_idx) * width + width_idx) * channels + channel_16_idx; const int remain_channel = min(channels - channel_16_idx, 16); - FLOAT16 values = 0; - FLOAT* values_ptr = (FLOAT*)(&values); + INPUT_TYPE16 values = 0; + INPUT_TYPE* values_ptr = (INPUT_TYPE*)(&values); - __global const FLOAT *input_current_ptr = input_ptr + buffer_offset; + __global const INPUT_TYPE *input_current_ptr = input_ptr + buffer_offset; for(int i = 0; i < remain_channel; ++i){ - values_ptr[i] = (FLOAT)*(input_current_ptr + i); + values_ptr[i] = *(input_current_ptr + i); } const int out_offset = (((batch_idx * ((channels+15)/16) + channel_16_idx/16) * height + height_idx) * (output_pad_left + width + output_pad_right) + width_idx + output_pad_left)*16; - vstore16(values, 0, output+out_offset); + vstore16(CONVERT_OUTPUT16(values), 0, output+out_offset); if(width_idx == 0){ int pad_offset = (((batch_idx * ((channels+15)/16) + channel_16_idx/16) * height + height_idx) * (output_pad_left + width + output_pad_right))*16; for(int i = 0; i < output_pad_left; ++i){ - vstore16(values, 0, output+pad_offset+i*16); + vstore16((OUTPUT_TYPE16)0, 0, output+pad_offset+i*16); } pad_offset += (output_pad_right + width) * 16; for(int i = 0; i < output_pad_right; ++i){ - vstore16(values, 0, output+pad_offset+i*16); + vstore16((OUTPUT_TYPE16)0, 0, output+pad_offset+i*16); } } } // convert data from buffer(nchw) to buffer(nc16hw16) -__kernel void nchw_buffer_to_nc16hw16_buffer_floatin(GLOBAL_SIZE_2_DIMS - __global const float *input_ptr, +__kernel void nchw_buffer_to_nc16hw16_buffer(GLOBAL_SIZE_2_DIMS + __global const INPUT_TYPE *input_ptr, __private const int height, __private const int width, __private const int channels, - __global FLOAT *output, + __global OUTPUT_TYPE *output, __private const int input_pad_left, __private const int input_pad_right, __private const int output_pad_left, __private const int output_pad_right) { int image_width_idx = get_global_id(0); @@ -113,102 +72,32 @@ __kernel void nchw_buffer_to_nc16hw16_buffer_floatin(GLOBAL_SIZE_2_DIMS const int remain_channel = min(channels - channel_16_idx, 16); const int height_width_size = height * width; - FLOAT16 output_values = 0; - FLOAT *output_values_ptr = (FLOAT*)(&output_values); - for(int i = 0; i < remain_channel; ++i){ - output_values_ptr[i] = (FLOAT)*(input_ptr + buffer_offset + height_width_size * i); - } - - if(width_idx == 0){ - int pad_offset = (((batch_idx * ((channels+15)/16) + channel_16_idx/16) * height + height_idx) * dst_width + 0)*16; - for(int i = 0; i < output_pad_left; ++i){ - vstore16((FLOAT16)0, 0, output+pad_offset + 16 * i); - } - pad_offset += 16 * (width + output_pad_left); - for(int i = 0; i < output_pad_right; ++i){ - vstore16((FLOAT16)0, 0, output+pad_offset + 16 * i); - } - } - const int out_offset = (((batch_idx * ((channels+15)/16) + channel_16_idx/16) * height + height_idx) * dst_width + width_idx + output_pad_left)*16; - vstore16(output_values, 0, output+out_offset); -} - -__kernel void nchw_buffer_to_nc16hw16_buffer(GLOBAL_SIZE_2_DIMS - __global const FLOAT *input_ptr, - __private const int height, __private const int width, __private const int channels, - __global FLOAT *output, - __private const int input_pad_left, __private const int input_pad_right, - __private const int output_pad_left, __private const int output_pad_right) { - int image_width_idx = get_global_id(0); - int image_height_idx = get_global_id(1); - - DEAL_NON_UNIFORM_DIM2(image_width_idx, image_height_idx); - - const int dst_width = width + output_pad_left + output_pad_right; - const int batch_idx = image_height_idx / height; - const int height_idx = image_height_idx % height; - const int width_idx = image_width_idx % width; - const int channel_16_idx = image_width_idx / width << 4; - const int buffer_offset = ((batch_idx * channels + channel_16_idx) * height + height_idx) * width + width_idx; - - const int remain_channel = min(channels - channel_16_idx, 16); - const int height_width_size = height * width; - FLOAT16 output_values = 0; - FLOAT *output_values_ptr = (FLOAT*)(&output_values); + INPUT_TYPE16 output_values = 0; + INPUT_TYPE *output_values_ptr = (INPUT_TYPE*)(&output_values); for(int i = 0; i < remain_channel; ++i){ - output_values_ptr[i] = (FLOAT)*(input_ptr + buffer_offset + height_width_size * i); + output_values_ptr[i] = *(input_ptr + buffer_offset + height_width_size * i); } if(width_idx == 0){ int pad_offset = (((batch_idx * ((channels+15)/16) + channel_16_idx/16) * height + height_idx) * dst_width + 0)*16; for(int i = 0; i < output_pad_left; ++i){ - vstore16((FLOAT16)0, 0, output+pad_offset + 16 * i); + vstore16((OUTPUT_TYPE16)0, 0, output+pad_offset + 16 * i); } pad_offset += 16 * (width + output_pad_left); for(int i = 0; i < output_pad_right; ++i){ - vstore16((FLOAT16)0, 0, output+pad_offset + 16 * i); + vstore16((OUTPUT_TYPE16)0, 0, output+pad_offset + 16 * i); } } const int out_offset = (((batch_idx * ((channels+15)/16) + channel_16_idx/16) * height + height_idx) * dst_width + width_idx + output_pad_left)*16; - vstore16(output_values, 0, output+out_offset); + vstore16(CONVERT_OUTPUT16(output_values), 0, output+out_offset); } // convert data from image(b h, ic/16 w ic16) to buffer(nhwc) -__kernel void nc16hw16_buffer_to_nhwc_buffer_floatout(GLOBAL_SIZE_2_DIMS - __global float *output, - __private const int height, __private const int width, - __private const int channels, - __global FLOAT *input_ptr, - __private const int input_pad_left, __private const int input_pad_right, - __private const int output_pad_left, __private const int output_pad_right) { - int image_width_idx = get_global_id(0); - int image_height_idx = get_global_id(1); - - DEAL_NON_UNIFORM_DIM2(image_width_idx, image_height_idx); - - const int batch_idx = image_height_idx / height; - const int height_idx = image_height_idx % height; - const int width_idx = image_width_idx % width; - const int channel_16_idx = (image_width_idx / width) << 4; - const int buffer_offset = ((batch_idx * height + height_idx) * width + width_idx) * channels + channel_16_idx; - - const int in_offset = (((batch_idx * ((channels+15)/16) + channel_16_idx/16) * height + height_idx) * (input_pad_left + width + input_pad_right) + width_idx + input_pad_left)*16; - - float16 values = convert_float16(vload16(0, input_ptr+in_offset)); - float* values_ptr = (float*)(&values); - const int remain_channel = min(channels - channel_16_idx, 16); - for(int i = 0; i < remain_channel; ++i){ - output[buffer_offset + i] = values_ptr[i]; - } -} - - - // convert data from image(b h, ic/16 w ic16) to buffer(nhwc) __kernel void nc16hw16_buffer_to_nhwc_buffer(GLOBAL_SIZE_2_DIMS - __global FLOAT *output, + __global OUTPUT_TYPE *output, __private const int height, __private const int width, __private const int channels, - __global FLOAT *input_ptr, + __global INPUT_TYPE *input_ptr, __private const int input_pad_left, __private const int input_pad_right, __private const int output_pad_left, __private const int output_pad_right) { int image_width_idx = get_global_id(0); @@ -224,52 +113,20 @@ __kernel void nc16hw16_buffer_to_nhwc_buffer(GLOBAL_SIZE_2_DIMS const int in_offset = (((batch_idx * ((channels+15)/16) + channel_16_idx/16) * height + height_idx) * (input_pad_left + width + input_pad_right) + width_idx + input_pad_left)*16; - FLOAT16 values = vload16(0, input_ptr+in_offset); - FLOAT* values_ptr = (FLOAT*)(&values); + INPUT_TYPE16 values = vload16(0, input_ptr+in_offset); + INPUT_TYPE* values_ptr = (INPUT_TYPE*)(&values); const int remain_channel = min(channels - channel_16_idx, 16); for(int i = 0; i < remain_channel; ++i){ - output[buffer_offset + i] = values_ptr[i]; - } -} - -// convert data from buffer(nc16hw16) to buffer(nchw) -__kernel void nc16hw16_buffer_to_nchw_buffer_floatout(GLOBAL_SIZE_2_DIMS - __global float *output, - __private const int height, __private const int width, - __private const int channels, - __global FLOAT *input_ptr, - __private const int input_pad_left, __private const int input_pad_right, - __private const int output_pad_left, __private const int output_pad_right) { - int image_width_idx = get_global_id(0); - int image_height_idx = get_global_id(1); - - DEAL_NON_UNIFORM_DIM2(image_width_idx, image_height_idx); - - const int src_width = width + input_pad_left + input_pad_right; - const int batch_idx = image_height_idx / height; - const int height_idx = image_height_idx % height; - const int width_idx = image_width_idx % width; - int channel_16_idx = (image_width_idx / width) << 4; - int buffer_offset = ((batch_idx * channels + channel_16_idx) * height + height_idx) * width + width_idx; - - const int in_offset = (((batch_idx * ((channels+15)/16) + channel_16_idx/16) * height + height_idx) * src_width + width_idx + input_pad_left)*16; - float16 values = convert_float16(vload16(0, input_ptr+in_offset)); - float *values_ptr = (float*)(&values); - - const int height_width_size = height * width; - - const int remain_channel = min(channels - channel_16_idx, 16); - for(int i = 0; i < remain_channel; ++i){ - output[buffer_offset + i * height_width_size] = values_ptr[i]; + output[buffer_offset + i] = (OUTPUT_TYPE)values_ptr[i]; } } // convert data from buffer(nc16hw16) to buffer(nchw) __kernel void nc16hw16_buffer_to_nchw_buffer(GLOBAL_SIZE_2_DIMS - __global FLOAT *output, + __global OUTPUT_TYPE *output, __private const int height, __private const int width, __private const int channels, - __global FLOAT *input_ptr, + __global INPUT_TYPE *input_ptr, __private const int input_pad_left, __private const int input_pad_right, __private const int output_pad_left, __private const int output_pad_right) { int image_width_idx = get_global_id(0); @@ -285,72 +142,23 @@ __kernel void nc16hw16_buffer_to_nchw_buffer(GLOBAL_SIZE_2_DIMS int buffer_offset = ((batch_idx * channels + channel_16_idx) * height + height_idx) * width + width_idx; const int in_offset = (((batch_idx * ((channels+15)/16) + channel_16_idx/16) * height + height_idx) * src_width + width_idx + input_pad_left)*16; - FLOAT16 values = vload16(0, input_ptr+in_offset); - FLOAT *values_ptr = (FLOAT*)(&values); + INPUT_TYPE16 values = vload16(0, input_ptr+in_offset); + INPUT_TYPE *values_ptr = (INPUT_TYPE*)(&values); const int height_width_size = height * width; const int remain_channel = min(channels - channel_16_idx, 16); for(int i = 0; i < remain_channel; ++i){ - output[buffer_offset + i * height_width_size] = values_ptr[i]; - } -} - -__kernel void nc4hw4_buffer_to_nc16hw16_buffer_floatin(GLOBAL_SIZE_2_DIMS - __global const float *input_ptr, - __private const int2 output_shape, - __private const int2 src_stride, - __private const int2 dst_stride, - __global FLOAT *output, - __private const int input_pad_left, - __private const int input_pad_right, - __private const int output_pad_left, - __private const int output_pad_right, - __private const int channelc4 -) { - - int image_width_idx = get_global_id(0); - int image_height_idx = get_global_id(1); - - DEAL_NON_UNIFORM_DIM2(image_width_idx, image_height_idx); - - const int batch_idx = image_height_idx / output_shape.x; - const int height_idx = image_height_idx % output_shape.x; - const int width_idx = image_width_idx % output_shape.y; - const int channel_block_idx = image_width_idx / output_shape.y; - const int in_channel_block_idx = channel_block_idx << 2; - const int dst_width = output_pad_left + output_shape.y + output_pad_right; - int2 src_bc_offset = src_stride * (int2)(batch_idx, in_channel_block_idx); - int2 dst_bc_offset = dst_stride * (int2)(batch_idx, channel_block_idx); - int src_buffer_offset = - (((src_bc_offset.x + src_bc_offset.y) * output_shape.x + height_idx) * output_shape.y + width_idx) * 4; - int dst_buffer_offset = - (((dst_bc_offset.x + dst_bc_offset.y) * output_shape.x + height_idx) * dst_width + width_idx + output_pad_left) * 16; - int width_height_size4 = output_shape.x * output_shape.y * 4; - FLOAT4 values0 = CONVERT_FLOAT4(vload4(0, input_ptr + src_buffer_offset)); - FLOAT4 values1 = in_channel_block_idx + 1 >= src_bc_offset.x ? (FLOAT4)0 : CONVERT_FLOAT4(vload4(0, input_ptr + src_buffer_offset + width_height_size4)); - FLOAT4 values2 = in_channel_block_idx + 2 >= src_bc_offset.x ? (FLOAT4)0 : CONVERT_FLOAT4(vload4(0, input_ptr + src_buffer_offset + width_height_size4 * 2)); - FLOAT4 values3 = in_channel_block_idx + 3 >= src_bc_offset.x ? (FLOAT4)0 : CONVERT_FLOAT4(vload4(0, input_ptr + src_buffer_offset + width_height_size4 * 3)); - - vstore16((FLOAT16)(values0.s0123, values1.s0123, values2.s0123, values3.s0123), 0, output+dst_buffer_offset); - if(width_idx == 0){ - int pad_offset = (((dst_bc_offset.x + dst_bc_offset.y) * output_shape.x + height_idx) * dst_width) * 16; - for(int i = 0; i < output_pad_left; ++i){ - vstore16((FLOAT16)0, 0, output+pad_offset + 16 * i); - } - pad_offset += 16 * (output_shape.y + output_pad_left); - for(int i = 0; i < output_pad_right; ++i){ - vstore16((FLOAT16)0, 0, output+pad_offset + 16 * i); - } + output[buffer_offset + i * height_width_size] = (OUTPUT_TYPE)values_ptr[i]; } } __kernel void nc4hw4_buffer_to_nc16hw16_buffer(GLOBAL_SIZE_2_DIMS - __global const FLOAT *input_ptr, + __global const INPUT_TYPE *input_ptr, __private const int2 output_shape, __private const int2 src_stride, __private const int2 dst_stride, - __global FLOAT *output, + __global OUTPUT_TYPE *output, __private const int input_pad_left, __private const int input_pad_right, __private const int output_pad_left, @@ -376,69 +184,30 @@ __kernel void nc4hw4_buffer_to_nc16hw16_buffer(GLOBAL_SIZE_2_DIMS int dst_buffer_offset = (((dst_bc_offset.x + dst_bc_offset.y) * output_shape.x + height_idx) * dst_width + width_idx + output_pad_left) * 16; int width_height_size4 = output_shape.x * output_shape.y * 4; - FLOAT4 values0 = vload4(0, input_ptr + src_buffer_offset); - FLOAT4 values1 = in_channel_block_idx + 1 >= src_bc_offset.x ? (FLOAT4)0 : vload4(0, input_ptr + src_buffer_offset + width_height_size4); - FLOAT4 values2 = in_channel_block_idx + 2 >= src_bc_offset.x ? (FLOAT4)0 : vload4(0, input_ptr + src_buffer_offset + width_height_size4 * 2); - FLOAT4 values3 = in_channel_block_idx + 3 >= src_bc_offset.x ? (FLOAT4)0 : vload4(0, input_ptr + src_buffer_offset + width_height_size4 * 3); + INPUT_TYPE4 values0 = vload4(0, input_ptr + src_buffer_offset); + INPUT_TYPE4 values1 = in_channel_block_idx + 1 >= src_bc_offset.x ? (INPUT_TYPE4)0 : vload4(0, input_ptr + src_buffer_offset + width_height_size4); + INPUT_TYPE4 values2 = in_channel_block_idx + 2 >= src_bc_offset.x ? (INPUT_TYPE4)0 : vload4(0, input_ptr + src_buffer_offset + width_height_size4 * 2); + INPUT_TYPE4 values3 = in_channel_block_idx + 3 >= src_bc_offset.x ? (INPUT_TYPE4)0 : vload4(0, input_ptr + src_buffer_offset + width_height_size4 * 3); - vstore16((FLOAT16)(values0.s0123, values1.s0123, values2.s0123, values3.s0123), 0, output+dst_buffer_offset); + vstore16(CONVERT_OUTPUT16((INPUT_TYPE16)(values0.s0123, values1.s0123, values2.s0123, values3.s0123)), 0, output+dst_buffer_offset); if(width_idx == 0){ int pad_offset = (((dst_bc_offset.x + dst_bc_offset.y) * output_shape.x + height_idx) * dst_width) * 16; for(int i = 0; i < output_pad_left; ++i){ - vstore16((FLOAT16)0, 0, output+pad_offset + 16 * i); + vstore16((OUTPUT_TYPE16)0, 0, output+pad_offset + 16 * i); } pad_offset += 16 * (output_shape.y + output_pad_left); for(int i = 0; i < output_pad_right; ++i){ - vstore16((FLOAT16)0, 0, output+pad_offset + 16 * i); + vstore16((OUTPUT_TYPE16)0, 0, output+pad_offset + 16 * i); } } } -__kernel void nc16hw16_buffer_to_nc4hw4_buffer_floatout(GLOBAL_SIZE_2_DIMS - __global const FLOAT *input_ptr, - __private const int2 output_shape, - __private const int2 src_stride, - __private const int2 dst_stride, - __global float *output, - __private const int input_pad_left,__private const int input_pad_right, - __private const int output_pad_left,__private const int output_pad_right, - __private const int channelc4 -) { - - int image_width_idx = get_global_id(0); - int image_height_idx = get_global_id(1); - - DEAL_NON_UNIFORM_DIM2(image_width_idx, image_height_idx); - - const int batch_idx = image_height_idx / output_shape.x; - const int height_idx = image_height_idx % output_shape.x; - const int width_idx = image_width_idx % output_shape.y; - const int channel_block_idx = image_width_idx / output_shape.y; - const int out_channel_block_idx = channel_block_idx << 2; - int2 src_bc_offset = src_stride * (int2)(batch_idx, channel_block_idx); - int2 dst_bc_offset = dst_stride * (int2)(batch_idx, out_channel_block_idx); - int width_height_size4 = output_shape.x * output_shape.y * 4; - int src_buffer_offset = - (((src_bc_offset.x + src_bc_offset.y) * output_shape.x + height_idx) * (input_pad_left + output_shape.y + input_pad_right) + width_idx + input_pad_left) * 16; - int dst_buffer_offset = - (((dst_bc_offset.x + dst_bc_offset.y) * output_shape.x + height_idx) * output_shape.y + width_idx) * 4; - FLOAT16 values = vload16(0, input_ptr + src_buffer_offset); - - vstore4(convert_float4(values.s0123), 0, output+dst_buffer_offset); - if(out_channel_block_idx + 1 >= channelc4) return; - vstore4(convert_float4(values.s4567), 0, output+dst_buffer_offset + width_height_size4); - if(out_channel_block_idx + 2 >= channelc4) return; - vstore4(convert_float4(values.s89ab), 0, output+dst_buffer_offset + 2 * width_height_size4); - if(out_channel_block_idx + 3 >= channelc4) return; - vstore4(convert_float4(values.scdef), 0, output+dst_buffer_offset + 3 * width_height_size4); -} - __kernel void nc16hw16_buffer_to_nc4hw4_buffer(GLOBAL_SIZE_2_DIMS - __global const FLOAT *input_ptr, + __global const INPUT_TYPE *input_ptr, __private const int2 output_shape, __private const int2 src_stride, __private const int2 dst_stride, - __global FLOAT *output, + __global OUTPUT_TYPE *output, __private const int input_pad_left,__private const int input_pad_right, __private const int output_pad_left,__private const int output_pad_right, __private const int channelc4 @@ -461,14 +230,13 @@ __kernel void nc16hw16_buffer_to_nc4hw4_buffer(GLOBAL_SIZE_2_DIMS (((src_bc_offset.x + src_bc_offset.y) * output_shape.x + height_idx) * (input_pad_left + output_shape.y + input_pad_right) + width_idx + input_pad_left) * 16; int dst_buffer_offset = (((dst_bc_offset.x + dst_bc_offset.y) * output_shape.x + height_idx) * output_shape.y + width_idx) * 4; - FLOAT16 values = vload16(0, input_ptr + src_buffer_offset); + INPUT_TYPE16 values = vload16(0, input_ptr + src_buffer_offset); - vstore4(values.s0123, 0, output+dst_buffer_offset); + vstore4(CONVERT_OUTPUT4(values.s0123), 0, output+dst_buffer_offset); if(out_channel_block_idx + 1 >= channelc4) return; - vstore4(values.s4567, 0, output+dst_buffer_offset + width_height_size4); + vstore4(CONVERT_OUTPUT4(values.s4567), 0, output+dst_buffer_offset + width_height_size4); if(out_channel_block_idx + 2 >= channelc4) return; - vstore4(values.s89ab, 0, output+dst_buffer_offset + 2 * width_height_size4); + vstore4(CONVERT_OUTPUT4(values.s89ab), 0, output+dst_buffer_offset + 2 * width_height_size4); if(out_channel_block_idx + 3 >= channelc4) return; - vstore4(values.scdef, 0, output+dst_buffer_offset + 3 * width_height_size4); + vstore4(CONVERT_OUTPUT4(values.scdef), 0, output+dst_buffer_offset + 3 * width_height_size4); } - diff --git a/source/backend/opencl/execution/cl/buffer_to_image.cl b/source/backend/opencl/execution/cl/buffer_to_image.cl index 94b295af7..a1ccb32bc 100644 --- a/source/backend/opencl/execution/cl/buffer_to_image.cl +++ b/source/backend/opencl/execution/cl/buffer_to_image.cl @@ -9,67 +9,6 @@ } __constant sampler_t SAMPLER = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP | CLK_FILTER_NEAREST; - -__kernel void nc4hw4_buffer_to_image(GLOBAL_SIZE_2_DIMS - #ifdef BUFFER_IMAGE_IO_TRANS - __global const float *input_ptr, - #else - __global const FLOAT *input_ptr, - #endif - __private const int2 output_shape, - __private const int batch_size, __write_only image2d_t output) { - - int image_width_idx = get_global_id(0); - int image_height_idx = get_global_id(1); - - DEAL_NON_UNIFORM_DIM2(image_width_idx, image_height_idx); - - const int batch_idx = image_height_idx / output_shape.x; - const int height_idx = image_height_idx % output_shape.x; - const int width_idx = image_width_idx % output_shape.y; - const int channel_block_idx = image_width_idx / output_shape.y; - int buffer_offset = - (((batch_idx + channel_block_idx * batch_size) * output_shape.x + height_idx) * output_shape.y + width_idx) * 4; - #ifdef BUFFER_IMAGE_IO_TRANS - FLOAT4 values = CONVERT_FLOAT4(vload4(0, input_ptr + buffer_offset)); - #else - FLOAT4 values = vload4(0, input_ptr + buffer_offset); - #endif - int2 coord = (int2)(image_width_idx, image_height_idx); - WI_F(output, coord, values); -} - -__kernel void image_to_nc4hw4_buffer(GLOBAL_SIZE_2_DIMS - #ifdef BUFFER_IMAGE_IO_TRANS - __global float *output, /* nc4hw4 */ - #else - __global FLOAT *output, /* nc4hw4 */ - #endif - __private const int2 output_shape, - __private const int batch_size, - __read_only image2d_t input_ptr) { - int image_width_idx = get_global_id(0); - int image_height_idx = get_global_id(1); - - DEAL_NON_UNIFORM_DIM2(image_width_idx, image_height_idx); - - const int batch_idx = image_height_idx / output_shape.x; - const int height_idx = image_height_idx % output_shape.x; - const int width_idx = image_width_idx % output_shape.y; - int channel_block_idx = image_width_idx / output_shape.y; - - int buffer_offset = - (((batch_idx + channel_block_idx * batch_size) * output_shape.x + height_idx) * output_shape.y + width_idx) * 4; - - int2 coord = (int2)(image_width_idx, image_height_idx); - #ifdef BUFFER_IMAGE_IO_TRANS - float4 values = convert_float4(RI_F(input_ptr, SAMPLER, coord)); - #else - FLOAT4 values = RI_F(input_ptr, SAMPLER, coord); - #endif - vstore4(values, 0, output + buffer_offset); -} - // convert kernel : from buffer(oi ) to image(oc, ic/4) __kernel void conv2d1x1_opt_filter_buffer_to_image(GLOBAL_SIZE_2_DIMS __global const FLOAT *input_ptr, __private const int input_channel, __private const int2 kernel_shape, __private const int ic_h_w_size, @@ -282,13 +221,50 @@ __kernel void dw_filter_buffer_to_image(GLOBAL_SIZE_2_DIMS WI_F(output, (int2)(image_width_idx, image_height_idx), output_values); } -// convert data from buffer(nhwc) to image(b h, ic/4 w ic4) +__kernel void nc4hw4_buffer_to_image(GLOBAL_SIZE_2_DIMS + __global const INPUT_TYPE *input_ptr, + __private const int2 output_shape, + __private const int batch_size, __write_only image2d_t output) { + + int image_width_idx = get_global_id(0); + int image_height_idx = get_global_id(1); + + DEAL_NON_UNIFORM_DIM2(image_width_idx, image_height_idx); + + const int batch_idx = image_height_idx / output_shape.x; + const int height_idx = image_height_idx % output_shape.x; + const int width_idx = image_width_idx % output_shape.y; + const int channel_block_idx = image_width_idx / output_shape.y; + int buffer_offset = + (((batch_idx + channel_block_idx * batch_size) * output_shape.x + height_idx) * output_shape.y + width_idx) * 4; + int2 coord = (int2)(image_width_idx, image_height_idx); + WI_DATA(output, coord, CONVERT_OUTPUT_I4(vload4(0, input_ptr + buffer_offset))); +} + +__kernel void image_to_nc4hw4_buffer(GLOBAL_SIZE_2_DIMS + __global OUTPUT_TYPE *output, + __private const int2 output_shape, + __private const int batch_size, + __read_only image2d_t input_ptr) { + int image_width_idx = get_global_id(0); + int image_height_idx = get_global_id(1); + + DEAL_NON_UNIFORM_DIM2(image_width_idx, image_height_idx); + + const int batch_idx = image_height_idx / output_shape.x; + const int height_idx = image_height_idx % output_shape.x; + const int width_idx = image_width_idx % output_shape.y; + int channel_block_idx = image_width_idx / output_shape.y; + + int buffer_offset = + (((batch_idx + channel_block_idx * batch_size) * output_shape.x + height_idx) * output_shape.y + width_idx) * 4; + + int2 coord = (int2)(image_width_idx, image_height_idx); + vstore4(CONVERT_OUTPUT4(RI_DATA(input_ptr, SAMPLER, coord)), 0, output + buffer_offset); +} + __kernel void nhwc_buffer_to_image(GLOBAL_SIZE_2_DIMS - #ifdef BUFFER_IMAGE_IO_TRANS - __global const float *input_ptr, - #else - __global const FLOAT *input_ptr, - #endif + __global const INPUT_TYPE *input_ptr, __private const int height, __private const int width, __private const int channels, __write_only image2d_t output) { @@ -304,15 +280,7 @@ __kernel void nhwc_buffer_to_image(GLOBAL_SIZE_2_DIMS const int buffer_offset = ((batch_idx * height + height_idx) * width + width_idx) * channels + channel_4_idx; const int remain_channel = channels - channel_4_idx; - FLOAT4 values = 0; - - #ifdef BUFFER_IMAGE_IO_TRANS - __global const float *input_current_ptr = input_ptr + buffer_offset; - values = CONVERT_FLOAT4(vload4(0, input_current_ptr)); - #else - __global const FLOAT *input_current_ptr = input_ptr + buffer_offset; - values = vload4(0, input_current_ptr); - #endif + INPUT_TYPE4 values = vload4(0, input_ptr + buffer_offset); if (remain_channel == 3) { values.w = 0; @@ -324,16 +292,11 @@ __kernel void nhwc_buffer_to_image(GLOBAL_SIZE_2_DIMS values.z = 0; values.w = 0; } - WI_F(output, (int2)(image_width_idx, image_height_idx), values); + WI_DATA(output, (int2)(image_width_idx, image_height_idx), CONVERT_OUTPUT_I4(values)); } -// convert data from buffer(nchw) to image(b h, ic/4 w ic4) __kernel void nchw_buffer_to_image(GLOBAL_SIZE_2_DIMS - #ifdef BUFFER_IMAGE_IO_TRANS - __global const float *input_ptr, - #else - __global const FLOAT *input_ptr, - #endif + __global const INPUT_TYPE *input_ptr, __private const int height, __private const int width, __private const int channels, __write_only image2d_t output) { int image_width_idx = get_global_id(0); @@ -349,45 +312,39 @@ __kernel void nchw_buffer_to_image(GLOBAL_SIZE_2_DIMS const int remain_channel = channels - channel_4_idx; const int height_width_size = height * width; - FLOAT4 output_values = 0; + INPUT_TYPE4 output_values = 0; if (remain_channel >= 4) { int offset = buffer_offset; - output_values.x = (FLOAT)*(input_ptr + offset); + output_values.x = *(input_ptr + offset); offset += height_width_size; - output_values.y = (FLOAT)*(input_ptr + offset); + output_values.y = *(input_ptr + offset); offset += height_width_size; - output_values.z = (FLOAT)*(input_ptr + offset); + output_values.z = *(input_ptr + offset); offset += height_width_size; - output_values.w = (FLOAT)*(input_ptr + offset); + output_values.w = *(input_ptr + offset); } else if (remain_channel == 3) { int offset = buffer_offset; - output_values.x = (FLOAT)*(input_ptr + offset); + output_values.x = *(input_ptr + offset); offset += height_width_size; - output_values.y = (FLOAT)*(input_ptr + offset); + output_values.y = *(input_ptr + offset); offset += height_width_size; - output_values.z = (FLOAT)*(input_ptr + offset); + output_values.z = *(input_ptr + offset); } else if (remain_channel == 2) { int offset = buffer_offset; - output_values.x = (FLOAT)*(input_ptr + offset); + output_values.x = *(input_ptr + offset); offset += height_width_size; - output_values.y = (FLOAT)*(input_ptr + offset); + output_values.y = *(input_ptr + offset); } else if (remain_channel == 1) { int offset = buffer_offset; - output_values.x = (FLOAT)*(input_ptr + offset); + output_values.x = *(input_ptr + offset); } - WI_F(output, (int2)(image_width_idx, image_height_idx), output_values); + WI_DATA(output, (int2)(image_width_idx, image_height_idx), CONVERT_OUTPUT_I4(output_values)); } -// only for debug -// convert data from image(b h, ic/4 w ic4) to buffer(nhwc) __kernel void image_to_nhwc_buffer(GLOBAL_SIZE_2_DIMS - #ifdef BUFFER_IMAGE_IO_TRANS - __global float *output, /* nhwc */ - #else - __global FLOAT *output, /* nhwc */ - #endif + __global OUTPUT_TYPE *output, __private const int height, __private const int width, __private const int channels, __read_only image2d_t input_ptr) { @@ -404,40 +361,30 @@ __kernel void image_to_nhwc_buffer(GLOBAL_SIZE_2_DIMS int2 coord = (int2)(image_width_idx, image_height_idx); - #ifdef BUFFER_IMAGE_IO_TRANS - float4 values = convert_float4(RI_F(input_ptr, SAMPLER, coord)); - #else - FLOAT4 values = RI_F(input_ptr, SAMPLER, coord); - #endif + INPUT_TYPE_I4 values = RI_DATA(input_ptr, SAMPLER, coord); const int remain_channel = channels - channel_4_idx; if (remain_channel >= 4) { - vstore4(values, 0, output + buffer_offset); + vstore4(CONVERT_OUTPUT4(values), 0, output + buffer_offset); } else if (remain_channel == 3) { int offset = buffer_offset; - output[offset] = values.x; + output[offset] = (OUTPUT_TYPE)values.x; offset++; - output[offset] = values.y; + output[offset] = (OUTPUT_TYPE)values.y; offset++; - output[offset] = values.z; + output[offset] = (OUTPUT_TYPE)values.z; } else if (remain_channel == 2) { int offset = buffer_offset; - output[offset] = values.x; + output[offset] = (OUTPUT_TYPE)values.x; offset++; - output[offset] = values.y; + output[offset] = (OUTPUT_TYPE)values.y; } else if (remain_channel == 1) { int offset = buffer_offset; - output[offset] = values.x; + output[offset] = (OUTPUT_TYPE)values.x; } } -// only for debug -// convert data from image(b h, ic/4 w ic4) to buffer(nchw) __kernel void image_to_nchw_buffer(GLOBAL_SIZE_2_DIMS - #ifdef BUFFER_IMAGE_IO_TRANS - __global float *output, /* nchw */ - #else - __global FLOAT *output, /* nchw */ - #endif + __global OUTPUT_TYPE *output, __private const int height, __private const int width, __private const int channels, __read_only image2d_t input_ptr) { @@ -452,11 +399,7 @@ __kernel void image_to_nchw_buffer(GLOBAL_SIZE_2_DIMS int channel_4_idx = (image_width_idx / width) * 4; int buffer_offset = ((batch_idx * channels + channel_4_idx) * height + height_idx) * width + width_idx; - #ifdef BUFFER_IMAGE_IO_TRANS - float4 values = convert_float4(RI_F(input_ptr, SAMPLER, (int2)(image_width_idx, image_height_idx))); - #else - FLOAT4 values = RI_F(input_ptr, SAMPLER, (int2)(image_width_idx, image_height_idx)); - #endif + INPUT_TYPE_I4 values = RI_DATA(input_ptr, SAMPLER, (int2)(image_width_idx, image_height_idx)); const int height_width_size = height * width; @@ -464,33 +407,33 @@ __kernel void image_to_nchw_buffer(GLOBAL_SIZE_2_DIMS if (remain_channel >= 4) { int offset = buffer_offset; - output[offset] = values.x; + output[offset] = (OUTPUT_TYPE)values.x; offset += height_width_size; - output[offset] = values.y; + output[offset] = (OUTPUT_TYPE)values.y; offset += height_width_size; - output[offset] = values.z; + output[offset] = (OUTPUT_TYPE)values.z; offset += height_width_size; - output[offset] = values.w; + output[offset] = (OUTPUT_TYPE)values.w; } else if (remain_channel == 3) { int offset = buffer_offset; - output[offset] = values.x; + output[offset] = (OUTPUT_TYPE)values.x; offset += height_width_size; - output[offset] = values.y; + output[offset] = (OUTPUT_TYPE)values.y; offset += height_width_size; - output[offset] = values.z; + output[offset] = (OUTPUT_TYPE)values.z; } else if (remain_channel == 2) { int offset = buffer_offset; - output[offset] = values.x; + output[offset] = (OUTPUT_TYPE)values.x; offset += height_width_size; - output[offset] = values.y; + output[offset] = (OUTPUT_TYPE)values.y; } else if (remain_channel == 1) { int offset = buffer_offset; - output[offset] = values.x; + output[offset] = (OUTPUT_TYPE)values.x; } } // convert arg as 4 alignment -__kernel void arg_buffer_to_image(GLOBAL_SIZE_2_DIMS __global const FLOAT *input_ptr, __private const int count, +__kernel void arg_buffer_to_image(GLOBAL_SIZE_2_DIMS __global const INPUT_TYPE *input_ptr, __private const int count, __write_only image2d_t output) { int image_width_idx = get_global_id(0); int image_height_idx = get_global_id(1); @@ -501,7 +444,7 @@ __kernel void arg_buffer_to_image(GLOBAL_SIZE_2_DIMS __global const FLOAT *input const int remain = count - buffer_4_offset; int offset = buffer_4_offset; - FLOAT4 values = 0; + INPUT_TYPE4 values = 0; if (remain >= 4) { values = vload4(0, input_ptr + offset); } else if (remain == 3) { @@ -517,11 +460,11 @@ __kernel void arg_buffer_to_image(GLOBAL_SIZE_2_DIMS __global const FLOAT *input } else if (remain == 1) { values.x = *(input_ptr + offset); } - WI_F(output, (int2)(image_width_idx, image_height_idx), values); + WI_DATA(output, (int2)(image_width_idx, image_height_idx), CONVERT_OUTPUT_I4(values)); } // only for debug -__kernel void arg_image_to_buffer(GLOBAL_SIZE_2_DIMS __global FLOAT *output, __private const int count, +__kernel void arg_image_to_buffer(GLOBAL_SIZE_2_DIMS __global OUTPUT_TYPE *output, __private const int count, __read_only image2d_t input_ptr) { int image_width_idx = get_global_id(0); int image_height_idx = get_global_id(1); @@ -531,37 +474,37 @@ __kernel void arg_image_to_buffer(GLOBAL_SIZE_2_DIMS __global FLOAT *output, __p const int buffer_4_offset = image_width_idx << 2; int2 coord = (int2)(image_width_idx, image_height_idx); - FLOAT4 values = RI_F(input_ptr, SAMPLER, coord); + INPUT_TYPE_I4 values = RI_DATA(input_ptr, SAMPLER, coord); const int remain = count - buffer_4_offset; if (remain < 4) { switch (remain) { case 3: - output[buffer_4_offset + 2] = values.s2; + output[buffer_4_offset + 2] = (OUTPUT_TYPE)values.s2; case 2: - output[buffer_4_offset + 1] = values.s1; + output[buffer_4_offset + 1] = (OUTPUT_TYPE)values.s1; case 1: - output[buffer_4_offset] = values.s0; + output[buffer_4_offset] = (OUTPUT_TYPE)values.s0; } } else { - vstore4(values, 0, output + buffer_4_offset); + vstore4(CONVERT_OUTPUT4(values), 0, output + buffer_4_offset); } if (remain >= 4) { - vstore4(values, 0, output + buffer_4_offset); + vstore4(CONVERT_OUTPUT4(values), 0, output + buffer_4_offset); } else if (remain == 3) { int offset = buffer_4_offset; - output[offset] = values.x; + output[offset] = (OUTPUT_TYPE)values.x; offset++; - output[offset] = values.y; + output[offset] = (OUTPUT_TYPE)values.y; offset++; - output[offset] = values.z; + output[offset] = (OUTPUT_TYPE)values.z; } else if (remain == 2) { int offset = buffer_4_offset; - output[offset] = values.x; + output[offset] = (OUTPUT_TYPE)values.x; offset++; - output[offset] = values.y; + output[offset] = (OUTPUT_TYPE)values.y; } else if (remain == 1) { int offset = buffer_4_offset; - output[offset] = values.x; + output[offset] = (OUTPUT_TYPE)values.x; } } diff --git a/source/backend/opencl/execution/cl/cast.cl b/source/backend/opencl/execution/cl/cast.cl index 4f87cb1da..67debcc3c 100644 --- a/source/backend/opencl/execution/cl/cast.cl +++ b/source/backend/opencl/execution/cl/cast.cl @@ -29,11 +29,11 @@ __kernel void cast(GLOBAL_SIZE_3_DIMS const int channel_idx = batch_channel_idx % channelBlock; #ifdef TO_BOOL - int4 value = convert_int4(RI_F(input, SAMPLER, (int2)(channel_idx * width + width_idx, batch_idx * height + height_idx))); + int4 value = convert_int4(RI_DATA(input, SAMPLER, (int2)(channel_idx * width + width_idx, batch_idx * height + height_idx))); value = value == (int4)0 ? (int4)0 : (int4)1; - WI_F(output, (int2)(channel_idx * width + width_idx, batch_idx * height + height_idx), CONVERT_FLOAT4(value)); + WI_DATA(output, (int2)(channel_idx * width + width_idx, batch_idx * height + height_idx), CONVERT_OUTPUT_I4(value)); #else - FLOAT4 value = RI_F(input, SAMPLER, (int2)(channel_idx * width + width_idx, batch_idx * height + height_idx)); - WI_F(output, (int2)(channel_idx * width + width_idx, batch_idx * height + height_idx), value); + INPUT_TYPE_I4 value = RI_DATA(input, SAMPLER, (int2)(channel_idx * width + width_idx, batch_idx * height + height_idx)); + WI_DATA(output, (int2)(channel_idx * width + width_idx, batch_idx * height + height_idx), CONVERT_OUTPUT_I4(value)); #endif } diff --git a/source/backend/opencl/execution/cl/cast_buf.cl b/source/backend/opencl/execution/cl/cast_buf.cl index 9c1c1cd1c..d9c1fb8e7 100644 --- a/source/backend/opencl/execution/cl/cast_buf.cl +++ b/source/backend/opencl/execution/cl/cast_buf.cl @@ -11,8 +11,8 @@ __private const int global_size_dim0, __private const int global_size_dim1, __pr } __kernel void cast_buf(GLOBAL_SIZE_3_DIMS - __global FLOAT* input, - __global FLOAT* output, + __global INPUT_TYPE* input, + __global OUTPUT_TYPE* output, __private const int width, __private const int height, __private const int channelBlock @@ -30,9 +30,8 @@ __kernel void cast_buf(GLOBAL_SIZE_3_DIMS #ifdef TO_BOOL int4 value = convert_int4(vload4(0, input + inp_offset)); value = value == (int4)0 ? (int4)0 : (int4)1; - vstore4(CONVERT_FLOAT4(value), 0, output + inp_offset); + vstore4(CONVERT_OUTPUT4(value), 0, output + inp_offset); #else - FLOAT4 value = vload4(0, input + inp_offset); - vstore4(value, 0, output + inp_offset); + vstore4(CONVERT_OUTPUT4(vload4(0, input + inp_offset)), 0, output + inp_offset); #endif } diff --git a/source/backend/opencl/execution/cl/conv_2d.cl b/source/backend/opencl/execution/cl/conv_2d.cl index 0f5db4085..c3a807cb7 100644 --- a/source/backend/opencl/execution/cl/conv_2d.cl +++ b/source/backend/opencl/execution/cl/conv_2d.cl @@ -177,111 +177,6 @@ void conv_2d_1x1_mali(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, __rea } -__kernel void conv_2d_1x1_local(GLOBAL_SIZE_3_DIMS __read_only image2d_t input, __read_only image2d_t weights, - __read_only image2d_t bias, - __write_only image2d_t output, - __private const int in_c_block, __private const int out_h, - __private const int out_w) { - - const int row = get_local_id(0); - const int col = get_local_id(1); - - const int out_c_idx = get_global_id(0); //c/4 - const int out_w_idx = get_global_id(1); //w - const int out_b_h_idx = get_global_id(2); //b h - - DEAL_NON_UNIFORM_DIM3(out_c_idx, out_w_idx, out_b_h_idx); - - const int out_w4_idx = mul24(out_w_idx, 4); - - FLOAT4 out0 = RI_F(bias, SAMPLER, (int2)(out_c_idx, 0)); - FLOAT4 out1 = out0; - FLOAT4 out2 = out0; - FLOAT4 out3 = out0; - - FLOAT4 weights0; - FLOAT4 weights1; - FLOAT4 weights2; - FLOAT4 weights3; - - __local FLOAT4 in_sm0[UNIT*UNIT]; - __local FLOAT4 in_sm1[UNIT*UNIT]; - __local FLOAT4 in_sm2[UNIT*UNIT]; - __local FLOAT4 in_sm3[UNIT*UNIT]; - - int tiles = (in_c_block + UNIT -1)/ UNIT; - - const int col_x_unit = mul24(col, UNIT); - const int in_index = col_x_unit + row; - - for (int t = 0; t < tiles; ++t) { - - int in_c = mad24(t, UNIT, row); - int in_c_w_idx = mad24(in_c, out_w, out_w4_idx); - - in_sm0[in_index] = RI_F(input, SAMPLER, (int2)(in_c_w_idx, out_b_h_idx)); - in_sm1[in_index] = RI_F(input, SAMPLER, (int2)(in_c_w_idx+1, out_b_h_idx)); - in_sm2[in_index] = RI_F(input, SAMPLER, (int2)(in_c_w_idx+2, out_b_h_idx)); - in_sm3[in_index] = RI_F(input, SAMPLER, (int2)(in_c_w_idx+3, out_b_h_idx)); - - barrier(CLK_GLOBAL_MEM_FENCE); - - int kernel_index = mul24(t, UNIT*4); - - for(int k = 0; k < UNIT; k++){ - - __private int kernel_cx4 = mad24(k, 4, kernel_index); - __private int local_idx = col_x_unit + k; - - weights0 = RI_F(weights, SAMPLER, (int2)(kernel_cx4++, out_c_idx)); - weights1 = RI_F(weights, SAMPLER, (int2)(kernel_cx4++, out_c_idx)); - weights2 = RI_F(weights, SAMPLER, (int2)(kernel_cx4++, out_c_idx)); - weights3 = RI_F(weights, SAMPLER, (int2)(kernel_cx4++, out_c_idx)); - - CALCULATE_OUTPUT_OPT(0); - CALCULATE_OUTPUT_OPT(1); - CALCULATE_OUTPUT_OPT(2); - CALCULATE_OUTPUT_OPT(3); - } - barrier(CLK_LOCAL_MEM_FENCE); - } - -#ifdef RELU - out0 = fmax(out0, (FLOAT4)0); - out1 = fmax(out1, (FLOAT4)0); - out2 = fmax(out2, (FLOAT4)0); - out3 = fmax(out3, (FLOAT4)0); -#endif - -#ifdef RELU6 - out0 = clamp(out0, (FLOAT4)0, (FLOAT4)6); - out1 = clamp(out1, (FLOAT4)0, (FLOAT4)6); - out2 = clamp(out2, (FLOAT4)0, (FLOAT4)6); - out3 = clamp(out3, (FLOAT4)0, (FLOAT4)6); -#endif - - const int out_x_base = out_c_idx*out_w; - - const int remain = out_w - out_w4_idx; - int output_idx = out_x_base + out_w4_idx; - if (remain >= 4) { - WI_F(output, (int2)(output_idx, out_b_h_idx), out0); - WI_F(output, (int2)(output_idx + 1, out_b_h_idx), out1); - WI_F(output, (int2)(output_idx + 2, out_b_h_idx), out2); - WI_F(output, (int2)(output_idx + 3, out_b_h_idx), out3); - } else if (remain == 3) { - WI_F(output, (int2)(output_idx, out_b_h_idx), out0); - WI_F(output, (int2)(output_idx + 1, out_b_h_idx), out1); - WI_F(output, (int2)(output_idx + 2, out_b_h_idx), out2); - } else if (remain == 2) { - WI_F(output, (int2)(output_idx, out_b_h_idx), out0); - WI_F(output, (int2)(output_idx + 1, out_b_h_idx), out1); - } else if (remain == 1) { - WI_F(output, (int2)(output_idx, out_b_h_idx), out0); - } - -} - __kernel #if SET_ATTRIBUTE __attribute__((work_group_size_hint(16, 16, 1))) @@ -291,19 +186,16 @@ void conv_2d_1x1(GLOBAL_SIZE_2_DIMS __read_only image2d_t input, __global const char *kernel_ptr, __global const FLOAT *dequantScale, __global const FLOAT *dequantOffset, - __global const FLOAT *bias_ptr, #elif (defined USE_LOW_BIT_WEIGHT_INT4) __global const uchar *kernel_ptr, __global const FLOAT *dequantScale, __global const FLOAT *dequantOffset, - __global const FLOAT *bias_ptr, #elif (defined USE_BUFFER) __global const FLOAT *weights, - __read_only image2d_t bias, #else __read_only image2d_t weights, - __read_only image2d_t bias, #endif + __read_only image2d_t bias, __write_only image2d_t output, __private const int2 input_shape, __private const int in_channel_block, __private const int2 output_shape, @@ -326,11 +218,7 @@ void conv_2d_1x1(GLOBAL_SIZE_2_DIMS __read_only image2d_t input, int weight_oc_offset = out_channel_blocks * 16; #endif -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - FLOAT4 out0 = vload4(output_channel_block_idx, bias_ptr); -#else FLOAT4 out0 = RI_F(bias, SAMPLER, (int2)(output_channel_block_idx, 0)); -#endif FLOAT4 out1 = out0; FLOAT4 out2 = out0; FLOAT4 out3 = out0; @@ -473,19 +361,16 @@ void conv_2d_1x1_c8h1w4(GLOBAL_SIZE_2_DIMS __read_only image2d_t input, __global const char *kernel_ptr, __global const FLOAT *dequantScale, __global const FLOAT *dequantOffset, - __global const FLOAT *bias_ptr, #elif (defined USE_LOW_BIT_WEIGHT_INT4) __global const uchar *kernel_ptr, __global const FLOAT *dequantScale, __global const FLOAT *dequantOffset, - __global const FLOAT *bias_ptr, #elif (defined USE_BUFFER) __global const FLOAT *weights, - __read_only image2d_t bias, #else __read_only image2d_t weights, - __read_only image2d_t bias, #endif + __read_only image2d_t bias, __write_only image2d_t output, __private const int2 input_shape, __private const int in_channel_block, __private const int2 output_shape, @@ -508,17 +393,12 @@ void conv_2d_1x1_c8h1w4(GLOBAL_SIZE_2_DIMS __read_only image2d_t input, int weight_ic_offset = output_channel_block_idx * 32; int weight_oc_offset = out_channel_blocks * 16; #endif -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - FLOAT4 out0 = vload4(output_channel_idx, bias_ptr); - FLOAT4 out4 = vload4(output_channel_idx + 1, bias_ptr); -#else FLOAT4 out0 = RI_F(bias, SAMPLER, (int2)(output_channel_idx, 0)); - FLOAT4 out4 = RI_F(bias, SAMPLER, (int2)(output_channel_idx + 1, 0)); -#endif FLOAT4 out1 = out0; FLOAT4 out2 = out0; FLOAT4 out3 = out0; + FLOAT4 out4 = RI_F(bias, SAMPLER, (int2)(output_channel_idx + 1, 0)); FLOAT4 out5 = out4; FLOAT4 out6 = out4; FLOAT4 out7 = out4; @@ -749,11 +629,7 @@ void conv_2d_c4h1w4(GLOBAL_SIZE_2_DIMS __read_only image2d_t input, __read_only image2d_t weights, #endif #ifdef BIAS -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - __global const FLOAT *bias_ptr, -#else __read_only image2d_t bias, -#endif #endif __write_only image2d_t output, __private const int2 input_shape, @@ -775,11 +651,7 @@ void conv_2d_c4h1w4(GLOBAL_SIZE_2_DIMS __read_only image2d_t input, const int out_height_block_idx = output_channel_width_idx % out_width_blocks; #ifdef BIAS -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - FLOAT4 out0 = vload4(out_channel_block_idx, bias_ptr); -#else FLOAT4 out0 = RI_F(bias, SAMPLER, (int2)(out_channel_block_idx, 0)); -#endif #else FLOAT4 out0 = (FLOAT4)0; #endif @@ -1077,11 +949,7 @@ void conv_2d_c8h4w1(GLOBAL_SIZE_2_DIMS __read_only image2d_t input, __read_only image2d_t weights, #endif #ifdef BIAS -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - __global const FLOAT *bias_ptr, -#else __read_only image2d_t bias, -#endif #endif __write_only image2d_t output, __private const int2 input_shape, @@ -1105,13 +973,8 @@ void conv_2d_c8h4w1(GLOBAL_SIZE_2_DIMS __read_only image2d_t input, const int out_batch_block_idx = output_batch_height_idx / out_height_blocks; #ifdef BIAS -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - FLOAT4 out0 = vload4(out_channel_block_idx, bias_ptr); - FLOAT4 out4 = vload4(out_channel_block_idx + 1, bias_ptr); -#else FLOAT4 out0 = RI_F(bias, SAMPLER, (int2)(out_channel_block_idx, 0)); FLOAT4 out4 = RI_F(bias, SAMPLER, (int2)(out_channel_block_idx + 1, 0)); -#endif #else FLOAT4 out0 = (FLOAT4)0; FLOAT4 out4 = (FLOAT4)0; @@ -1361,11 +1224,7 @@ void conv_2d_c4h4w1(GLOBAL_SIZE_2_DIMS __read_only image2d_t input, __read_only image2d_t weights, #endif #ifdef BIAS -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - __global const FLOAT *bias_ptr, -#else __read_only image2d_t bias, -#endif #endif __write_only image2d_t output, __private const int2 input_shape, @@ -1389,11 +1248,7 @@ void conv_2d_c4h4w1(GLOBAL_SIZE_2_DIMS __read_only image2d_t input, const int out_batch_block_idx = output_batch_height_idx / out_height_blocks; #ifdef BIAS -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - FLOAT4 out0 = vload4(out_channel_block_idx, bias_ptr); -#else FLOAT4 out0 = RI_F(bias, SAMPLER, (int2)(out_channel_block_idx, 0)); -#endif #else FLOAT4 out0 = (FLOAT4)0; #endif diff --git a/source/backend/opencl/execution/cl/conv_2d_buf.cl b/source/backend/opencl/execution/cl/conv_2d_buf.cl index 598998482..c9936deca 100644 --- a/source/backend/opencl/execution/cl/conv_2d_buf.cl +++ b/source/backend/opencl/execution/cl/conv_2d_buf.cl @@ -22,23 +22,12 @@ return; \ } -#define MOD_NUM 15 __kernel void conv_2d_1x1_c4h1w4(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, __global const FLOAT *input, -#if (defined USE_LOW_BIT_WEIGHT_INT8) - __global const char *kernel_ptr, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - __global const uchar *kernel_ptr, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#else __global const FLOAT *kernel_ptr, -#endif __global const FLOAT *bias_ptr, __global FLOAT *output, __private const int in_c_block, @@ -56,19 +45,6 @@ void conv_2d_1x1_c4h1w4(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, const int out_b_idx = out_b_h_idx / out_h; // equal to in_b_idx const int out_h_idx = out_b_h_idx % out_h; // equal to in_h_idx -#if (defined USE_LOW_BIT_WEIGHT_INT4) - int weight_offset = out_c_idx * 8; - int weight_oc_offset = out_c_block * 8; -#else - int weight_offset = out_c_idx * 16; - int weight_oc_offset = out_c_block * 16; -#endif - -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - const FLOAT4 dequantScaleC4 = vload4(out_c_idx, dequantScale); - const FLOAT4 dequantOffsetC4 = vload4(out_c_idx, dequantOffset); -#endif - const int out_w4_idx = mul24(out_w_idx, 4); FLOAT4 out0 = vload4(out_c_idx, (__global FLOAT *)bias_ptr); FLOAT4 out1 = out0; @@ -88,66 +64,11 @@ void conv_2d_1x1_c4h1w4(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, FLOAT4 in2 = vload4(2, input+inp_offset); FLOAT4 in3 = vload4(3, input+inp_offset); -#if (defined USE_LOW_BIT_WEIGHT_INT8) - FLOAT16 weights = CONVERT_FLOAT16(vload16(0, kernel_ptr + weight_offset + in_channel_block_idx * weight_oc_offset)); - FLOAT4 weights0 = CONVERT_FLOAT4(weights.s0123) * dequantScaleC4 + dequantOffsetC4; - FLOAT4 weights1 = CONVERT_FLOAT4(weights.s4567) * dequantScaleC4 + dequantOffsetC4; - FLOAT4 weights2 = CONVERT_FLOAT4(weights.s89ab) * dequantScaleC4 + dequantOffsetC4; - FLOAT4 weights3 = CONVERT_FLOAT4(weights.scdef) * dequantScaleC4 + dequantOffsetC4; -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - uchar8 charWeightsInt4 = vload8(0, kernel_ptr + weight_offset + in_channel_block_idx * weight_oc_offset); - char4 charWeights0 = (char4)(0, 0, 0, 0); - char4 charWeights1 = (char4)(0, 0, 0, 0); - char4 charWeights2 = (char4)(0, 0, 0, 0); - char4 charWeights3 = (char4)(0, 0, 0, 0); - charWeights0.x = (charWeightsInt4.s0 >> 4) - 8; - charWeights0.y = (charWeightsInt4.s0 & MOD_NUM) - 8; - charWeights0.z = (charWeightsInt4.s1 >> 4) - 8; - charWeights0.w = (charWeightsInt4.s1 & MOD_NUM) - 8; - charWeights1.x = (charWeightsInt4.s2 >> 4) - 8; - charWeights1.y = (charWeightsInt4.s2 & MOD_NUM) - 8; - charWeights1.z = (charWeightsInt4.s3 >> 4) - 8; - charWeights1.w = (charWeightsInt4.s3 & MOD_NUM)- 8; - charWeights2.x = (charWeightsInt4.s4 >> 4) - 8; - charWeights2.y = (charWeightsInt4.s4 & MOD_NUM) - 8; - charWeights2.z = (charWeightsInt4.s5 >> 4) - 8; - charWeights2.w = (charWeightsInt4.s5 & MOD_NUM) - 8; - charWeights3.x = (charWeightsInt4.s6 >> 4) - 8; - charWeights3.y = (charWeightsInt4.s6 & MOD_NUM) - 8; - charWeights3.z = (charWeightsInt4.s7 >> 4) - 8; - charWeights3.w = (charWeightsInt4.s7 & MOD_NUM) - 8; - FLOAT4 weights0 = CONVERT_FLOAT4(charWeights0) * dequantScaleC4 + dequantOffsetC4; - FLOAT4 weights1 = CONVERT_FLOAT4(charWeights1) * dequantScaleC4 + dequantOffsetC4; - FLOAT4 weights2 = CONVERT_FLOAT4(charWeights2) * dequantScaleC4 + dequantOffsetC4; - FLOAT4 weights3 = CONVERT_FLOAT4(charWeights3) * dequantScaleC4 + dequantOffsetC4; -#else FLOAT4 weights0 = vload4(offset, (__global FLOAT *)kernel_ptr); FLOAT4 weights1 = vload4(offset + 1, (__global FLOAT *)kernel_ptr); FLOAT4 weights2 = vload4(offset + 2, (__global FLOAT *)kernel_ptr); FLOAT4 weights3 = vload4(offset + 3, (__global FLOAT *)kernel_ptr); -#endif -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - out0 = mad((FLOAT4)in0.x, weights0, out0); - out0 = mad((FLOAT4)in0.y, weights1, out0); - out0 = mad((FLOAT4)in0.z, weights2, out0); - out0 = mad((FLOAT4)in0.w, weights3, out0); - - out1 = mad((FLOAT4)in1.x, weights0, out1); - out1 = mad((FLOAT4)in1.y, weights1, out1); - out1 = mad((FLOAT4)in1.z, weights2, out1); - out1 = mad((FLOAT4)in1.w, weights3, out1); - - out2 = mad((FLOAT4)in2.x, weights0, out2); - out2 = mad((FLOAT4)in2.y, weights1, out2); - out2 = mad((FLOAT4)in2.z, weights2, out2); - out2 = mad((FLOAT4)in2.w, weights3, out2); - - out3 = mad((FLOAT4)in3.x, weights0, out3); - out3 = mad((FLOAT4)in3.y, weights1, out3); - out3 = mad((FLOAT4)in3.z, weights2, out3); - out3 = mad((FLOAT4)in3.w, weights3, out3); -#else out0.x += dot(weights0, in0); out0.y += dot(weights1, in0); out0.z += dot(weights2, in0); @@ -167,7 +88,6 @@ void conv_2d_1x1_c4h1w4(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, out3.y += dot(weights1, in3); out3.z += dot(weights2, in3); out3.w += dot(weights3, in3); -#endif offset += 4; inp_offset += inp_add; @@ -209,17 +129,7 @@ void conv_2d_1x1_c4h1w4(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, __kernel void conv_2d_1x1_c8h1w4(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, __global const FLOAT *input, -#if (defined USE_LOW_BIT_WEIGHT_INT8) - __global const char *kernel_ptr, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - __global const uchar *kernel_ptr, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#else __global const FLOAT *kernel_ptr, -#endif __global const FLOAT *bias_ptr, __global FLOAT *output, __private const int in_c_block, @@ -237,21 +147,6 @@ void conv_2d_1x1_c8h1w4(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, const int out_b_idx = out_b_h_idx / out_h;//equal to in_b_idx const int out_h_idx = out_b_h_idx % out_h;//equal to in_h_idx -#if (defined USE_LOW_BIT_WEIGHT_INT4) - int weight_offset = out_c_idx * 16; - int weight_oc_offset = out_c_block * 8; -#else - int weight_offset = out_c_idx * 32; - int weight_oc_offset = out_c_block * 16; -#endif - -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - const FLOAT4 dequantScaleC03 = vload4(out_c_idx << 1, dequantScale); - const FLOAT4 dequantOffsetC03 = vload4(out_c_idx << 1, dequantOffset); - const FLOAT4 dequantScaleC47 = vload4((out_c_idx << 1) + 1, dequantScale); - const FLOAT4 dequantOffsetC47 = vload4((out_c_idx << 1) + 1, dequantOffset); -#endif - const int out_w4_idx = mul24(out_w_idx, 4); FLOAT4 out0 = vload4(out_c_idx<<1, (__global FLOAT *)bias_ptr); FLOAT4 out1 = out0; @@ -277,68 +172,6 @@ void conv_2d_1x1_c8h1w4(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, FLOAT4 in2 = vload4(2, input+inp_offset);; FLOAT4 in3 = vload4(3, input+inp_offset);; -#if (defined USE_LOW_BIT_WEIGHT_INT8) - FLOAT16 weightsInt80 = CONVERT_FLOAT16(vload16(0, kernel_ptr + weight_offset + in_channel_block_idx * weight_oc_offset)); - FLOAT16 weightsInt81 = CONVERT_FLOAT16(vload16(0, kernel_ptr + 16 + weight_offset + in_channel_block_idx * weight_oc_offset)); - FLOAT4 weights0 = CONVERT_FLOAT4(weightsInt80.s0123) * dequantScaleC03 + dequantOffsetC03; - FLOAT4 weights1 = CONVERT_FLOAT4(weightsInt80.s4567) * dequantScaleC03 + dequantOffsetC03; - FLOAT4 weights2 = CONVERT_FLOAT4(weightsInt80.s89ab) * dequantScaleC03 + dequantOffsetC03; - FLOAT4 weights3 = CONVERT_FLOAT4(weightsInt80.scdef) * dequantScaleC03 + dequantOffsetC03; - FLOAT4 weights4 = CONVERT_FLOAT4(weightsInt81.s0123) * dequantScaleC47 + dequantOffsetC47; - FLOAT4 weights5 = CONVERT_FLOAT4(weightsInt81.s4567) * dequantScaleC47 + dequantOffsetC47; - FLOAT4 weights6 = CONVERT_FLOAT4(weightsInt81.s89ab) * dequantScaleC47 + dequantOffsetC47; - FLOAT4 weights7 = CONVERT_FLOAT4(weightsInt81.scdef) * dequantScaleC47 + dequantOffsetC47; -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - uchar16 charWeightsInt4 = vload16(0, kernel_ptr + weight_offset + in_channel_block_idx * weight_oc_offset); - char4 charWeights0 = (char4)(0, 0, 0, 0); - char4 charWeights1 = (char4)(0, 0, 0, 0); - char4 charWeights2 = (char4)(0, 0, 0, 0); - char4 charWeights3 = (char4)(0, 0, 0, 0); - char4 charWeights4 = (char4)(0, 0, 0, 0); - char4 charWeights5 = (char4)(0, 0, 0, 0); - char4 charWeights6 = (char4)(0, 0, 0, 0); - char4 charWeights7 = (char4)(0, 0, 0, 0); - charWeights0.x = (charWeightsInt4.s0 >> 4) - 8; - charWeights0.y = (charWeightsInt4.s0 & MOD_NUM) - 8; - charWeights0.z = (charWeightsInt4.s1 >> 4) - 8; - charWeights0.w = (charWeightsInt4.s1 & MOD_NUM) - 8; - charWeights1.x = (charWeightsInt4.s2 >> 4) - 8; - charWeights1.y = (charWeightsInt4.s2 & MOD_NUM) - 8; - charWeights1.z = (charWeightsInt4.s3 >> 4) - 8; - charWeights1.w = (charWeightsInt4.s3 & MOD_NUM) - 8; - charWeights2.x = (charWeightsInt4.s4 >> 4) - 8; - charWeights2.y = (charWeightsInt4.s4 & MOD_NUM) - 8; - charWeights2.z = (charWeightsInt4.s5 >> 4) - 8; - charWeights2.w = (charWeightsInt4.s5 & MOD_NUM) - 8; - charWeights3.x = (charWeightsInt4.s6 >> 4) - 8; - charWeights3.y = (charWeightsInt4.s6 & MOD_NUM) - 8; - charWeights3.z = (charWeightsInt4.s7 >> 4) - 8; - charWeights3.w = (charWeightsInt4.s7 & MOD_NUM) - 8; - charWeights4.x = (charWeightsInt4.s8 >> 4) - 8; - charWeights4.y = (charWeightsInt4.s8 & MOD_NUM) - 8; - charWeights4.z = (charWeightsInt4.s9 >> 4) - 8; - charWeights4.w = (charWeightsInt4.s9 & MOD_NUM) - 8; - charWeights5.x = (charWeightsInt4.sa >> 4) - 8; - charWeights5.y = (charWeightsInt4.sa & MOD_NUM) - 8; - charWeights5.z = (charWeightsInt4.sb >> 4) - 8; - charWeights5.w = (charWeightsInt4.sb & MOD_NUM) - 8; - charWeights6.x = (charWeightsInt4.sc >> 4) - 8; - charWeights6.y = (charWeightsInt4.sc & MOD_NUM) - 8; - charWeights6.z = (charWeightsInt4.sd >> 4) - 8; - charWeights6.w = (charWeightsInt4.sd & MOD_NUM) - 8; - charWeights7.x = (charWeightsInt4.se >> 4) - 8; - charWeights7.y = (charWeightsInt4.se & MOD_NUM) - 8; - charWeights7.z = (charWeightsInt4.sf >> 4) - 8; - charWeights7.w = (charWeightsInt4.sf & MOD_NUM) - 8; - FLOAT4 weights0 = CONVERT_FLOAT4(charWeights0) * dequantScaleC03 + dequantOffsetC03; - FLOAT4 weights1 = CONVERT_FLOAT4(charWeights1) * dequantScaleC03 + dequantOffsetC03; - FLOAT4 weights2 = CONVERT_FLOAT4(charWeights2) * dequantScaleC03 + dequantOffsetC03; - FLOAT4 weights3 = CONVERT_FLOAT4(charWeights3) * dequantScaleC03 + dequantOffsetC03; - FLOAT4 weights4 = CONVERT_FLOAT4(charWeights4) * dequantScaleC47 + dequantOffsetC47; - FLOAT4 weights5 = CONVERT_FLOAT4(charWeights5) * dequantScaleC47 + dequantOffsetC47; - FLOAT4 weights6 = CONVERT_FLOAT4(charWeights6) * dequantScaleC47 + dequantOffsetC47; - FLOAT4 weights7 = CONVERT_FLOAT4(charWeights7) * dequantScaleC47 + dequantOffsetC47; -#else FLOAT4 weights0 = vload4(offset, (__global FLOAT *)kernel_ptr); FLOAT4 weights1 = vload4(offset + 1, (__global FLOAT *)kernel_ptr); FLOAT4 weights2 = vload4(offset + 2, (__global FLOAT *)kernel_ptr); @@ -347,48 +180,7 @@ void conv_2d_1x1_c8h1w4(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, FLOAT4 weights5 = vload4(offset + 5, (__global FLOAT *)kernel_ptr); FLOAT4 weights6 = vload4(offset + 6, (__global FLOAT *)kernel_ptr); FLOAT4 weights7 = vload4(offset + 7, (__global FLOAT *)kernel_ptr); -#endif -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - out0 = mad((FLOAT4)in0.x, weights0, out0); - out0 = mad((FLOAT4)in0.y, weights1, out0); - out0 = mad((FLOAT4)in0.z, weights2, out0); - out0 = mad((FLOAT4)in0.w, weights3, out0); - - out1 = mad((FLOAT4)in1.x, weights0, out1); - out1 = mad((FLOAT4)in1.y, weights1, out1); - out1 = mad((FLOAT4)in1.z, weights2, out1); - out1 = mad((FLOAT4)in1.w, weights3, out1); - - out2 = mad((FLOAT4)in2.x, weights0, out2); - out2 = mad((FLOAT4)in2.y, weights1, out2); - out2 = mad((FLOAT4)in2.z, weights2, out2); - out2 = mad((FLOAT4)in2.w, weights3, out2); - - out3 = mad((FLOAT4)in3.x, weights0, out3); - out3 = mad((FLOAT4)in3.y, weights1, out3); - out3 = mad((FLOAT4)in3.z, weights2, out3); - out3 = mad((FLOAT4)in3.w, weights3, out3); - - out4 = mad((FLOAT4)in0.x, weights4, out4); - out4 = mad((FLOAT4)in0.y, weights5, out4); - out4 = mad((FLOAT4)in0.z, weights6, out4); - out4 = mad((FLOAT4)in0.w, weights7, out4); - - out5 = mad((FLOAT4)in1.x, weights4, out5); - out5 = mad((FLOAT4)in1.y, weights5, out5); - out5 = mad((FLOAT4)in1.z, weights6, out5); - out5 = mad((FLOAT4)in1.w, weights7, out5); - out6 = mad((FLOAT4)in2.x, weights4, out6); - out6 = mad((FLOAT4)in2.y, weights5, out6); - out6 = mad((FLOAT4)in2.z, weights6, out6); - out6 = mad((FLOAT4)in2.w, weights7, out6); - - out7 = mad((FLOAT4)in3.x, weights4, out7); - out7 = mad((FLOAT4)in3.y, weights5, out7); - out7 = mad((FLOAT4)in3.z, weights6, out7); - out7 = mad((FLOAT4)in3.w, weights7, out7); -#else out0.x += dot(weights0, in0); out0.y += dot(weights1, in0); out0.z += dot(weights2, in0); @@ -428,8 +220,6 @@ void conv_2d_1x1_c8h1w4(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, out7.y += dot(weights5, in3); out7.z += dot(weights6, in3); out7.w += dot(weights7, in3); -#endif - } #ifdef RELU @@ -503,17 +293,7 @@ void conv_2d_1x1_c8h1w4(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, __kernel void conv_2d_1x1_c8h1w2(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, __global const FLOAT *input, -#if (defined USE_LOW_BIT_WEIGHT_INT8) - __global const char *kernel_ptr, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - __global const uchar *kernel_ptr, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#else __global const FLOAT *kernel_ptr, -#endif __global const FLOAT *bias_ptr, __global FLOAT *output, __private const int in_c_block, @@ -530,20 +310,6 @@ void conv_2d_1x1_c8h1w2(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, const int out_w_idx = out_c_w_idx % out_w_blocks; const int out_b_idx = out_b_h_idx / out_h;//equal to in_b_idx const int out_h_idx = out_b_h_idx % out_h;//equal to in_h_idx - -#if (defined USE_LOW_BIT_WEIGHT_INT4) - int weight_offset = out_c_idx * 16; - int weight_oc_offset = out_c_block * 8; -#else - int weight_offset = out_c_idx * 32; - int weight_oc_offset = out_c_block * 16; -#endif -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - const FLOAT4 dequantScaleC03 = vload4(out_c_idx << 1, (__global FLOAT *)dequantScale); - const FLOAT4 dequantOffsetC03 = vload4(out_c_idx << 1, (__global FLOAT *)dequantOffset); - const FLOAT4 dequantScaleC47 = vload4((out_c_idx << 1) + 1, (__global FLOAT *)dequantScale); - const FLOAT4 dequantOffsetC47 = vload4((out_c_idx << 1) + 1, (__global FLOAT *)dequantOffset); -#endif const int out_w2_idx = mul24(out_w_idx, 2); FLOAT4 out0 = vload4(out_c_idx<<1, (__global FLOAT *)bias_ptr); @@ -564,68 +330,6 @@ void conv_2d_1x1_c8h1w2(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, FLOAT4 in0 = vload4(0, input+inp_offset); FLOAT4 in1 = vload4(1, input+inp_offset);; -#if (defined USE_LOW_BIT_WEIGHT_INT8) - FLOAT16 weightsInt80 = CONVERT_FLOAT16(vload16(0, kernel_ptr + weight_offset + in_channel_block_idx * weight_oc_offset)); - FLOAT16 weightsInt81 = CONVERT_FLOAT16(vload16(0, kernel_ptr + 16 + weight_offset + in_channel_block_idx * weight_oc_offset)); - FLOAT4 weights0 = CONVERT_FLOAT4(weightsInt80.s0123) * dequantScaleC03 + dequantOffsetC03; - FLOAT4 weights1 = CONVERT_FLOAT4(weightsInt80.s4567) * dequantScaleC03 + dequantOffsetC03; - FLOAT4 weights2 = CONVERT_FLOAT4(weightsInt80.s89ab) * dequantScaleC03 + dequantOffsetC03; - FLOAT4 weights3 = CONVERT_FLOAT4(weightsInt80.scdef) * dequantScaleC03 + dequantOffsetC03; - FLOAT4 weights4 = CONVERT_FLOAT4(weightsInt81.s0123) * dequantScaleC47 + dequantOffsetC47; - FLOAT4 weights5 = CONVERT_FLOAT4(weightsInt81.s4567) * dequantScaleC47 + dequantOffsetC47; - FLOAT4 weights6 = CONVERT_FLOAT4(weightsInt81.s89ab) * dequantScaleC47 + dequantOffsetC47; - FLOAT4 weights7 = CONVERT_FLOAT4(weightsInt81.scdef) * dequantScaleC47 + dequantOffsetC47; -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - uchar16 charWeightsInt4 = vload16(0, kernel_ptr + weight_offset + in_channel_block_idx * weight_oc_offset); - char4 charWeights0 = (char4)(0, 0, 0, 0); - char4 charWeights1 = (char4)(0, 0, 0, 0); - char4 charWeights2 = (char4)(0, 0, 0, 0); - char4 charWeights3 = (char4)(0, 0, 0, 0); - char4 charWeights4 = (char4)(0, 0, 0, 0); - char4 charWeights5 = (char4)(0, 0, 0, 0); - char4 charWeights6 = (char4)(0, 0, 0, 0); - char4 charWeights7 = (char4)(0, 0, 0, 0); - charWeights0.x = (charWeightsInt4.s0 >> 4) - 8; - charWeights0.y = (charWeightsInt4.s0 & MOD_NUM) - 8; - charWeights0.z = (charWeightsInt4.s1 >> 4) - 8; - charWeights0.w = (charWeightsInt4.s1 & MOD_NUM) - 8; - charWeights1.x = (charWeightsInt4.s2 >> 4) - 8; - charWeights1.y = (charWeightsInt4.s2 & MOD_NUM) - 8; - charWeights1.z = (charWeightsInt4.s3 >> 4) - 8; - charWeights1.w = (charWeightsInt4.s3 & MOD_NUM) - 8; - charWeights2.x = (charWeightsInt4.s4 >> 4) - 8; - charWeights2.y = (charWeightsInt4.s4 & MOD_NUM) - 8; - charWeights2.z = (charWeightsInt4.s5 >> 4) - 8; - charWeights2.w = (charWeightsInt4.s5 & MOD_NUM) - 8; - charWeights3.x = (charWeightsInt4.s6 >> 4) - 8; - charWeights3.y = (charWeightsInt4.s6 & MOD_NUM) - 8; - charWeights3.z = (charWeightsInt4.s7 >> 4) - 8; - charWeights3.w = (charWeightsInt4.s7 & MOD_NUM) - 8; - charWeights4.x = (charWeightsInt4.s8 >> 4) - 8; - charWeights4.y = (charWeightsInt4.s8 & MOD_NUM) - 8; - charWeights4.z = (charWeightsInt4.s9 >> 4) - 8; - charWeights4.w = (charWeightsInt4.s9 & MOD_NUM) - 8; - charWeights5.x = (charWeightsInt4.sa >> 4) - 8; - charWeights5.y = (charWeightsInt4.sa & MOD_NUM) - 8; - charWeights5.z = (charWeightsInt4.sb >> 4) - 8; - charWeights5.w = (charWeightsInt4.sb & MOD_NUM) - 8; - charWeights6.x = (charWeightsInt4.sc >> 4) - 8; - charWeights6.y = (charWeightsInt4.sc & MOD_NUM) - 8; - charWeights6.z = (charWeightsInt4.sd >> 4) - 8; - charWeights6.w = (charWeightsInt4.sd & MOD_NUM) - 8; - charWeights7.x = (charWeightsInt4.se >> 4) - 8; - charWeights7.y = (charWeightsInt4.se & MOD_NUM) - 8; - charWeights7.z = (charWeightsInt4.sf >> 4) - 8; - charWeights7.w = (charWeightsInt4.sf & MOD_NUM) - 8; - FLOAT4 weights0 = CONVERT_FLOAT4(charWeights0) * dequantScaleC03 + dequantOffsetC03; - FLOAT4 weights1 = CONVERT_FLOAT4(charWeights1) * dequantScaleC03 + dequantOffsetC03; - FLOAT4 weights2 = CONVERT_FLOAT4(charWeights2) * dequantScaleC03 + dequantOffsetC03; - FLOAT4 weights3 = CONVERT_FLOAT4(charWeights3) * dequantScaleC03 + dequantOffsetC03; - FLOAT4 weights4 = CONVERT_FLOAT4(charWeights4) * dequantScaleC47 + dequantOffsetC47; - FLOAT4 weights5 = CONVERT_FLOAT4(charWeights5) * dequantScaleC47 + dequantOffsetC47; - FLOAT4 weights6 = CONVERT_FLOAT4(charWeights6) * dequantScaleC47 + dequantOffsetC47; - FLOAT4 weights7 = CONVERT_FLOAT4(charWeights7) * dequantScaleC47 + dequantOffsetC47; -#else FLOAT4 weights0 = vload4(offset, (__global FLOAT *)kernel_ptr); FLOAT4 weights1 = vload4(offset + 1, (__global FLOAT *)kernel_ptr); FLOAT4 weights2 = vload4(offset + 2, (__global FLOAT *)kernel_ptr); @@ -634,28 +338,7 @@ void conv_2d_1x1_c8h1w2(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, FLOAT4 weights5 = vload4(offset + 5, (__global FLOAT *)kernel_ptr); FLOAT4 weights6 = vload4(offset + 6, (__global FLOAT *)kernel_ptr); FLOAT4 weights7 = vload4(offset + 7, (__global FLOAT *)kernel_ptr); -#endif -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - out0 = mad((FLOAT4)in0.x, weights0, out0); - out0 = mad((FLOAT4)in0.y, weights1, out0); - out0 = mad((FLOAT4)in0.z, weights2, out0); - out0 = mad((FLOAT4)in0.w, weights3, out0); - - out1 = mad((FLOAT4)in1.x, weights0, out1); - out1 = mad((FLOAT4)in1.y, weights1, out1); - out1 = mad((FLOAT4)in1.z, weights2, out1); - out1 = mad((FLOAT4)in1.w, weights3, out1); - - out4 = mad((FLOAT4)in0.x, weights4, out4); - out4 = mad((FLOAT4)in0.y, weights5, out4); - out4 = mad((FLOAT4)in0.z, weights6, out4); - out4 = mad((FLOAT4)in0.w, weights7, out4); - out5 = mad((FLOAT4)in1.x, weights4, out5); - out5 = mad((FLOAT4)in1.y, weights5, out5); - out5 = mad((FLOAT4)in1.z, weights6, out5); - out5 = mad((FLOAT4)in1.w, weights7, out5); -#else out0.x += dot(weights0, in0); out0.y += dot(weights1, in0); out0.z += dot(weights2, in0); @@ -675,7 +358,6 @@ void conv_2d_1x1_c8h1w2(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, out5.y += dot(weights5, in1); out5.z += dot(weights6, in1); out5.w += dot(weights7, in1); -#endif } #ifdef RELU @@ -731,17 +413,7 @@ void conv_2d_1x1_c8h1w2(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, __kernel void conv_2d_1x1_c4h1w1(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, __global const FLOAT *input, -#if (defined USE_LOW_BIT_WEIGHT_INT8) - __global const char *kernel_ptr, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - __global const uchar *kernel_ptr, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#else __global const FLOAT *kernel_ptr, -#endif __global const FLOAT *bias_ptr, __global FLOAT *output, __private const int in_c_block, @@ -759,18 +431,6 @@ void conv_2d_1x1_c4h1w1(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, const int out_b_idx = out_b_h_idx / out_h;//equal to in_b_idx const int out_h_idx = out_b_h_idx % out_h;//equal to in_h_idx -#if (defined USE_LOW_BIT_WEIGHT_INT4) - int weight_offset = out_c_idx * 8; - int weight_oc_offset = out_c_block * 8; -#else - int weight_offset = out_c_idx * 16; - int weight_oc_offset = out_c_block * 16; -#endif -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - const FLOAT4 dequantScaleC4 = vload4(out_c_idx, dequantScale); - const FLOAT4 dequantOffsetC4 = vload4(out_c_idx, dequantOffset); -#endif - FLOAT4 out0 = vload4(out_c_idx, (__global FLOAT *)bias_ptr); const int intput_width_idx0 = out_w_idx; @@ -783,55 +443,15 @@ void conv_2d_1x1_c4h1w1(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, FLOAT4 in0 = vload4(0, input+inp_offset); -#if (defined USE_LOW_BIT_WEIGHT_INT8) - FLOAT16 weights = CONVERT_FLOAT16(vload16(0, kernel_ptr + weight_offset + in_channel_block_idx * weight_oc_offset)); - FLOAT4 weights0 = CONVERT_FLOAT4(weights.s0123) * dequantScaleC4 + dequantOffsetC4; - FLOAT4 weights1 = CONVERT_FLOAT4(weights.s4567) * dequantScaleC4 + dequantOffsetC4; - FLOAT4 weights2 = CONVERT_FLOAT4(weights.s89ab) * dequantScaleC4 + dequantOffsetC4; - FLOAT4 weights3 = CONVERT_FLOAT4(weights.scdef) * dequantScaleC4 + dequantOffsetC4; -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - uchar8 charWeightsInt4 = vload8(0, kernel_ptr + weight_offset + in_channel_block_idx * weight_oc_offset); - char4 charWeights0 = (char4)(0, 0, 0, 0); - char4 charWeights1 = (char4)(0, 0, 0, 0); - char4 charWeights2 = (char4)(0, 0, 0, 0); - char4 charWeights3 = (char4)(0, 0, 0, 0); - charWeights0.x = (charWeightsInt4.s0 >> 4) - 8; - charWeights0.y = (charWeightsInt4.s0 & MOD_NUM) - 8; - charWeights0.z = (charWeightsInt4.s1 >> 4) - 8; - charWeights0.w = (charWeightsInt4.s1 & MOD_NUM) - 8; - charWeights1.x = (charWeightsInt4.s2 >> 4) - 8; - charWeights1.y = (charWeightsInt4.s2 & MOD_NUM) - 8; - charWeights1.z = (charWeightsInt4.s3 >> 4) - 8; - charWeights1.w = (charWeightsInt4.s3 & MOD_NUM)- 8; - charWeights2.x = (charWeightsInt4.s4 >> 4) - 8; - charWeights2.y = (charWeightsInt4.s4 & MOD_NUM) - 8; - charWeights2.z = (charWeightsInt4.s5 >> 4) - 8; - charWeights2.w = (charWeightsInt4.s5 & MOD_NUM) - 8; - charWeights3.x = (charWeightsInt4.s6 >> 4) - 8; - charWeights3.y = (charWeightsInt4.s6 & MOD_NUM) - 8; - charWeights3.z = (charWeightsInt4.s7 >> 4) - 8; - charWeights3.w = (charWeightsInt4.s7 & MOD_NUM) - 8; - FLOAT4 weights0 = CONVERT_FLOAT4(charWeights0) * dequantScaleC4 + dequantOffsetC4; - FLOAT4 weights1 = CONVERT_FLOAT4(charWeights1) * dequantScaleC4 + dequantOffsetC4; - FLOAT4 weights2 = CONVERT_FLOAT4(charWeights2) * dequantScaleC4 + dequantOffsetC4; - FLOAT4 weights3 = CONVERT_FLOAT4(charWeights3) * dequantScaleC4 + dequantOffsetC4; -#else FLOAT4 weights0 = vload4(offset, (__global FLOAT *)kernel_ptr); FLOAT4 weights1 = vload4(offset + 1, (__global FLOAT *)kernel_ptr); FLOAT4 weights2 = vload4(offset + 2, (__global FLOAT *)kernel_ptr); FLOAT4 weights3 = vload4(offset + 3, (__global FLOAT *)kernel_ptr); -#endif -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - out0 = mad((FLOAT4)in0.x, weights0, out0); - out0 = mad((FLOAT4)in0.y, weights1, out0); - out0 = mad((FLOAT4)in0.z, weights2, out0); - out0 = mad((FLOAT4)in0.w, weights3, out0); -#else + out0.x += dot(weights0, in0); out0.y += dot(weights1, in0); out0.z += dot(weights2, in0); out0.w += dot(weights3, in0); -#endif } #ifdef RELU @@ -851,17 +471,7 @@ void conv_2d_1x1_c4h1w1(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, __kernel void conv_2d_1x1_c4h1w2(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, __global const FLOAT *input, -#if (defined USE_LOW_BIT_WEIGHT_INT8) - __global const char *kernel_ptr, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - __global const uchar *kernel_ptr, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#else __global const FLOAT *kernel_ptr, -#endif __global const FLOAT *bias_ptr, __global FLOAT *output, __private const int in_c_block, @@ -878,17 +488,6 @@ void conv_2d_1x1_c4h1w2(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, const int out_w_idx = out_c_w_idx % out_w_blocks; const int out_b_idx = out_b_h_idx / out_h;//equal to in_b_idx const int out_h_idx = out_b_h_idx % out_h;//equal to in_h_idx -#if (defined USE_LOW_BIT_WEIGHT_INT4) - int weight_offset = out_c_idx * 8; - int weight_oc_offset = out_c_block * 8; -#else - int weight_offset = out_c_idx * 16; - int weight_oc_offset = out_c_block * 16; -#endif -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - const FLOAT4 dequantScaleC4 = vload4(out_c_idx, dequantScale); - const FLOAT4 dequantOffsetC4 = vload4(out_c_idx, dequantOffset); -#endif const int out_w2_idx = mul24(out_w_idx, 2); @@ -905,57 +504,13 @@ void conv_2d_1x1_c4h1w2(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, (((out_b_idx*in_c_block + in_channel_block_idx)*out_h + out_h_idx)* out_w + intput_width_idx0)*4; FLOAT4 in0 = vload4(0, input+inp_offset); - FLOAT4 in1 = vload4(1, input+inp_offset);; - -#if (defined USE_LOW_BIT_WEIGHT_INT8) - FLOAT16 weights = CONVERT_FLOAT16(vload16(0, kernel_ptr + weight_offset + in_channel_block_idx * weight_oc_offset)); - FLOAT4 weights0 = CONVERT_FLOAT4(weights.s0123) * dequantScaleC4 + dequantOffsetC4; - FLOAT4 weights1 = CONVERT_FLOAT4(weights.s4567) * dequantScaleC4 + dequantOffsetC4; - FLOAT4 weights2 = CONVERT_FLOAT4(weights.s89ab) * dequantScaleC4 + dequantOffsetC4; - FLOAT4 weights3 = CONVERT_FLOAT4(weights.scdef) * dequantScaleC4 + dequantOffsetC4; -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - uchar8 charWeightsInt4 = vload8(0, kernel_ptr + weight_offset + in_channel_block_idx * weight_oc_offset); - char4 charWeights0 = (char4)(0, 0, 0, 0); - char4 charWeights1 = (char4)(0, 0, 0, 0); - char4 charWeights2 = (char4)(0, 0, 0, 0); - char4 charWeights3 = (char4)(0, 0, 0, 0); - charWeights0.x = (charWeightsInt4.s0 >> 4) - 8; - charWeights0.y = (charWeightsInt4.s0 & MOD_NUM) - 8; - charWeights0.z = (charWeightsInt4.s1 >> 4) - 8; - charWeights0.w = (charWeightsInt4.s1 & MOD_NUM) - 8; - charWeights1.x = (charWeightsInt4.s2 >> 4) - 8; - charWeights1.y = (charWeightsInt4.s2 & MOD_NUM) - 8; - charWeights1.z = (charWeightsInt4.s3 >> 4) - 8; - charWeights1.w = (charWeightsInt4.s3 & MOD_NUM)- 8; - charWeights2.x = (charWeightsInt4.s4 >> 4) - 8; - charWeights2.y = (charWeightsInt4.s4 & MOD_NUM) - 8; - charWeights2.z = (charWeightsInt4.s5 >> 4) - 8; - charWeights2.w = (charWeightsInt4.s5 & MOD_NUM) - 8; - charWeights3.x = (charWeightsInt4.s6 >> 4) - 8; - charWeights3.y = (charWeightsInt4.s6 & MOD_NUM) - 8; - charWeights3.z = (charWeightsInt4.s7 >> 4) - 8; - charWeights3.w = (charWeightsInt4.s7 & MOD_NUM) - 8; - FLOAT4 weights0 = CONVERT_FLOAT4(charWeights0) * dequantScaleC4 + dequantOffsetC4; - FLOAT4 weights1 = CONVERT_FLOAT4(charWeights1) * dequantScaleC4 + dequantOffsetC4; - FLOAT4 weights2 = CONVERT_FLOAT4(charWeights2) * dequantScaleC4 + dequantOffsetC4; - FLOAT4 weights3 = CONVERT_FLOAT4(charWeights3) * dequantScaleC4 + dequantOffsetC4; -#else + FLOAT4 in1 = vload4(1, input+inp_offset); + FLOAT4 weights0 = vload4(offset, (__global FLOAT *)kernel_ptr); FLOAT4 weights1 = vload4(offset + 1, (__global FLOAT *)kernel_ptr); FLOAT4 weights2 = vload4(offset + 2, (__global FLOAT *)kernel_ptr); FLOAT4 weights3 = vload4(offset + 3, (__global FLOAT *)kernel_ptr); -#endif -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - out0 = mad((FLOAT4)in0.x, weights0, out0); - out0 = mad((FLOAT4)in0.y, weights1, out0); - out0 = mad((FLOAT4)in0.z, weights2, out0); - out0 = mad((FLOAT4)in0.w, weights3, out0); - out1 = mad((FLOAT4)in1.x, weights0, out1); - out1 = mad((FLOAT4)in1.y, weights1, out1); - out1 = mad((FLOAT4)in1.z, weights2, out1); - out1 = mad((FLOAT4)in1.w, weights3, out1); -#else out0.x += dot(weights0, in0); out0.y += dot(weights1, in0); out0.z += dot(weights2, in0); @@ -965,7 +520,6 @@ void conv_2d_1x1_c4h1w2(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, out1.y += dot(weights1, in1); out1.z += dot(weights2, in1); out1.w += dot(weights3, in1); -#endif } #ifdef RELU @@ -996,17 +550,7 @@ void conv_2d_1x1_c4h1w2(GLOBAL_SIZE_2_DIMS __private const int out_w_blocks, __kernel void conv_2d_c4h1w1(GLOBAL_SIZE_2_DIMS __global const FLOAT *input, -#if (defined USE_LOW_BIT_WEIGHT_INT8) - __global const char *weight, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - __global const uchar *weight, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#else __global const FLOAT *weight, -#endif __global const FLOAT *bias, __global FLOAT *output, __private const int2 in_hw, @@ -1029,10 +573,6 @@ void conv_2d_c4h1w1(GLOBAL_SIZE_2_DIMS const int out_w_idx = out_c_w_idx % out_hw.y; const int out_b_idx = out_b_h_idx / out_hw.x;//equal to in_b_idx const int out_h_idx = out_b_h_idx % out_hw.x; -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - const FLOAT4 dequantScaleC4 = vload4(out_c_idx, dequantScale); - const FLOAT4 dequantOffsetC4 = vload4(out_c_idx, dequantOffset); -#endif FLOAT4 out0 = vload4(out_c_idx, bias); @@ -1060,50 +600,10 @@ void conv_2d_c4h1w1(GLOBAL_SIZE_2_DIMS const int filter_w_inc = (ix-in_w_idx_start)/dilate_hw.y; -#if (defined USE_LOW_BIT_WEIGHT_INT8) - char4 charWeight0 = vload4(filter_w_inc, weight+weight_offset); - char4 charWeight1 = vload4(filter_w_inc, weight+weight_offset+weight_oc_offset); - char4 charWeight2 = vload4(filter_w_inc, weight+weight_offset+weight_oc_offset*2); - char4 charWeight3 = vload4(filter_w_inc, weight+weight_offset+weight_oc_offset*3); - FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC4, dequantOffsetC4); -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - uchar2 charWeightInt40 = vload2(filter_w_inc, weight+weight_offset/2); - uchar2 charWeightInt41 = vload2(filter_w_inc, weight+weight_offset/2+weight_oc_offset/2); - uchar2 charWeightInt42 = vload2(filter_w_inc, weight+weight_offset/2+weight_oc_offset*2/2); - uchar2 charWeightInt43 = vload2(filter_w_inc, weight+weight_offset/2+weight_oc_offset*3/2); - char4 charWeight0 = (char4)(0, 0, 0, 0); - char4 charWeight1 = (char4)(0, 0, 0, 0); - char4 charWeight2 = (char4)(0, 0, 0, 0); - char4 charWeight3 = (char4)(0, 0, 0, 0); - charWeight0.x = (charWeightInt40.s0 >> 4) - 8; - charWeight0.y = (charWeightInt40.s0 & MOD_NUM) - 8; - charWeight0.z = (charWeightInt40.s1 >> 4) - 8; - charWeight0.w = (charWeightInt40.s1 & MOD_NUM) - 8; - charWeight1.x = (charWeightInt41.s0 >> 4) - 8; - charWeight1.y = (charWeightInt41.s0 & MOD_NUM) - 8; - charWeight1.z = (charWeightInt41.s1 >> 4) - 8; - charWeight1.w = (charWeightInt41.s1 & MOD_NUM) - 8; - charWeight2.x = (charWeightInt42.s0 >> 4) - 8; - charWeight2.y = (charWeightInt42.s0 & MOD_NUM) - 8; - charWeight2.z = (charWeightInt42.s1 >> 4) - 8; - charWeight2.w = (charWeightInt42.s1 & MOD_NUM) - 8; - charWeight3.x = (charWeightInt43.s0 >> 4) - 8; - charWeight3.y = (charWeightInt43.s0 & MOD_NUM) - 8; - charWeight3.z = (charWeightInt43.s1 >> 4) - 8; - charWeight3.w = (charWeightInt43.s1 & MOD_NUM) - 8; - FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC4, dequantOffsetC4); -#else FLOAT4 weight0 = vload4(filter_w_inc, weight+weight_offset); FLOAT4 weight1 = vload4(filter_w_inc, weight+weight_offset+weight_oc_offset); FLOAT4 weight2 = vload4(filter_w_inc, weight+weight_offset+weight_oc_offset*2); FLOAT4 weight3 = vload4(filter_w_inc, weight+weight_offset+weight_oc_offset*3); -#endif out0 = mad(in0.x, weight0, out0); out0 = mad(in0.y, weight1, out0); @@ -1130,17 +630,7 @@ void conv_2d_c4h1w1(GLOBAL_SIZE_2_DIMS __kernel void conv_2d_c4h1w2(GLOBAL_SIZE_2_DIMS __global const FLOAT *input, -#if (defined USE_LOW_BIT_WEIGHT_INT8) - __global const char *weight, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - __global const uchar *weight, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#else __global const FLOAT *weight, -#endif __global const FLOAT *bias, __global FLOAT *output, __private const int2 in_hw, @@ -1163,10 +653,6 @@ void conv_2d_c4h1w2(GLOBAL_SIZE_2_DIMS const int out_w_idx = (out_c_w_idx % out_w_blocks) << 1; const int out_b_idx = out_b_h_idx / out_hw.x;//equal to in_b_idx const int out_h_idx = out_b_h_idx % out_hw.x; -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - const FLOAT4 dequantScaleC4 = vload4(out_c_idx, dequantScale); - const FLOAT4 dequantOffsetC4 = vload4(out_c_idx, dequantOffset); -#endif FLOAT4 out0 = vload4(out_c_idx, bias); FLOAT4 out1 = out0; @@ -1196,50 +682,10 @@ void conv_2d_c4h1w2(GLOBAL_SIZE_2_DIMS FLOAT4 in0 = (in_w0_idx < 0 || in_w0_idx >= in_hw.y) ? (FLOAT4)0 : vload4(in_w0_idx, input+inp_offset_base); FLOAT4 in1 = (in_w1_idx < 0 || in_w1_idx >= in_hw.y) ? (FLOAT4)0 : vload4(in_w1_idx, input+inp_offset_base); -#if (defined USE_LOW_BIT_WEIGHT_INT8) - char4 charWeight0 = vload4(0, weight+weight_offset); - char4 charWeight1 = vload4(0, weight+weight_offset+weight_oc_offset); - char4 charWeight2 = vload4(0, weight+weight_offset+weight_oc_offset*2); - char4 charWeight3 = vload4(0, weight+weight_offset+weight_oc_offset*3); - FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC4, dequantOffsetC4); -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - uchar2 charWeightInt40 = vload2(0, weight+weight_offset/2); - uchar2 charWeightInt41 = vload2(0, weight+weight_offset/2+weight_oc_offset/2); - uchar2 charWeightInt42 = vload2(0, weight+weight_offset/2+weight_oc_offset*2/2); - uchar2 charWeightInt43 = vload2(0, weight+weight_offset/2+weight_oc_offset*3/2); - char4 charWeight0 = (char4)(0, 0, 0, 0); - char4 charWeight1 = (char4)(0, 0, 0, 0); - char4 charWeight2 = (char4)(0, 0, 0, 0); - char4 charWeight3 = (char4)(0, 0, 0, 0); - charWeight0.x = (charWeightInt40.s0 >> 4) - 8; - charWeight0.y = (charWeightInt40.s0 & MOD_NUM) - 8; - charWeight0.z = (charWeightInt40.s1 >> 4) - 8; - charWeight0.w = (charWeightInt40.s1 & MOD_NUM) - 8; - charWeight1.x = (charWeightInt41.s0 >> 4) - 8; - charWeight1.y = (charWeightInt41.s0 & MOD_NUM) - 8; - charWeight1.z = (charWeightInt41.s1 >> 4) - 8; - charWeight1.w = (charWeightInt41.s1 & MOD_NUM) - 8; - charWeight2.x = (charWeightInt42.s0 >> 4) - 8; - charWeight2.y = (charWeightInt42.s0 & MOD_NUM) - 8; - charWeight2.z = (charWeightInt42.s1 >> 4) - 8; - charWeight2.w = (charWeightInt42.s1 & MOD_NUM) - 8; - charWeight3.x = (charWeightInt43.s0 >> 4) - 8; - charWeight3.y = (charWeightInt43.s0 & MOD_NUM) - 8; - charWeight3.z = (charWeightInt43.s1 >> 4) - 8; - charWeight3.w = (charWeightInt43.s1 & MOD_NUM) - 8; - FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC4, dequantOffsetC4); -#else FLOAT4 weight0 = vload4(0, weight+weight_offset); FLOAT4 weight1 = vload4(0, weight+weight_offset+weight_oc_offset); FLOAT4 weight2 = vload4(0, weight+weight_offset+weight_oc_offset*2); FLOAT4 weight3 = vload4(0, weight+weight_offset+weight_oc_offset*3); -#endif out0 = mad(in0.x, weight0, out0); out0 = mad(in0.y, weight1, out0); @@ -1278,17 +724,7 @@ void conv_2d_c4h1w2(GLOBAL_SIZE_2_DIMS __kernel void conv_2d_c4h1w4(GLOBAL_SIZE_2_DIMS __global const FLOAT *input, -#if (defined USE_LOW_BIT_WEIGHT_INT8) - __global const char *weight, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - __global const uchar *weight, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#else __global const FLOAT *weight, -#endif __global const FLOAT *bias, __global FLOAT *output, __private const int2 in_hw, @@ -1311,10 +747,6 @@ void conv_2d_c4h1w4(GLOBAL_SIZE_2_DIMS const int out_w_idx = (out_c_w_idx % out_w_blocks) << 2; const int out_b_idx = out_b_h_idx / out_hw.x;//equal to in_b_idx const int out_h_idx = out_b_h_idx % out_hw.x; -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - const FLOAT4 dequantScaleC4 = vload4(out_c_idx, dequantScale); - const FLOAT4 dequantOffsetC4 = vload4(out_c_idx, dequantOffset); -#endif FLOAT4 out0 = vload4(out_c_idx, bias); FLOAT4 out1 = out0; @@ -1352,50 +784,10 @@ void conv_2d_c4h1w4(GLOBAL_SIZE_2_DIMS FLOAT4 in2 = (in_w2_idx < 0 || in_w2_idx >= in_hw.y) ? (FLOAT4)0 : vload4(in_w2_idx, input+inp_offset_base); FLOAT4 in3 = (in_w3_idx < 0 || in_w3_idx >= in_hw.y) ? (FLOAT4)0 : vload4(in_w3_idx, input+inp_offset_base); -#if (defined USE_LOW_BIT_WEIGHT_INT8) - char4 charWeight0 = vload4(0, weight+weight_offset); - char4 charWeight1 = vload4(0, weight+weight_offset+weight_oc_offset); - char4 charWeight2 = vload4(0, weight+weight_offset+weight_oc_offset*2); - char4 charWeight3 = vload4(0, weight+weight_offset+weight_oc_offset*3); - FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC4, dequantOffsetC4); -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - uchar2 charWeightInt40 = vload2(0, weight+weight_offset/2); - uchar2 charWeightInt41 = vload2(0, weight+weight_offset/2+weight_oc_offset/2); - uchar2 charWeightInt42 = vload2(0, weight+weight_offset/2+weight_oc_offset*2/2); - uchar2 charWeightInt43 = vload2(0, weight+weight_offset/2+weight_oc_offset*3/2); - char4 charWeight0 = (char4)(0, 0, 0, 0); - char4 charWeight1 = (char4)(0, 0, 0, 0); - char4 charWeight2 = (char4)(0, 0, 0, 0); - char4 charWeight3 = (char4)(0, 0, 0, 0); - charWeight0.x = (charWeightInt40.s0 >> 4) - 8; - charWeight0.y = (charWeightInt40.s0 & MOD_NUM) - 8; - charWeight0.z = (charWeightInt40.s1 >> 4) - 8; - charWeight0.w = (charWeightInt40.s1 & MOD_NUM) - 8; - charWeight1.x = (charWeightInt41.s0 >> 4) - 8; - charWeight1.y = (charWeightInt41.s0 & MOD_NUM) - 8; - charWeight1.z = (charWeightInt41.s1 >> 4) - 8; - charWeight1.w = (charWeightInt41.s1 & MOD_NUM) - 8; - charWeight2.x = (charWeightInt42.s0 >> 4) - 8; - charWeight2.y = (charWeightInt42.s0 & MOD_NUM) - 8; - charWeight2.z = (charWeightInt42.s1 >> 4) - 8; - charWeight2.w = (charWeightInt42.s1 & MOD_NUM) - 8; - charWeight3.x = (charWeightInt43.s0 >> 4) - 8; - charWeight3.y = (charWeightInt43.s0 & MOD_NUM) - 8; - charWeight3.z = (charWeightInt43.s1 >> 4) - 8; - charWeight3.w = (charWeightInt43.s1 & MOD_NUM) - 8; - FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC4, dequantOffsetC4); -#else FLOAT4 weight0 = vload4(0, weight+weight_offset); FLOAT4 weight1 = vload4(0, weight+weight_offset+weight_oc_offset); FLOAT4 weight2 = vload4(0, weight+weight_offset+weight_oc_offset*2); FLOAT4 weight3 = vload4(0, weight+weight_offset+weight_oc_offset*3); -#endif out0 = mad(in0.x, weight0, out0); out0 = mad(in0.y, weight1, out0); @@ -1457,17 +849,7 @@ void conv_2d_c4h1w4(GLOBAL_SIZE_2_DIMS __kernel void conv_2d_c4h4w1(GLOBAL_SIZE_2_DIMS __global const FLOAT *input, -#if (defined USE_LOW_BIT_WEIGHT_INT8) - __global const char *weight, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - __global const uchar *weight, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#else __global const FLOAT *weight, -#endif __global const FLOAT *bias, __global FLOAT *output, __private const int2 in_hw, @@ -1490,10 +872,6 @@ void conv_2d_c4h4w1(GLOBAL_SIZE_2_DIMS const int out_w_idx = out_c_w_idx % out_w_blocks; const int out_b_idx = out_b_h_idx / out_h_blocks;//equal to in_b_idx const int out_h_idx = (out_b_h_idx % out_h_blocks) << 2; -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - const FLOAT4 dequantScaleC4 = vload4(out_c_idx, dequantScale); - const FLOAT4 dequantOffsetC4 = vload4(out_c_idx, dequantOffset); -#endif FLOAT4 out0 = vload4(out_c_idx, bias); FLOAT4 out1 = out0; @@ -1531,50 +909,11 @@ void conv_2d_c4h4w1(GLOBAL_SIZE_2_DIMS FLOAT4 in2 = (in_h2_idx < 0 || in_h2_idx >= in_hw_size) ? (FLOAT4)0 : vload4(in_h2_idx + fw, input+inp_offset_base); FLOAT4 in3 = (in_h3_idx < 0 || in_h3_idx >= in_hw_size) ? (FLOAT4)0 : vload4(in_h3_idx + fw, input+inp_offset_base); -#if (defined USE_LOW_BIT_WEIGHT_INT8) - char4 charWeight0 = vload4(0, weight+weight_offset); - char4 charWeight1 = vload4(0, weight+weight_offset+weight_oc_offset); - char4 charWeight2 = vload4(0, weight+weight_offset+weight_oc_offset*2); - char4 charWeight3 = vload4(0, weight+weight_offset+weight_oc_offset*3); - FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC4, dequantOffsetC4); -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - uchar2 charWeightInt40 = vload2(0, weight+weight_offset/2); - uchar2 charWeightInt41 = vload2(0, weight+weight_offset/2+weight_oc_offset/2); - uchar2 charWeightInt42 = vload2(0, weight+weight_offset/2+weight_oc_offset*2/2); - uchar2 charWeightInt43 = vload2(0, weight+weight_offset/2+weight_oc_offset*3/2); - char4 charWeight0 = (char4)(0, 0, 0, 0); - char4 charWeight1 = (char4)(0, 0, 0, 0); - char4 charWeight2 = (char4)(0, 0, 0, 0); - char4 charWeight3 = (char4)(0, 0, 0, 0); - charWeight0.x = (charWeightInt40.s0 >> 4) - 8; - charWeight0.y = (charWeightInt40.s0 & MOD_NUM) - 8; - charWeight0.z = (charWeightInt40.s1 >> 4) - 8; - charWeight0.w = (charWeightInt40.s1 & MOD_NUM) - 8; - charWeight1.x = (charWeightInt41.s0 >> 4) - 8; - charWeight1.y = (charWeightInt41.s0 & MOD_NUM) - 8; - charWeight1.z = (charWeightInt41.s1 >> 4) - 8; - charWeight1.w = (charWeightInt41.s1 & MOD_NUM) - 8; - charWeight2.x = (charWeightInt42.s0 >> 4) - 8; - charWeight2.y = (charWeightInt42.s0 & MOD_NUM) - 8; - charWeight2.z = (charWeightInt42.s1 >> 4) - 8; - charWeight2.w = (charWeightInt42.s1 & MOD_NUM) - 8; - charWeight3.x = (charWeightInt43.s0 >> 4) - 8; - charWeight3.y = (charWeightInt43.s0 & MOD_NUM) - 8; - charWeight3.z = (charWeightInt43.s1 >> 4) - 8; - charWeight3.w = (charWeightInt43.s1 & MOD_NUM) - 8; - FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC4, dequantOffsetC4); - FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC4, dequantOffsetC4); -#else FLOAT4 weight0 = vload4(0, weight+weight_offset); FLOAT4 weight1 = vload4(0, weight+weight_offset+weight_oc_offset); FLOAT4 weight2 = vload4(0, weight+weight_offset+weight_oc_offset*2); FLOAT4 weight3 = vload4(0, weight+weight_offset+weight_oc_offset*3); -#endif + out0 = mad(in0.x, weight0, out0); out0 = mad(in0.y, weight1, out0); out0 = mad(in0.z, weight2, out0); @@ -1642,17 +981,7 @@ void conv_2d_c4h4w1(GLOBAL_SIZE_2_DIMS __kernel void conv_2d_c8h4w1(GLOBAL_SIZE_2_DIMS __global const FLOAT *input, -#if (defined USE_LOW_BIT_WEIGHT_INT8) - __global const char *weight, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - __global const uchar *weight, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#else __global const FLOAT *weight, -#endif __global const FLOAT *bias, __global FLOAT *output, __private const int2 in_hw, @@ -1675,12 +1004,6 @@ void conv_2d_c8h4w1(GLOBAL_SIZE_2_DIMS const int out_w_idx = out_c_w_idx % out_w_blocks; const int out_b_idx = out_b_h_idx / out_h_blocks;//equal to in_b_idx const int out_h_idx = (out_b_h_idx % out_h_blocks) << 2; -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - const FLOAT4 dequantScaleC03 = vload4(out_c_idx, dequantScale); - const FLOAT4 dequantOffsetC03 = vload4(out_c_idx, dequantOffset); - const FLOAT4 dequantScaleC47 = vload4(out_c_idx + 1, dequantScale); - const FLOAT4 dequantOffsetC47 = vload4(out_c_idx + 1, dequantOffset); -#endif FLOAT4 out0 = vload4(out_c_idx, bias); FLOAT4 out1 = out0; @@ -1723,50 +1046,10 @@ void conv_2d_c8h4w1(GLOBAL_SIZE_2_DIMS FLOAT4 in2 = (in_h2_idx < 0 || in_h2_idx >= in_hw_size) ? (FLOAT4)0 : vload4(in_h2_idx + fw, input+inp_offset_base); FLOAT4 in3 = (in_h3_idx < 0 || in_h3_idx >= in_hw_size) ? (FLOAT4)0 : vload4(in_h3_idx + fw, input+inp_offset_base); -#if (defined USE_LOW_BIT_WEIGHT_INT8) - char4 charWeight0 = vload4(0, weight+weight_offset); - char4 charWeight1 = vload4(0, weight+weight_offset+weight_ic_offset); - char4 charWeight2 = vload4(0, weight+weight_offset+weight_ic_offset*2); - char4 charWeight3 = vload4(0, weight+weight_offset+weight_ic_offset*3); - FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC03, dequantOffsetC03); - FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC03, dequantOffsetC03); - FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC03, dequantOffsetC03); - FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC03, dequantOffsetC03); -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - uchar2 charWeightInt40 = vload2(0, weight+weight_offset/2); - uchar2 charWeightInt41 = vload2(0, weight+weight_offset/2+weight_ic_offset/2); - uchar2 charWeightInt42 = vload2(0, weight+weight_offset/2+weight_ic_offset*2/2); - uchar2 charWeightInt43 = vload2(0, weight+weight_offset/2+weight_ic_offset*3/2); - char4 charWeight0 = (char4)(0, 0, 0, 0); - char4 charWeight1 = (char4)(0, 0, 0, 0); - char4 charWeight2 = (char4)(0, 0, 0, 0); - char4 charWeight3 = (char4)(0, 0, 0, 0); - charWeight0.x = (charWeightInt40.s0 >> 4) - 8; - charWeight0.y = (charWeightInt40.s0 & MOD_NUM) - 8; - charWeight0.z = (charWeightInt40.s1 >> 4) - 8; - charWeight0.w = (charWeightInt40.s1 & MOD_NUM) - 8; - charWeight1.x = (charWeightInt41.s0 >> 4) - 8; - charWeight1.y = (charWeightInt41.s0 & MOD_NUM) - 8; - charWeight1.z = (charWeightInt41.s1 >> 4) - 8; - charWeight1.w = (charWeightInt41.s1 & MOD_NUM) - 8; - charWeight2.x = (charWeightInt42.s0 >> 4) - 8; - charWeight2.y = (charWeightInt42.s0 & MOD_NUM) - 8; - charWeight2.z = (charWeightInt42.s1 >> 4) - 8; - charWeight2.w = (charWeightInt42.s1 & MOD_NUM)- 8; - charWeight3.x = (charWeightInt43.s0 >> 4) - 8; - charWeight3.y = (charWeightInt43.s0 & MOD_NUM) - 8; - charWeight3.z = (charWeightInt43.s1 >> 4) - 8; - charWeight3.w = (charWeightInt43.s1 & MOD_NUM) - 8; - FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC03, dequantOffsetC03); - FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC03, dequantOffsetC03); - FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC03, dequantOffsetC03); - FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC03, dequantOffsetC03); -#else FLOAT4 weight0 = vload4(0, weight+weight_offset); FLOAT4 weight1 = vload4(0, weight+weight_offset+weight_ic_offset); FLOAT4 weight2 = vload4(0, weight+weight_offset+weight_ic_offset*2); FLOAT4 weight3 = vload4(0, weight+weight_offset+weight_ic_offset*3); -#endif out0 = mad(in0.x, weight0, out0); out0 = mad(in0.y, weight1, out0); @@ -1788,50 +1071,10 @@ void conv_2d_c8h4w1(GLOBAL_SIZE_2_DIMS out3 = mad(in3.z, weight2, out3); out3 = mad(in3.w, weight3, out3); -#if (defined USE_LOW_BIT_WEIGHT_INT8) - charWeight0 = vload4(0, weight+weight_offset+weight_oc_offset); - charWeight1 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset); - charWeight2 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset*2); - charWeight3 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset*3); - weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC47, dequantOffsetC47); - weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC47, dequantOffsetC47); - weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC47, dequantOffsetC47); - weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC47, dequantOffsetC47); -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - charWeightInt40 = vload2(0, weight+weight_offset/2+weight_oc_offset/2); - charWeightInt41 = vload2(0, weight+weight_offset/2+weight_oc_offset/2+weight_ic_offset/2); - charWeightInt42 = vload2(0, weight+weight_offset/2+weight_oc_offset/2+weight_ic_offset*2/2); - charWeightInt43 = vload2(0, weight+weight_offset/2+weight_oc_offset/2+weight_ic_offset*3/2); - charWeight0 = (char4)(0, 0, 0, 0); - charWeight1 = (char4)(0, 0, 0, 0); - charWeight2 = (char4)(0, 0, 0, 0); - charWeight3 = (char4)(0, 0, 0, 0); - charWeight0.x = (charWeightInt40.s0 >> 4) - 8; - charWeight0.y = (charWeightInt40.s0 & MOD_NUM) - 8; - charWeight0.z = (charWeightInt40.s1 >> 4) - 8; - charWeight0.w = (charWeightInt40.s1 & MOD_NUM) - 8; - charWeight1.x = (charWeightInt41.s0 >> 4) - 8; - charWeight1.y = (charWeightInt41.s0 & MOD_NUM) - 8; - charWeight1.z = (charWeightInt41.s1 >> 4) - 8; - charWeight1.w = (charWeightInt41.s1 & MOD_NUM)- 8; - charWeight2.x = (charWeightInt42.s0 >> 4) - 8; - charWeight2.y = (charWeightInt42.s0 & MOD_NUM) - 8; - charWeight2.z = (charWeightInt42.s1 >> 4) - 8; - charWeight2.w = (charWeightInt42.s1 & MOD_NUM)- 8; - charWeight3.x = (charWeightInt43.s0 >> 4) - 8; - charWeight3.y = (charWeightInt43.s0 & MOD_NUM) - 8; - charWeight3.z = (charWeightInt43.s1 >> 4) - 8; - charWeight3.w = (charWeightInt43.s1 & MOD_NUM) - 8; - weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC47, dequantOffsetC47); - weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC47, dequantOffsetC47); - weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC47, dequantOffsetC47); - weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC47, dequantOffsetC47); -#else weight0 = vload4(0, weight+weight_offset+weight_oc_offset); weight1 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset); weight2 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset*2); weight3 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset*3); -#endif out4 = mad(in0.x, weight0, out4); out4 = mad(in0.y, weight1, out4); @@ -1939,17 +1182,7 @@ void conv_2d_c8h4w1(GLOBAL_SIZE_2_DIMS __kernel void conv_2d_c8h2w1(GLOBAL_SIZE_2_DIMS __global const FLOAT *input, -#if (defined USE_LOW_BIT_WEIGHT_INT8) - __global const char *weight, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - __global const uchar *weight, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#else __global const FLOAT *weight, -#endif __global const FLOAT *bias, __global FLOAT *output, __private const int2 in_hw, @@ -1972,12 +1205,6 @@ void conv_2d_c8h2w1(GLOBAL_SIZE_2_DIMS const int out_w_idx = out_c_w_idx % out_w_blocks; const int out_b_idx = out_b_h_idx / out_h_blocks;//equal to in_b_idx const int out_h_idx = (out_b_h_idx % out_h_blocks) << 1; -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - const FLOAT4 dequantScaleC03 = vload4(out_c_idx, dequantScale); - const FLOAT4 dequantOffsetC03 = vload4(out_c_idx, dequantOffset); - const FLOAT4 dequantScaleC47 = vload4(out_c_idx + 1, dequantScale); - const FLOAT4 dequantOffsetC47 = vload4(out_c_idx + 1, dequantOffset); -#endif FLOAT4 out0 = vload4(out_c_idx, bias); FLOAT4 out1 = out0; @@ -2010,50 +1237,11 @@ void conv_2d_c8h2w1(GLOBAL_SIZE_2_DIMS for(int fw = in_w_idx_start; fw < in_w_idx_end; fw += dilate_hw.y) { FLOAT4 in0 = (in_h0_idx < 0 || in_h0_idx >= in_hw_size) ? (FLOAT4)0 : vload4(in_h0_idx + fw, input+inp_offset_base); FLOAT4 in1 = (in_h1_idx < 0 || in_h1_idx >= in_hw_size) ? (FLOAT4)0 : vload4(in_h1_idx + fw, input+inp_offset_base); -#if (defined USE_LOW_BIT_WEIGHT_INT8) - char4 charWeight0 = vload4(0, weight+weight_offset); - char4 charWeight1 = vload4(0, weight+weight_offset+weight_ic_offset); - char4 charWeight2 = vload4(0, weight+weight_offset+weight_ic_offset*2); - char4 charWeight3 = vload4(0, weight+weight_offset+weight_ic_offset*3); - FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC03, dequantOffsetC03); - FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC03, dequantOffsetC03); - FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC03, dequantOffsetC03); - FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC03, dequantOffsetC03); -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - uchar2 charWeightInt40 = vload2(0, weight+weight_offset/2); - uchar2 charWeightInt41 = vload2(0, weight+weight_offset/2+weight_ic_offset/2); - uchar2 charWeightInt42 = vload2(0, weight+weight_offset/2+weight_ic_offset*2/2); - uchar2 charWeightInt43 = vload2(0, weight+weight_offset/2+weight_ic_offset*3/2); - char4 charWeight0 = (char4)(0, 0, 0, 0); - char4 charWeight1 = (char4)(0, 0, 0, 0); - char4 charWeight2 = (char4)(0, 0, 0, 0); - char4 charWeight3 = (char4)(0, 0, 0, 0); - charWeight0.x = (charWeightInt40.s0 >> 4) - 8; - charWeight0.y = (charWeightInt40.s0 & MOD_NUM) - 8; - charWeight0.z = (charWeightInt40.s1 >> 4) - 8; - charWeight0.w = (charWeightInt40.s1 & MOD_NUM) - 8; - charWeight1.x = (charWeightInt41.s0 >> 4) - 8; - charWeight1.y = (charWeightInt41.s0 & MOD_NUM) - 8; - charWeight1.z = (charWeightInt41.s1 >> 4) - 8; - charWeight1.w = (charWeightInt41.s1 & MOD_NUM) - 8; - charWeight2.x = (charWeightInt42.s0 >> 4) - 8; - charWeight2.y = (charWeightInt42.s0 & MOD_NUM) - 8; - charWeight2.z = (charWeightInt42.s1 >> 4) - 8; - charWeight2.w = (charWeightInt42.s1 & MOD_NUM) - 8; - charWeight3.x = (charWeightInt43.s0 >> 4) - 8; - charWeight3.y = (charWeightInt43.s0 & MOD_NUM) - 8; - charWeight3.z = (charWeightInt43.s1 >> 4) - 8; - charWeight3.w = (charWeightInt43.s1 & MOD_NUM) - 8; - FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC03, dequantOffsetC03); - FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC03, dequantOffsetC03); - FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC03, dequantOffsetC03); - FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC03, dequantOffsetC03); -#else FLOAT4 weight0 = vload4(0, weight+weight_offset); FLOAT4 weight1 = vload4(0, weight+weight_offset+weight_ic_offset); FLOAT4 weight2 = vload4(0, weight+weight_offset+weight_ic_offset*2); FLOAT4 weight3 = vload4(0, weight+weight_offset+weight_ic_offset*3); -#endif + out0 = mad(in0.x, weight0, out0); out0 = mad(in0.y, weight1, out0); out0 = mad(in0.z, weight2, out0); @@ -2064,50 +1252,11 @@ void conv_2d_c8h2w1(GLOBAL_SIZE_2_DIMS out1 = mad(in1.z, weight2, out1); out1 = mad(in1.w, weight3, out1); -#if (defined USE_LOW_BIT_WEIGHT_INT8) - charWeight0 = vload4(0, weight+weight_offset+weight_oc_offset); - charWeight1 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset); - charWeight2 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset*2); - charWeight3 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset*3); - weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC47, dequantOffsetC47); - weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC47, dequantOffsetC47); - weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC47, dequantOffsetC47); - weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC47, dequantOffsetC47); -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - charWeightInt40 = vload2(0, weight+weight_offset/2+weight_oc_offset/2); - charWeightInt41 = vload2(0, weight+weight_offset/2+weight_oc_offset/2+weight_ic_offset/2); - charWeightInt42 = vload2(0, weight+weight_offset/2+weight_oc_offset/2+weight_ic_offset*2/2); - charWeightInt43 = vload2(0, weight+weight_offset/2+weight_oc_offset/2+weight_ic_offset*3/2); - charWeight0 = (char4)(0, 0, 0, 0); - charWeight1 = (char4)(0, 0, 0, 0); - charWeight2 = (char4)(0, 0, 0, 0); - charWeight3 = (char4)(0, 0, 0, 0); - charWeight0.x = (charWeightInt40.s0 >> 4) - 8; - charWeight0.y = (charWeightInt40.s0& MOD_NUM) - 8; - charWeight0.z = (charWeightInt40.s1 >> 4) - 8; - charWeight0.w = (charWeightInt40.s1& MOD_NUM) - 8; - charWeight1.x = (charWeightInt41.s0 >> 4) - 8; - charWeight1.y = (charWeightInt41.s0& MOD_NUM) - 8; - charWeight1.z = (charWeightInt41.s1 >> 4) - 8; - charWeight1.w = (charWeightInt41.s1& MOD_NUM) - 8; - charWeight2.x = (charWeightInt42.s0 >> 4) - 8; - charWeight2.y = (charWeightInt42.s0& MOD_NUM) - 8; - charWeight2.z = (charWeightInt42.s1 >> 4) - 8; - charWeight2.w = (charWeightInt42.s1& MOD_NUM) - 8; - charWeight3.x = (charWeightInt43.s0 >> 4) - 8; - charWeight3.y = (charWeightInt43.s0& MOD_NUM) - 8; - charWeight3.z = (charWeightInt43.s1 >> 4) - 8; - charWeight3.w = (charWeightInt43.s1& MOD_NUM) - 8; - weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC47, dequantOffsetC47); - weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC47, dequantOffsetC47); - weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC47, dequantOffsetC47); - weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC47, dequantOffsetC47); -#else weight0 = vload4(0, weight+weight_offset+weight_oc_offset); weight1 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset); weight2 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset*2); weight3 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset*3); -#endif + out2 = mad(in0.x, weight0, out2); out2 = mad(in0.y, weight1, out2); out2 = mad(in0.z, weight2, out2); @@ -2174,17 +1323,7 @@ void conv_2d_c8h2w1(GLOBAL_SIZE_2_DIMS __kernel void conv_2d_c8h1w4(GLOBAL_SIZE_2_DIMS __global const FLOAT *input, -#if (defined USE_LOW_BIT_WEIGHT_INT8) - __global const char *weight, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - __global const uchar *weight, - __global const FLOAT *dequantScale, - __global const FLOAT *dequantOffset, -#else __global const FLOAT *weight, -#endif __global const FLOAT *bias, __global FLOAT *output, __private const int2 in_hw, @@ -2207,12 +1346,6 @@ void conv_2d_c8h1w4(GLOBAL_SIZE_2_DIMS const int out_w_idx = (out_c_w_idx % out_w_blocks) << 2; const int out_b_idx = out_b_h_idx / out_hw.x;//equal to in_b_idx const int out_h_idx = out_b_h_idx % out_hw.x; -#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - const FLOAT4 dequantScaleC03 = vload4(out_c_idx, dequantScale); - const FLOAT4 dequantOffsetC03 = vload4(out_c_idx, dequantOffset); - const FLOAT4 dequantScaleC47 = vload4(out_c_idx + 1, dequantScale); - const FLOAT4 dequantOffsetC47 = vload4(out_c_idx + 1, dequantOffset); -#endif FLOAT4 out0 = vload4(out_c_idx, bias); FLOAT4 out1 = out0; @@ -2256,50 +1389,10 @@ void conv_2d_c8h1w4(GLOBAL_SIZE_2_DIMS FLOAT4 in2 = (in_w2_idx < 0 || in_w2_idx >= in_hw.y) ? (FLOAT4)0 : vload4(in_w2_idx, input+inp_offset_base); FLOAT4 in3 = (in_w3_idx < 0 || in_w3_idx >= in_hw.y) ? (FLOAT4)0 : vload4(in_w3_idx, input+inp_offset_base); -#if (defined USE_LOW_BIT_WEIGHT_INT8) - char4 charWeight0 = vload4(0, weight+weight_offset); - char4 charWeight1 = vload4(0, weight+weight_offset+weight_ic_offset); - char4 charWeight2 = vload4(0, weight+weight_offset+weight_ic_offset*2); - char4 charWeight3 = vload4(0, weight+weight_offset+weight_ic_offset*3); - FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC03, dequantOffsetC03); - FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC03, dequantOffsetC03); - FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC03, dequantOffsetC03); - FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC03, dequantOffsetC03); -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - uchar2 charWeightInt40 = vload2(0, weight+weight_offset/2); - uchar2 charWeightInt41 = vload2(0, weight+weight_offset/2+weight_ic_offset/2); - uchar2 charWeightInt42 = vload2(0, weight+weight_offset/2+weight_ic_offset*2/2); - uchar2 charWeightInt43 = vload2(0, weight+weight_offset/2+weight_ic_offset*3/2); - char4 charWeight0 = (char4)(0, 0, 0, 0); - char4 charWeight1 = (char4)(0, 0, 0, 0); - char4 charWeight2 = (char4)(0, 0, 0, 0); - char4 charWeight3 = (char4)(0, 0, 0, 0); - charWeight0.x = (charWeightInt40.s0 >> 4) - 8; - charWeight0.y = (charWeightInt40.s0 & MOD_NUM) - 8; - charWeight0.z = (charWeightInt40.s1 >> 4) - 8; - charWeight0.w = (charWeightInt40.s1 & MOD_NUM) - 8; - charWeight1.x = (charWeightInt41.s0 >> 4) - 8; - charWeight1.y = (charWeightInt41.s0 & MOD_NUM) - 8; - charWeight1.z = (charWeightInt41.s1 >> 4) - 8; - charWeight1.w = (charWeightInt41.s1 & MOD_NUM) - 8; - charWeight2.x = (charWeightInt42.s0 >> 4) - 8; - charWeight2.y = (charWeightInt42.s0 & MOD_NUM) - 8; - charWeight2.z = (charWeightInt42.s1 >> 4) - 8; - charWeight2.w = (charWeightInt42.s1 & MOD_NUM) - 8; - charWeight3.x = (charWeightInt43.s0 >> 4) - 8; - charWeight3.y = (charWeightInt43.s0 & MOD_NUM) - 8; - charWeight3.z = (charWeightInt43.s1 >> 4) - 8; - charWeight3.w = (charWeightInt43.s1 & MOD_NUM) - 8; - FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC03, dequantOffsetC03); - FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC03, dequantOffsetC03); - FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC03, dequantOffsetC03); - FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC03, dequantOffsetC03); -#else FLOAT4 weight0 = vload4(0, weight+weight_offset); FLOAT4 weight1 = vload4(0, weight+weight_offset+weight_ic_offset); FLOAT4 weight2 = vload4(0, weight+weight_offset+weight_ic_offset*2); FLOAT4 weight3 = vload4(0, weight+weight_offset+weight_ic_offset*3); -#endif out0 = mad(in0.x, weight0, out0); out0 = mad(in0.y, weight1, out0); @@ -2321,50 +1414,10 @@ void conv_2d_c8h1w4(GLOBAL_SIZE_2_DIMS out3 = mad(in3.z, weight2, out3); out3 = mad(in3.w, weight3, out3); -#if (defined USE_LOW_BIT_WEIGHT_INT8) - charWeight0 = vload4(0, weight+weight_offset+weight_oc_offset); - charWeight1 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset); - charWeight2 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset*2); - charWeight3 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset*3); - weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC47, dequantOffsetC47); - weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC47, dequantOffsetC47); - weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC47, dequantOffsetC47); - weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC47, dequantOffsetC47); -#elif (defined USE_LOW_BIT_WEIGHT_INT4) - charWeightInt40 = vload2(0, weight+weight_offset/2+weight_oc_offset/2); - charWeightInt41 = vload2(0, weight+weight_offset/2+weight_oc_offset/2+weight_ic_offset/2); - charWeightInt42 = vload2(0, weight+weight_offset/2+weight_oc_offset/2+weight_ic_offset*2/2); - charWeightInt43 = vload2(0, weight+weight_offset/2+weight_oc_offset/2+weight_ic_offset*3/2); - charWeight0 = (char4)(0, 0, 0, 0); - charWeight1 = (char4)(0, 0, 0, 0); - charWeight2 = (char4)(0, 0, 0, 0); - charWeight3 = (char4)(0, 0, 0, 0); - charWeight0.x = (charWeightInt40.s0 >> 4) - 8; - charWeight0.y = (charWeightInt40.s0 & MOD_NUM) - 8; - charWeight0.z = (charWeightInt40.s1 >> 4) - 8; - charWeight0.w = (charWeightInt40.s1 & MOD_NUM) - 8; - charWeight1.x = (charWeightInt41.s0 >> 4) - 8; - charWeight1.y = (charWeightInt41.s0 & MOD_NUM)- 8; - charWeight1.z = (charWeightInt41.s1 >> 4) - 8; - charWeight1.w = (charWeightInt41.s1 & MOD_NUM) - 8; - charWeight2.x = (charWeightInt42.s0 >> 4) - 8; - charWeight2.y = (charWeightInt42.s0 & MOD_NUM) - 8; - charWeight2.z = (charWeightInt42.s1 >> 4) - 8; - charWeight2.w = (charWeightInt42.s1 & MOD_NUM) - 8; - charWeight3.x = (charWeightInt43.s0 >> 4) - 8; - charWeight3.y = (charWeightInt43.s0 & MOD_NUM) - 8; - charWeight3.z = (charWeightInt43.s1 >> 4) - 8; - charWeight3.w = (charWeightInt43.s1 & MOD_NUM) - 8; - weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC47, dequantOffsetC47); - weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC47, dequantOffsetC47); - weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC47, dequantOffsetC47); - weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC47, dequantOffsetC47); -#else weight0 = vload4(0, weight+weight_offset+weight_oc_offset); weight1 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset); weight2 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset*2); weight3 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset*3); -#endif out4 = mad(in0.x, weight0, out4); out4 = mad(in0.y, weight1, out4); diff --git a/source/backend/opencl/execution/cl/conv_2d_int_buf.cl b/source/backend/opencl/execution/cl/conv_2d_int_buf.cl new file mode 100644 index 000000000..1f5e7d0a6 --- /dev/null +++ b/source/backend/opencl/execution/cl/conv_2d_int_buf.cl @@ -0,0 +1,1397 @@ +#ifdef MNN_SUPPORT_FP16 +#pragma OPENCL EXTENSION cl_khr_fp16 : enable +#endif +#define READ_INPUT_IMAGE(i, base) \ + int in_width_value##i = in_width##i + base; \ + in_width_value##i = \ + select(in_idx + in_width_value##i, -1, (in_width_value##i < 0 || in_width_value##i >= input_shape.y)); \ + in_w_idx = in_width_value##i % input_shape.y; \ + inp_offset = (((in_b_idx*in_channel_block_length + in_channel_block_idx)*input_shape.x + in_h_idx)* input_shape.y + in_w_idx)*4; \ + in##i = (in_width_value##i)==-1 ? (FLOAT4)0 : vload4(0, input+inp_offset); + +#define CALCULATE_OUTPUT(i) \ + out##i = mad(in##i.x, weights0, out##i); \ + out##i = mad(in##i.y, weights1, out##i); \ + out##i = mad(in##i.z, weights2, out##i); \ + out##i = mad(in##i.w, weights3, out##i); + +#define GLOBAL_SIZE_2_DIMS __private const int global_size_dim0, __private const int global_size_dim1, + +#define DEAL_NON_UNIFORM_DIM2(input1, input2) \ + if (input1 >= global_size_dim0 || input2 >= global_size_dim1) { \ + return; \ + } + +#define MOD_NUM 15 + + +__kernel +void conv_2d_int_c4h1w1(GLOBAL_SIZE_2_DIMS + __global const FLOAT *input, +#if (defined USE_LOW_BIT_WEIGHT_INT8) + __global const char *weight, +#else + __global const uchar *weight, +#endif + __global const FLOAT *dequantScale, + __global const FLOAT *dequantOffset, + __global const FLOAT *bias, + __global FLOAT *output, + __private const int2 in_hw, + __private const int inChannel, + __private const int in_c_blocks, + __private const int2 out_hw, + __private const int2 filter_hw, + __private const int2 stride_hw, + __private const int2 pad_hw, + __private const int2 dilate_hw, + __private const int out_w_blocks, + __private const int out_c_blocks, + __private const int out_h_blocks) { + const int out_c_w_idx = get_global_id(0); //c/4 w + const int out_b_h_idx = get_global_id(1); //b h + + DEAL_NON_UNIFORM_DIM2(out_c_w_idx, out_b_h_idx); + + const int out_c_idx = out_c_w_idx / out_hw.y; + const int out_w_idx = out_c_w_idx % out_hw.y; + const int out_b_idx = out_b_h_idx / out_hw.x;//equal to in_b_idx + const int out_h_idx = out_b_h_idx % out_hw.x; + + const FLOAT4 dequantScaleC4 = vload4(out_c_idx, dequantScale); + const FLOAT4 dequantOffsetC4 = vload4(out_c_idx, dequantOffset); + + FLOAT4 out0 = vload4(out_c_idx, bias); + + const int in_w_idx_base = mad24(out_w_idx, stride_hw.y, -pad_hw.y); + const int in_h_idx_base = mad24(out_h_idx, stride_hw.x, -pad_hw.x); + + const int kw_start = select(0, (-in_w_idx_base + dilate_hw.y - 1) / dilate_hw.y, in_w_idx_base < 0); + const int kh_start = select(0, (-in_h_idx_base + dilate_hw.x - 1) / dilate_hw.x, in_h_idx_base < 0); + + const int in_w_idx_start = mad24(kw_start, dilate_hw.y, in_w_idx_base); + const int in_w_idx_end = min(mad24(filter_hw.y, dilate_hw.y, in_w_idx_base), in_hw.y); + + const int in_h_idx_start = mad24(kh_start, dilate_hw.x, in_h_idx_base); + const int in_h_idx_end = min(mad24(filter_hw.x, dilate_hw.x, in_h_idx_base), in_hw.x); + + const int weight_oc_offset = out_c_blocks * filter_hw.x * filter_hw.y * 4; + for(ushort in_c_idx = 0; in_c_idx < in_c_blocks; in_c_idx++) { + //weights NC4HW4 [1, 4*icC4, ocC4*kh*kw, 1] xic4 + //index: [0, 4*in_c_idx, out_c_idx*kh*kw + kh_start*kw + kw_start, 0] + int weight_offset = ((((4*in_c_idx+0)* out_c_blocks + out_c_idx) *filter_hw.x + kh_start)*filter_hw.y + kw_start) * 4; + for(int iy = in_h_idx_start; iy < in_h_idx_end; iy += dilate_hw.x) { + for(int ix = in_w_idx_start; ix < in_w_idx_end; ix += dilate_hw.y) { + int inp_offset = (((out_b_idx * in_c_blocks + in_c_idx) * in_hw.x + iy) * in_hw.y + ix) * 4; + FLOAT4 in0 = vload4(0, input+inp_offset); + + const int filter_w_inc = (ix-in_w_idx_start)/dilate_hw.y; + +#if (defined USE_LOW_BIT_WEIGHT_INT8) + char4 charWeight0 = vload4(filter_w_inc, weight+weight_offset); + char4 charWeight1 = vload4(filter_w_inc, weight+weight_offset+weight_oc_offset); + char4 charWeight2 = vload4(filter_w_inc, weight+weight_offset+weight_oc_offset*2); + char4 charWeight3 = vload4(filter_w_inc, weight+weight_offset+weight_oc_offset*3); + FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC4, dequantOffsetC4); +#else + uchar2 charWeightInt40 = vload2(filter_w_inc, weight+weight_offset/2); + uchar2 charWeightInt41 = vload2(filter_w_inc, weight+weight_offset/2+weight_oc_offset/2); + uchar2 charWeightInt42 = vload2(filter_w_inc, weight+weight_offset/2+weight_oc_offset*2/2); + uchar2 charWeightInt43 = vload2(filter_w_inc, weight+weight_offset/2+weight_oc_offset*3/2); + char4 charWeight0 = (char4)(0, 0, 0, 0); + char4 charWeight1 = (char4)(0, 0, 0, 0); + char4 charWeight2 = (char4)(0, 0, 0, 0); + char4 charWeight3 = (char4)(0, 0, 0, 0); + charWeight0.x = (charWeightInt40.s0 >> 4) - 8; + charWeight0.y = (charWeightInt40.s0 & MOD_NUM) - 8; + charWeight0.z = (charWeightInt40.s1 >> 4) - 8; + charWeight0.w = (charWeightInt40.s1 & MOD_NUM) - 8; + charWeight1.x = (charWeightInt41.s0 >> 4) - 8; + charWeight1.y = (charWeightInt41.s0 & MOD_NUM) - 8; + charWeight1.z = (charWeightInt41.s1 >> 4) - 8; + charWeight1.w = (charWeightInt41.s1 & MOD_NUM) - 8; + charWeight2.x = (charWeightInt42.s0 >> 4) - 8; + charWeight2.y = (charWeightInt42.s0 & MOD_NUM) - 8; + charWeight2.z = (charWeightInt42.s1 >> 4) - 8; + charWeight2.w = (charWeightInt42.s1 & MOD_NUM) - 8; + charWeight3.x = (charWeightInt43.s0 >> 4) - 8; + charWeight3.y = (charWeightInt43.s0 & MOD_NUM) - 8; + charWeight3.z = (charWeightInt43.s1 >> 4) - 8; + charWeight3.w = (charWeightInt43.s1 & MOD_NUM) - 8; + FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC4, dequantOffsetC4); +#endif + + out0 = mad(in0.x, weight0, out0); + out0 = mad(in0.y, weight1, out0); + out0 = mad(in0.z, weight2, out0); + out0 = mad(in0.w, weight3, out0); + + } + weight_offset += 4*filter_hw.y; + } + } +#ifdef RELU + out0 = fmax(out0, (FLOAT4)0); +#endif + +#ifdef RELU6 + out0 = clamp(out0, (FLOAT4)0, (FLOAT4)6); +#endif + + const int out_offset = (((out_b_idx*out_c_blocks + out_c_idx)*out_hw.x + out_h_idx)*out_hw.y + out_w_idx)*4; + vstore4(out0, 0, output+out_offset); + +} + +__kernel +void conv_2d_int_c4h1w2(GLOBAL_SIZE_2_DIMS + __global const FLOAT *input, +#if (defined USE_LOW_BIT_WEIGHT_INT8) + __global const char *weight, +#else + __global const uchar *weight, +#endif + __global const FLOAT *dequantScale, + __global const FLOAT *dequantOffset, + __global const FLOAT *bias, + __global FLOAT *output, + __private const int2 in_hw, + __private const int inChannel, + __private const int in_c_blocks, + __private const int2 out_hw, + __private const int2 filter_hw, + __private const int2 stride_hw, + __private const int2 pad_hw, + __private const int2 dilate_hw, + __private const int out_w_blocks,//generate width's num + __private const int out_c_blocks, + __private const int out_h_blocks) { + const int out_c_w_idx = get_global_id(0); //c/4 w + const int out_b_h_idx = get_global_id(1); //b h + + DEAL_NON_UNIFORM_DIM2(out_c_w_idx, out_b_h_idx); + + const int out_c_idx = out_c_w_idx / out_w_blocks; + const int out_w_idx = (out_c_w_idx % out_w_blocks) << 1; + const int out_b_idx = out_b_h_idx / out_hw.x;//equal to in_b_idx + const int out_h_idx = out_b_h_idx % out_hw.x; + + const FLOAT4 dequantScaleC4 = vload4(out_c_idx, dequantScale); + const FLOAT4 dequantOffsetC4 = vload4(out_c_idx, dequantOffset); + + FLOAT4 out0 = vload4(out_c_idx, bias); + FLOAT4 out1 = out0; + + const int in_w0_idx_base = mad24(out_w_idx, stride_hw.y, -pad_hw.y); + const int in_w1_idx_base = in_w0_idx_base + stride_hw.y; + + const int in_h_idx_base = mad24(out_h_idx, stride_hw.x, -pad_hw.x); + + const int kh_start = select(0, (-in_h_idx_base + dilate_hw.x - 1) / dilate_hw.x, in_h_idx_base < 0); + const int in_h_idx_start = mad24(kh_start, dilate_hw.x, in_h_idx_base); + const int in_h_idx_end = min(mad24(filter_hw.x, dilate_hw.x, in_h_idx_base), in_hw.x); + + const int weight_oc_offset = out_c_blocks * filter_hw.x * filter_hw.y * 4; + for(ushort in_c_idx = 0; in_c_idx < in_c_blocks; in_c_idx++) { + //weights NC4HW4 [1, 4*icC4, ocC4*kh*kw, 1] xic4 + //index: [0, 4*in_c_idx, out_c_idx*kh*kw + kh_start*kw + kw_start, 0] + int weight_offset = ((((4*in_c_idx+0)* out_c_blocks + out_c_idx) *filter_hw.x + kh_start)*filter_hw.y + 0) * 4; + + for(int iy = in_h_idx_start; iy < in_h_idx_end; iy += dilate_hw.x) { + const int inp_offset_base = (((out_b_idx * in_c_blocks + in_c_idx) * in_hw.x + iy) * in_hw.y + 0) * 4; + + for(int fw = 0; fw < filter_hw.y; fw++) { + const int in_w0_idx = fw * dilate_hw.y + in_w0_idx_base; + const int in_w1_idx = fw * dilate_hw.y + in_w1_idx_base; + + FLOAT4 in0 = (in_w0_idx < 0 || in_w0_idx >= in_hw.y) ? (FLOAT4)0 : vload4(in_w0_idx, input+inp_offset_base); + FLOAT4 in1 = (in_w1_idx < 0 || in_w1_idx >= in_hw.y) ? (FLOAT4)0 : vload4(in_w1_idx, input+inp_offset_base); + +#if (defined USE_LOW_BIT_WEIGHT_INT8) + char4 charWeight0 = vload4(0, weight+weight_offset); + char4 charWeight1 = vload4(0, weight+weight_offset+weight_oc_offset); + char4 charWeight2 = vload4(0, weight+weight_offset+weight_oc_offset*2); + char4 charWeight3 = vload4(0, weight+weight_offset+weight_oc_offset*3); + FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC4, dequantOffsetC4); +#else + uchar2 charWeightInt40 = vload2(0, weight+weight_offset/2); + uchar2 charWeightInt41 = vload2(0, weight+weight_offset/2+weight_oc_offset/2); + uchar2 charWeightInt42 = vload2(0, weight+weight_offset/2+weight_oc_offset*2/2); + uchar2 charWeightInt43 = vload2(0, weight+weight_offset/2+weight_oc_offset*3/2); + char4 charWeight0 = (char4)(0, 0, 0, 0); + char4 charWeight1 = (char4)(0, 0, 0, 0); + char4 charWeight2 = (char4)(0, 0, 0, 0); + char4 charWeight3 = (char4)(0, 0, 0, 0); + charWeight0.x = (charWeightInt40.s0 >> 4) - 8; + charWeight0.y = (charWeightInt40.s0 & MOD_NUM) - 8; + charWeight0.z = (charWeightInt40.s1 >> 4) - 8; + charWeight0.w = (charWeightInt40.s1 & MOD_NUM) - 8; + charWeight1.x = (charWeightInt41.s0 >> 4) - 8; + charWeight1.y = (charWeightInt41.s0 & MOD_NUM) - 8; + charWeight1.z = (charWeightInt41.s1 >> 4) - 8; + charWeight1.w = (charWeightInt41.s1 & MOD_NUM) - 8; + charWeight2.x = (charWeightInt42.s0 >> 4) - 8; + charWeight2.y = (charWeightInt42.s0 & MOD_NUM) - 8; + charWeight2.z = (charWeightInt42.s1 >> 4) - 8; + charWeight2.w = (charWeightInt42.s1 & MOD_NUM) - 8; + charWeight3.x = (charWeightInt43.s0 >> 4) - 8; + charWeight3.y = (charWeightInt43.s0 & MOD_NUM) - 8; + charWeight3.z = (charWeightInt43.s1 >> 4) - 8; + charWeight3.w = (charWeightInt43.s1 & MOD_NUM) - 8; + FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC4, dequantOffsetC4); +#endif + + out0 = mad(in0.x, weight0, out0); + out0 = mad(in0.y, weight1, out0); + out0 = mad(in0.z, weight2, out0); + out0 = mad(in0.w, weight3, out0); + + out1 = mad(in1.x, weight0, out1); + out1 = mad(in1.y, weight1, out1); + out1 = mad(in1.z, weight2, out1); + out1 = mad(in1.w, weight3, out1); + + weight_offset += 4; + } + } + } +#ifdef RELU + out0 = fmax(out0, (FLOAT4)0); + out1 = fmax(out1, (FLOAT4)0); +#endif + +#ifdef RELU6 + out0 = clamp(out0, (FLOAT4)0, (FLOAT4)6); + out1 = clamp(out1, (FLOAT4)0, (FLOAT4)6); +#endif + + const int out_offset = (((out_b_idx*out_c_blocks + out_c_idx)*out_hw.x + out_h_idx)*out_hw.y + out_w_idx)*4; +#ifdef BLOCK_LEAVE + vstore4(out0, 0, output+out_offset); + if(out_w_idx + 1 >= out_hw.y) return; + vstore4(out1, 1, output+out_offset); +#else + vstore8((FLOAT8)(out0, out1), 0, output+out_offset); +#endif +} + +__kernel +void conv_2d_int_c4h1w4(GLOBAL_SIZE_2_DIMS + __global const FLOAT *input, +#if (defined USE_LOW_BIT_WEIGHT_INT8) + __global const char *weight, +#else + __global const uchar *weight, +#endif + __global const FLOAT *dequantScale, + __global const FLOAT *dequantOffset, + __global const FLOAT *bias, + __global FLOAT *output, + __private const int2 in_hw, + __private const int inChannel, + __private const int in_c_blocks, + __private const int2 out_hw, + __private const int2 filter_hw, + __private const int2 stride_hw, + __private const int2 pad_hw, + __private const int2 dilate_hw, + __private const int out_w_blocks, + __private const int out_c_blocks, + __private const int out_h_blocks) { + const int out_c_w_idx = get_global_id(0); //c/4 w + const int out_b_h_idx = get_global_id(1); //b h + + DEAL_NON_UNIFORM_DIM2(out_c_w_idx, out_b_h_idx); + + const int out_c_idx = out_c_w_idx / out_w_blocks; + const int out_w_idx = (out_c_w_idx % out_w_blocks) << 2; + const int out_b_idx = out_b_h_idx / out_hw.x;//equal to in_b_idx + const int out_h_idx = out_b_h_idx % out_hw.x; + + const FLOAT4 dequantScaleC4 = vload4(out_c_idx, dequantScale); + const FLOAT4 dequantOffsetC4 = vload4(out_c_idx, dequantOffset); + + FLOAT4 out0 = vload4(out_c_idx, bias); + FLOAT4 out1 = out0; + FLOAT4 out2 = out0; + FLOAT4 out3 = out0; + + const int in_w0_idx_base = mad24(out_w_idx, stride_hw.y, -pad_hw.y); + const int in_w1_idx_base = in_w0_idx_base + stride_hw.y; + const int in_w2_idx_base = in_w1_idx_base + stride_hw.y; + const int in_w3_idx_base = in_w2_idx_base + stride_hw.y; + + const int in_h_idx_base = mad24(out_h_idx, stride_hw.x, -pad_hw.x); + + const int kh_start = select(0, (-in_h_idx_base + dilate_hw.x - 1) / dilate_hw.x, in_h_idx_base < 0); + const int in_h_idx_start = mad24(kh_start, dilate_hw.x, in_h_idx_base); + const int in_h_idx_end = min(mad24(filter_hw.x, dilate_hw.x, in_h_idx_base), in_hw.x); + + const int weight_oc_offset = out_c_blocks * filter_hw.x * filter_hw.y * 4; + for(ushort in_c_idx = 0; in_c_idx < in_c_blocks; in_c_idx++) { + //weights NC4HW4 [1, 4*icC4, ocC4*kh*kw, 1] xic4 + //index: [0, 4*in_c_idx, out_c_idx*kh*kw + kh_start*kw + kw_start, 0] + int weight_offset = ((((4*in_c_idx+0)* out_c_blocks + out_c_idx) *filter_hw.x + kh_start)*filter_hw.y + 0) * 4; + + for(int iy = in_h_idx_start; iy < in_h_idx_end; iy += dilate_hw.x) { + const int inp_offset_base = (((out_b_idx * in_c_blocks + in_c_idx) * in_hw.x + iy) * in_hw.y + 0) * 4; + + for(int fw = 0; fw < filter_hw.y; fw++) { + const int in_w0_idx = fw * dilate_hw.y + in_w0_idx_base; + const int in_w1_idx = fw * dilate_hw.y + in_w1_idx_base; + const int in_w2_idx = fw * dilate_hw.y + in_w2_idx_base; + const int in_w3_idx = fw * dilate_hw.y + in_w3_idx_base; + + FLOAT4 in0 = (in_w0_idx < 0 || in_w0_idx >= in_hw.y) ? (FLOAT4)0 : vload4(in_w0_idx, input+inp_offset_base); + FLOAT4 in1 = (in_w1_idx < 0 || in_w1_idx >= in_hw.y) ? (FLOAT4)0 : vload4(in_w1_idx, input+inp_offset_base); + FLOAT4 in2 = (in_w2_idx < 0 || in_w2_idx >= in_hw.y) ? (FLOAT4)0 : vload4(in_w2_idx, input+inp_offset_base); + FLOAT4 in3 = (in_w3_idx < 0 || in_w3_idx >= in_hw.y) ? (FLOAT4)0 : vload4(in_w3_idx, input+inp_offset_base); + +#if (defined USE_LOW_BIT_WEIGHT_INT8) + char4 charWeight0 = vload4(0, weight+weight_offset); + char4 charWeight1 = vload4(0, weight+weight_offset+weight_oc_offset); + char4 charWeight2 = vload4(0, weight+weight_offset+weight_oc_offset*2); + char4 charWeight3 = vload4(0, weight+weight_offset+weight_oc_offset*3); + FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC4, dequantOffsetC4); +#else + uchar2 charWeightInt40 = vload2(0, weight+weight_offset/2); + uchar2 charWeightInt41 = vload2(0, weight+weight_offset/2+weight_oc_offset/2); + uchar2 charWeightInt42 = vload2(0, weight+weight_offset/2+weight_oc_offset*2/2); + uchar2 charWeightInt43 = vload2(0, weight+weight_offset/2+weight_oc_offset*3/2); + char4 charWeight0 = (char4)(0, 0, 0, 0); + char4 charWeight1 = (char4)(0, 0, 0, 0); + char4 charWeight2 = (char4)(0, 0, 0, 0); + char4 charWeight3 = (char4)(0, 0, 0, 0); + charWeight0.x = (charWeightInt40.s0 >> 4) - 8; + charWeight0.y = (charWeightInt40.s0 & MOD_NUM) - 8; + charWeight0.z = (charWeightInt40.s1 >> 4) - 8; + charWeight0.w = (charWeightInt40.s1 & MOD_NUM) - 8; + charWeight1.x = (charWeightInt41.s0 >> 4) - 8; + charWeight1.y = (charWeightInt41.s0 & MOD_NUM) - 8; + charWeight1.z = (charWeightInt41.s1 >> 4) - 8; + charWeight1.w = (charWeightInt41.s1 & MOD_NUM) - 8; + charWeight2.x = (charWeightInt42.s0 >> 4) - 8; + charWeight2.y = (charWeightInt42.s0 & MOD_NUM) - 8; + charWeight2.z = (charWeightInt42.s1 >> 4) - 8; + charWeight2.w = (charWeightInt42.s1 & MOD_NUM) - 8; + charWeight3.x = (charWeightInt43.s0 >> 4) - 8; + charWeight3.y = (charWeightInt43.s0 & MOD_NUM) - 8; + charWeight3.z = (charWeightInt43.s1 >> 4) - 8; + charWeight3.w = (charWeightInt43.s1 & MOD_NUM) - 8; + FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC4, dequantOffsetC4); +#endif + + out0 = mad(in0.x, weight0, out0); + out0 = mad(in0.y, weight1, out0); + out0 = mad(in0.z, weight2, out0); + out0 = mad(in0.w, weight3, out0); + + out1 = mad(in1.x, weight0, out1); + out1 = mad(in1.y, weight1, out1); + out1 = mad(in1.z, weight2, out1); + out1 = mad(in1.w, weight3, out1); + + out2 = mad(in2.x, weight0, out2); + out2 = mad(in2.y, weight1, out2); + out2 = mad(in2.z, weight2, out2); + out2 = mad(in2.w, weight3, out2); + + out3 = mad(in3.x, weight0, out3); + out3 = mad(in3.y, weight1, out3); + out3 = mad(in3.z, weight2, out3); + out3 = mad(in3.w, weight3, out3); + + weight_offset += 4; + } + } + } +#ifdef RELU + out0 = fmax(out0, (FLOAT4)0); + out1 = fmax(out1, (FLOAT4)0); + out2 = fmax(out2, (FLOAT4)0); + out3 = fmax(out3, (FLOAT4)0); +#endif + +#ifdef RELU6 + out0 = clamp(out0, (FLOAT4)0, (FLOAT4)6); + out1 = clamp(out1, (FLOAT4)0, (FLOAT4)6); + out2 = clamp(out2, (FLOAT4)0, (FLOAT4)6); + out3 = clamp(out3, (FLOAT4)0, (FLOAT4)6); +#endif + + const int out_offset = (((out_b_idx*out_c_blocks + out_c_idx)*out_hw.x + out_h_idx)*out_hw.y + out_w_idx)*4; +#ifdef BLOCK_LEAVE + const int remain = out_hw.y - out_w_idx; + + if (remain >= 4) { + vstore16((FLOAT16)(out0, out1, out2, out3), 0, output+out_offset); + }else if(remain == 3){ + vstore8((FLOAT8)(out0, out1), 0, output+out_offset); + vstore4(out2, 2, output+out_offset); + }else if(remain == 2){ + vstore8((FLOAT8)(out0, out1), 0, output+out_offset); + }else if(remain == 1){ + vstore4(out0, 0, output+out_offset); + } +#else + vstore16((FLOAT16)(out0, out1, out2, out3), 0, output+out_offset); +#endif +} + +__kernel +void conv_2d_int_c4h4w1(GLOBAL_SIZE_2_DIMS + __global const FLOAT *input, +#if (defined USE_LOW_BIT_WEIGHT_INT8) + __global const char *weight, +#else + __global const uchar *weight, +#endif + __global const FLOAT *dequantScale, + __global const FLOAT *dequantOffset, + __global const FLOAT *bias, + __global FLOAT *output, + __private const int2 in_hw, + __private const int inChannel, + __private const int in_c_blocks, + __private const int2 out_hw, + __private const int2 filter_hw, + __private const int2 stride_hw, + __private const int2 pad_hw, + __private const int2 dilate_hw, + __private const int out_w_blocks, + __private const int out_c_blocks, + __private const int out_h_blocks) { + const int out_c_w_idx = get_global_id(0); //c/4 w + const int out_b_h_idx = get_global_id(1); //b h + + DEAL_NON_UNIFORM_DIM2(out_c_w_idx, out_b_h_idx); + + const int out_c_idx = out_c_w_idx / out_w_blocks; + const int out_w_idx = out_c_w_idx % out_w_blocks; + const int out_b_idx = out_b_h_idx / out_h_blocks;//equal to in_b_idx + const int out_h_idx = (out_b_h_idx % out_h_blocks) << 2; + + const FLOAT4 dequantScaleC4 = vload4(out_c_idx, dequantScale); + const FLOAT4 dequantOffsetC4 = vload4(out_c_idx, dequantOffset); + + FLOAT4 out0 = vload4(out_c_idx, bias); + FLOAT4 out1 = out0; + FLOAT4 out2 = out0; + FLOAT4 out3 = out0; + + const int in_w_idx_base = mad24(out_w_idx, stride_hw.y, -pad_hw.y); + + const int in_h0_idx_base = mad24(out_h_idx, stride_hw.x, -pad_hw.x); + const int in_h1_idx_base = in_h0_idx_base + stride_hw.x; + const int in_h2_idx_base = in_h1_idx_base + stride_hw.x; + const int in_h3_idx_base = in_h2_idx_base + stride_hw.x; + + const int kw_start = select(0, (-in_w_idx_base + dilate_hw.y - 1) / dilate_hw.y, in_w_idx_base < 0); + const int in_w_idx_start = mad24(kw_start, dilate_hw.y, in_w_idx_base); + const int in_w_idx_end = min(mad24(filter_hw.y, dilate_hw.y, in_w_idx_base), in_hw.y); + + const int weight_oc_offset = out_c_blocks * filter_hw.x * filter_hw.y * 4; + const int in_hw_size = in_hw.x * in_hw.y; + for(ushort in_c_idx = 0; in_c_idx < in_c_blocks; in_c_idx++) { + //weights NC4HW4 [1, 4*icC4, ocC4*kh*kw, 1] xic4 + //index: [0, 4*in_c_idx, out_c_idx*kh*kw + kh_start*kw + kw_start, 0] + const int inp_offset_base = (out_b_idx * in_c_blocks + in_c_idx) * in_hw.x * in_hw.y * 4; + + for(int iy = 0; iy < filter_hw.x; iy++) { + int weight_offset = ((((4*in_c_idx+0)* out_c_blocks + out_c_idx) *filter_hw.x + iy)*filter_hw.y + kw_start) * 4; + const int in_h0_idx = (iy * dilate_hw.x + in_h0_idx_base) * in_hw.y; + const int in_h1_idx = (iy * dilate_hw.x + in_h1_idx_base) * in_hw.y; + const int in_h2_idx = (iy * dilate_hw.x + in_h2_idx_base) * in_hw.y; + const int in_h3_idx = (iy * dilate_hw.x + in_h3_idx_base) * in_hw.y; + + for(int fw = in_w_idx_start; fw < in_w_idx_end; fw += dilate_hw.y) { + FLOAT4 in0 = (in_h0_idx < 0 || in_h0_idx >= in_hw_size) ? (FLOAT4)0 : vload4(in_h0_idx + fw, input+inp_offset_base); + FLOAT4 in1 = (in_h1_idx < 0 || in_h1_idx >= in_hw_size) ? (FLOAT4)0 : vload4(in_h1_idx + fw, input+inp_offset_base); + FLOAT4 in2 = (in_h2_idx < 0 || in_h2_idx >= in_hw_size) ? (FLOAT4)0 : vload4(in_h2_idx + fw, input+inp_offset_base); + FLOAT4 in3 = (in_h3_idx < 0 || in_h3_idx >= in_hw_size) ? (FLOAT4)0 : vload4(in_h3_idx + fw, input+inp_offset_base); + +#if (defined USE_LOW_BIT_WEIGHT_INT8) + char4 charWeight0 = vload4(0, weight+weight_offset); + char4 charWeight1 = vload4(0, weight+weight_offset+weight_oc_offset); + char4 charWeight2 = vload4(0, weight+weight_offset+weight_oc_offset*2); + char4 charWeight3 = vload4(0, weight+weight_offset+weight_oc_offset*3); + FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC4, dequantOffsetC4); +#else + uchar2 charWeightInt40 = vload2(0, weight+weight_offset/2); + uchar2 charWeightInt41 = vload2(0, weight+weight_offset/2+weight_oc_offset/2); + uchar2 charWeightInt42 = vload2(0, weight+weight_offset/2+weight_oc_offset*2/2); + uchar2 charWeightInt43 = vload2(0, weight+weight_offset/2+weight_oc_offset*3/2); + char4 charWeight0 = (char4)(0, 0, 0, 0); + char4 charWeight1 = (char4)(0, 0, 0, 0); + char4 charWeight2 = (char4)(0, 0, 0, 0); + char4 charWeight3 = (char4)(0, 0, 0, 0); + charWeight0.x = (charWeightInt40.s0 >> 4) - 8; + charWeight0.y = (charWeightInt40.s0 & MOD_NUM) - 8; + charWeight0.z = (charWeightInt40.s1 >> 4) - 8; + charWeight0.w = (charWeightInt40.s1 & MOD_NUM) - 8; + charWeight1.x = (charWeightInt41.s0 >> 4) - 8; + charWeight1.y = (charWeightInt41.s0 & MOD_NUM) - 8; + charWeight1.z = (charWeightInt41.s1 >> 4) - 8; + charWeight1.w = (charWeightInt41.s1 & MOD_NUM) - 8; + charWeight2.x = (charWeightInt42.s0 >> 4) - 8; + charWeight2.y = (charWeightInt42.s0 & MOD_NUM) - 8; + charWeight2.z = (charWeightInt42.s1 >> 4) - 8; + charWeight2.w = (charWeightInt42.s1 & MOD_NUM) - 8; + charWeight3.x = (charWeightInt43.s0 >> 4) - 8; + charWeight3.y = (charWeightInt43.s0 & MOD_NUM) - 8; + charWeight3.z = (charWeightInt43.s1 >> 4) - 8; + charWeight3.w = (charWeightInt43.s1 & MOD_NUM) - 8; + FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC4, dequantOffsetC4); + FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC4, dequantOffsetC4); +#endif + out0 = mad(in0.x, weight0, out0); + out0 = mad(in0.y, weight1, out0); + out0 = mad(in0.z, weight2, out0); + out0 = mad(in0.w, weight3, out0); + + out1 = mad(in1.x, weight0, out1); + out1 = mad(in1.y, weight1, out1); + out1 = mad(in1.z, weight2, out1); + out1 = mad(in1.w, weight3, out1); + + out2 = mad(in2.x, weight0, out2); + out2 = mad(in2.y, weight1, out2); + out2 = mad(in2.z, weight2, out2); + out2 = mad(in2.w, weight3, out2); + + out3 = mad(in3.x, weight0, out3); + out3 = mad(in3.y, weight1, out3); + out3 = mad(in3.z, weight2, out3); + out3 = mad(in3.w, weight3, out3); + + weight_offset += 4; + } + } + } +#ifdef RELU + out0 = fmax(out0, (FLOAT4)0); + out1 = fmax(out1, (FLOAT4)0); + out2 = fmax(out2, (FLOAT4)0); + out3 = fmax(out3, (FLOAT4)0); +#endif + +#ifdef RELU6 + out0 = clamp(out0, (FLOAT4)0, (FLOAT4)6); + out1 = clamp(out1, (FLOAT4)0, (FLOAT4)6); + out2 = clamp(out2, (FLOAT4)0, (FLOAT4)6); + out3 = clamp(out3, (FLOAT4)0, (FLOAT4)6); +#endif + + const int out_offset = (((out_b_idx*out_c_blocks + out_c_idx)*out_hw.x + out_h_idx)*out_hw.y + out_w_idx)*4; +#ifdef BLOCK_LEAVE + const int remain = out_hw.x - out_h_idx; + if(remain >= 4){ + vstore4(out0, 0, output+out_offset); + vstore4(out1, out_hw.y, output+out_offset); + vstore4(out2, 2 * out_hw.y, output+out_offset); + vstore4(out3, 3 * out_hw.y, output+out_offset); + }else if(remain == 3){ + vstore4(out0, 0, output+out_offset); + vstore4(out1, out_hw.y, output+out_offset); + vstore4(out2, 2 * out_hw.y, output+out_offset); + }else if(remain == 2){ + vstore4(out0, 0, output+out_offset); + vstore4(out1, out_hw.y, output+out_offset); + }else if(remain == 1){ + vstore4(out0, 0, output+out_offset); + } +#else + vstore4(out0, 0, output+out_offset); + vstore4(out1, out_hw.y, output+out_offset); + vstore4(out2, 2 * out_hw.y, output+out_offset); + vstore4(out3, 3 * out_hw.y, output+out_offset); +#endif +} + +__kernel +void conv_2d_int_c8h4w1(GLOBAL_SIZE_2_DIMS + __global const FLOAT *input, +#if (defined USE_LOW_BIT_WEIGHT_INT8) + __global const char *weight, +#else + __global const uchar *weight, +#endif + __global const FLOAT *dequantScale, + __global const FLOAT *dequantOffset, + __global const FLOAT *bias, + __global FLOAT *output, + __private const int2 in_hw, + __private const int inChannel, + __private const int in_c_blocks, + __private const int2 out_hw, + __private const int2 filter_hw, + __private const int2 stride_hw, + __private const int2 pad_hw, + __private const int2 dilate_hw, + __private const int out_w_blocks, + __private const int out_c_blocks, + __private const int out_h_blocks) { + const int out_c_w_idx = get_global_id(0); //c/4 w + const int out_b_h_idx = get_global_id(1); //b h + + DEAL_NON_UNIFORM_DIM2(out_c_w_idx, out_b_h_idx); + + const int out_c_idx = (out_c_w_idx / out_w_blocks) << 1; + const int out_w_idx = out_c_w_idx % out_w_blocks; + const int out_b_idx = out_b_h_idx / out_h_blocks;//equal to in_b_idx + const int out_h_idx = (out_b_h_idx % out_h_blocks) << 2; + + const FLOAT4 dequantScaleC03 = vload4(out_c_idx, dequantScale); + const FLOAT4 dequantOffsetC03 = vload4(out_c_idx, dequantOffset); + const FLOAT4 dequantScaleC47 = vload4(out_c_idx + 1, dequantScale); + const FLOAT4 dequantOffsetC47 = vload4(out_c_idx + 1, dequantOffset); + + FLOAT4 out0 = vload4(out_c_idx, bias); + FLOAT4 out1 = out0; + FLOAT4 out2 = out0; + FLOAT4 out3 = out0; + FLOAT4 out4 = vload4(out_c_idx + 1, bias); + FLOAT4 out5 = out4; + FLOAT4 out6 = out4; + FLOAT4 out7 = out4; + + const int in_w_idx_base = mad24(out_w_idx, stride_hw.y, -pad_hw.y); + + const int in_h0_idx_base = mad24(out_h_idx, stride_hw.x, -pad_hw.x); + const int in_h1_idx_base = in_h0_idx_base + stride_hw.x; + const int in_h2_idx_base = in_h1_idx_base + stride_hw.x; + const int in_h3_idx_base = in_h2_idx_base + stride_hw.x; + + const int kw_start = select(0, (-in_w_idx_base + dilate_hw.y - 1) / dilate_hw.y, in_w_idx_base < 0); + const int in_w_idx_start = mad24(kw_start, dilate_hw.y, in_w_idx_base); + const int in_w_idx_end = min(mad24(filter_hw.y, dilate_hw.y, in_w_idx_base), in_hw.y); + + const int weight_oc_offset = filter_hw.x * filter_hw.y * 4; + const int weight_ic_offset = out_c_blocks * weight_oc_offset; + const int in_hw_size = in_hw.x * in_hw.y; + for(ushort in_c_idx = 0; in_c_idx < in_c_blocks; in_c_idx++) { + //weights NC4HW4 [1, 4*icC4, ocC4*kh*kw, 1] xic4 + //index: [0, 4*in_c_idx, out_c_idx*kh*kw + kh_start*kw + kw_start, 0] + const int inp_offset_base = (out_b_idx * in_c_blocks + in_c_idx) * in_hw.x * in_hw.y * 4; + + for(int iy = 0; iy < filter_hw.x; iy++) { + int weight_offset = ((((4*in_c_idx+0)* out_c_blocks + out_c_idx) *filter_hw.x + iy)*filter_hw.y + kw_start) * 4; + const int in_h0_idx = (iy * dilate_hw.x + in_h0_idx_base) * in_hw.y; + const int in_h1_idx = (iy * dilate_hw.x + in_h1_idx_base) * in_hw.y; + const int in_h2_idx = (iy * dilate_hw.x + in_h2_idx_base) * in_hw.y; + const int in_h3_idx = (iy * dilate_hw.x + in_h3_idx_base) * in_hw.y; + + for(int fw = in_w_idx_start; fw < in_w_idx_end; fw += dilate_hw.y) { + FLOAT4 in0 = (in_h0_idx < 0 || in_h0_idx >= in_hw_size) ? (FLOAT4)0 : vload4(in_h0_idx + fw, input+inp_offset_base); + FLOAT4 in1 = (in_h1_idx < 0 || in_h1_idx >= in_hw_size) ? (FLOAT4)0 : vload4(in_h1_idx + fw, input+inp_offset_base); + FLOAT4 in2 = (in_h2_idx < 0 || in_h2_idx >= in_hw_size) ? (FLOAT4)0 : vload4(in_h2_idx + fw, input+inp_offset_base); + FLOAT4 in3 = (in_h3_idx < 0 || in_h3_idx >= in_hw_size) ? (FLOAT4)0 : vload4(in_h3_idx + fw, input+inp_offset_base); + +#if (defined USE_LOW_BIT_WEIGHT_INT8) + char4 charWeight0 = vload4(0, weight+weight_offset); + char4 charWeight1 = vload4(0, weight+weight_offset+weight_ic_offset); + char4 charWeight2 = vload4(0, weight+weight_offset+weight_ic_offset*2); + char4 charWeight3 = vload4(0, weight+weight_offset+weight_ic_offset*3); + FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC03, dequantOffsetC03); + FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC03, dequantOffsetC03); + FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC03, dequantOffsetC03); + FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC03, dequantOffsetC03); +#else + uchar2 charWeightInt40 = vload2(0, weight+weight_offset/2); + uchar2 charWeightInt41 = vload2(0, weight+weight_offset/2+weight_ic_offset/2); + uchar2 charWeightInt42 = vload2(0, weight+weight_offset/2+weight_ic_offset*2/2); + uchar2 charWeightInt43 = vload2(0, weight+weight_offset/2+weight_ic_offset*3/2); + char4 charWeight0 = (char4)(0, 0, 0, 0); + char4 charWeight1 = (char4)(0, 0, 0, 0); + char4 charWeight2 = (char4)(0, 0, 0, 0); + char4 charWeight3 = (char4)(0, 0, 0, 0); + charWeight0.x = (charWeightInt40.s0 >> 4) - 8; + charWeight0.y = (charWeightInt40.s0 & MOD_NUM) - 8; + charWeight0.z = (charWeightInt40.s1 >> 4) - 8; + charWeight0.w = (charWeightInt40.s1 & MOD_NUM) - 8; + charWeight1.x = (charWeightInt41.s0 >> 4) - 8; + charWeight1.y = (charWeightInt41.s0 & MOD_NUM) - 8; + charWeight1.z = (charWeightInt41.s1 >> 4) - 8; + charWeight1.w = (charWeightInt41.s1 & MOD_NUM) - 8; + charWeight2.x = (charWeightInt42.s0 >> 4) - 8; + charWeight2.y = (charWeightInt42.s0 & MOD_NUM) - 8; + charWeight2.z = (charWeightInt42.s1 >> 4) - 8; + charWeight2.w = (charWeightInt42.s1 & MOD_NUM)- 8; + charWeight3.x = (charWeightInt43.s0 >> 4) - 8; + charWeight3.y = (charWeightInt43.s0 & MOD_NUM) - 8; + charWeight3.z = (charWeightInt43.s1 >> 4) - 8; + charWeight3.w = (charWeightInt43.s1 & MOD_NUM) - 8; + FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC03, dequantOffsetC03); + FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC03, dequantOffsetC03); + FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC03, dequantOffsetC03); + FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC03, dequantOffsetC03); +#endif + + out0 = mad(in0.x, weight0, out0); + out0 = mad(in0.y, weight1, out0); + out0 = mad(in0.z, weight2, out0); + out0 = mad(in0.w, weight3, out0); + + out1 = mad(in1.x, weight0, out1); + out1 = mad(in1.y, weight1, out1); + out1 = mad(in1.z, weight2, out1); + out1 = mad(in1.w, weight3, out1); + + out2 = mad(in2.x, weight0, out2); + out2 = mad(in2.y, weight1, out2); + out2 = mad(in2.z, weight2, out2); + out2 = mad(in2.w, weight3, out2); + + out3 = mad(in3.x, weight0, out3); + out3 = mad(in3.y, weight1, out3); + out3 = mad(in3.z, weight2, out3); + out3 = mad(in3.w, weight3, out3); + +#if (defined USE_LOW_BIT_WEIGHT_INT8) + charWeight0 = vload4(0, weight+weight_offset+weight_oc_offset); + charWeight1 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset); + charWeight2 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset*2); + charWeight3 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset*3); + weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC47, dequantOffsetC47); + weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC47, dequantOffsetC47); + weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC47, dequantOffsetC47); + weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC47, dequantOffsetC47); +#else + charWeightInt40 = vload2(0, weight+weight_offset/2+weight_oc_offset/2); + charWeightInt41 = vload2(0, weight+weight_offset/2+weight_oc_offset/2+weight_ic_offset/2); + charWeightInt42 = vload2(0, weight+weight_offset/2+weight_oc_offset/2+weight_ic_offset*2/2); + charWeightInt43 = vload2(0, weight+weight_offset/2+weight_oc_offset/2+weight_ic_offset*3/2); + charWeight0 = (char4)(0, 0, 0, 0); + charWeight1 = (char4)(0, 0, 0, 0); + charWeight2 = (char4)(0, 0, 0, 0); + charWeight3 = (char4)(0, 0, 0, 0); + charWeight0.x = (charWeightInt40.s0 >> 4) - 8; + charWeight0.y = (charWeightInt40.s0 & MOD_NUM) - 8; + charWeight0.z = (charWeightInt40.s1 >> 4) - 8; + charWeight0.w = (charWeightInt40.s1 & MOD_NUM) - 8; + charWeight1.x = (charWeightInt41.s0 >> 4) - 8; + charWeight1.y = (charWeightInt41.s0 & MOD_NUM) - 8; + charWeight1.z = (charWeightInt41.s1 >> 4) - 8; + charWeight1.w = (charWeightInt41.s1 & MOD_NUM)- 8; + charWeight2.x = (charWeightInt42.s0 >> 4) - 8; + charWeight2.y = (charWeightInt42.s0 & MOD_NUM) - 8; + charWeight2.z = (charWeightInt42.s1 >> 4) - 8; + charWeight2.w = (charWeightInt42.s1 & MOD_NUM)- 8; + charWeight3.x = (charWeightInt43.s0 >> 4) - 8; + charWeight3.y = (charWeightInt43.s0 & MOD_NUM) - 8; + charWeight3.z = (charWeightInt43.s1 >> 4) - 8; + charWeight3.w = (charWeightInt43.s1 & MOD_NUM) - 8; + weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC47, dequantOffsetC47); + weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC47, dequantOffsetC47); + weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC47, dequantOffsetC47); + weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC47, dequantOffsetC47); +#endif + + out4 = mad(in0.x, weight0, out4); + out4 = mad(in0.y, weight1, out4); + out4 = mad(in0.z, weight2, out4); + out4 = mad(in0.w, weight3, out4); + + out5 = mad(in1.x, weight0, out5); + out5 = mad(in1.y, weight1, out5); + out5 = mad(in1.z, weight2, out5); + out5 = mad(in1.w, weight3, out5); + + out6 = mad(in2.x, weight0, out6); + out6 = mad(in2.y, weight1, out6); + out6 = mad(in2.z, weight2, out6); + out6 = mad(in2.w, weight3, out6); + + out7 = mad(in3.x, weight0, out7); + out7 = mad(in3.y, weight1, out7); + out7 = mad(in3.z, weight2, out7); + out7 = mad(in3.w, weight3, out7); + + weight_offset += 4; + } + } + } +#ifdef RELU + out0 = fmax(out0, (FLOAT4)0); + out1 = fmax(out1, (FLOAT4)0); + out2 = fmax(out2, (FLOAT4)0); + out3 = fmax(out3, (FLOAT4)0); + out4 = fmax(out4, (FLOAT4)0); + out5 = fmax(out5, (FLOAT4)0); + out6 = fmax(out6, (FLOAT4)0); + out7 = fmax(out7, (FLOAT4)0); +#endif + +#ifdef RELU6 + out0 = clamp(out0, (FLOAT4)0, (FLOAT4)6); + out1 = clamp(out1, (FLOAT4)0, (FLOAT4)6); + out2 = clamp(out2, (FLOAT4)0, (FLOAT4)6); + out3 = clamp(out3, (FLOAT4)0, (FLOAT4)6); + out4 = clamp(out4, (FLOAT4)0, (FLOAT4)6); + out5 = clamp(out5, (FLOAT4)0, (FLOAT4)6); + out6 = clamp(out6, (FLOAT4)0, (FLOAT4)6); + out7 = clamp(out7, (FLOAT4)0, (FLOAT4)6); +#endif + + int out_offset = (((out_b_idx*out_c_blocks + out_c_idx)*out_hw.x + out_h_idx)*out_hw.y + out_w_idx)*4; +#ifdef BLOCK_LEAVE + const int remain = out_hw.x - out_h_idx; + if(remain >= 4){ + vstore4(out0, 0, output+out_offset); + vstore4(out1, out_hw.y, output+out_offset); + vstore4(out2, 2 * out_hw.y, output+out_offset); + vstore4(out3, 3 * out_hw.y, output+out_offset); + }else if(remain == 3){ + vstore4(out0, 0, output+out_offset); + vstore4(out1, out_hw.y, output+out_offset); + vstore4(out2, 2 * out_hw.y, output+out_offset); + }else if(remain == 2){ + vstore4(out0, 0, output+out_offset); + vstore4(out1, out_hw.y, output+out_offset); + }else if(remain == 1){ + vstore4(out0, 0, output+out_offset); + } +#ifdef CHANNEL_LEAVE + if(out_c_idx + 1 >= out_c_blocks){ + return; + } +#endif + out_offset = (((out_b_idx*out_c_blocks + out_c_idx + 1)*out_hw.x + out_h_idx)*out_hw.y + out_w_idx)*4; + if(remain >= 4){ + vstore4(out4, 0, output+out_offset); + vstore4(out5, out_hw.y, output+out_offset); + vstore4(out6, 2 * out_hw.y, output+out_offset); + vstore4(out7, 3 * out_hw.y, output+out_offset); + }else if(remain == 3){ + vstore4(out4, 0, output+out_offset); + vstore4(out5, out_hw.y, output+out_offset); + vstore4(out6, 2 * out_hw.y, output+out_offset); + }else if(remain == 2){ + vstore4(out4, 0, output+out_offset); + vstore4(out5, out_hw.y, output+out_offset); + }else if(remain == 1){ + vstore4(out4, 0, output+out_offset); + } +#else + vstore4(out0, 0, output+out_offset); + vstore4(out1, out_hw.y, output+out_offset); + vstore4(out2, 2 * out_hw.y, output+out_offset); + vstore4(out3, 3 * out_hw.y, output+out_offset); +#ifdef CHANNEL_LEAVE + if(out_c_idx + 1 >= out_c_blocks){ + return; + } +#endif + out_offset = (((out_b_idx*out_c_blocks + out_c_idx + 1)*out_hw.x + out_h_idx)*out_hw.y + out_w_idx)*4; + vstore4(out4, 0, output+out_offset); + vstore4(out5, out_hw.y, output+out_offset); + vstore4(out6, 2 * out_hw.y, output+out_offset); + vstore4(out7, 3 * out_hw.y, output+out_offset); +#endif +} + +__kernel +void conv_2d_int_c8h2w1(GLOBAL_SIZE_2_DIMS + __global const FLOAT *input, +#if (defined USE_LOW_BIT_WEIGHT_INT8) + __global const char *weight, +#else + __global const uchar *weight, +#endif + __global const FLOAT *dequantScale, + __global const FLOAT *dequantOffset, + __global const FLOAT *bias, + __global FLOAT *output, + __private const int2 in_hw, + __private const int inChannel, + __private const int in_c_blocks, + __private const int2 out_hw, + __private const int2 filter_hw, + __private const int2 stride_hw, + __private const int2 pad_hw, + __private const int2 dilate_hw, + __private const int out_w_blocks, + __private const int out_c_blocks, + __private const int out_h_blocks) { + const int out_c_w_idx = get_global_id(0); //c/4 w + const int out_b_h_idx = get_global_id(1); //b h + + DEAL_NON_UNIFORM_DIM2(out_c_w_idx, out_b_h_idx); + + const int out_c_idx = (out_c_w_idx / out_w_blocks) << 1; + const int out_w_idx = out_c_w_idx % out_w_blocks; + const int out_b_idx = out_b_h_idx / out_h_blocks;//equal to in_b_idx + const int out_h_idx = (out_b_h_idx % out_h_blocks) << 1; + + const FLOAT4 dequantScaleC03 = vload4(out_c_idx, dequantScale); + const FLOAT4 dequantOffsetC03 = vload4(out_c_idx, dequantOffset); + const FLOAT4 dequantScaleC47 = vload4(out_c_idx + 1, dequantScale); + const FLOAT4 dequantOffsetC47 = vload4(out_c_idx + 1, dequantOffset); + + FLOAT4 out0 = vload4(out_c_idx, bias); + FLOAT4 out1 = out0; + FLOAT4 out2 = vload4(out_c_idx + 1, bias); + FLOAT4 out3 = out2; + + const int in_w_idx_base = mad24(out_w_idx, stride_hw.y, -pad_hw.y); + + const int in_h0_idx_base = mad24(out_h_idx, stride_hw.x, -pad_hw.x); + const int in_h1_idx_base = in_h0_idx_base + stride_hw.x; + + const int kw_start = select(0, (-in_w_idx_base + dilate_hw.y - 1) / dilate_hw.y, in_w_idx_base < 0); + const int in_w_idx_start = mad24(kw_start, dilate_hw.y, in_w_idx_base); + const int in_w_idx_end = min(mad24(filter_hw.y, dilate_hw.y, in_w_idx_base), in_hw.y); + + const int weight_oc_offset = filter_hw.x * filter_hw.y * 4; + const int weight_ic_offset = out_c_blocks * weight_oc_offset; + const int in_hw_size = in_hw.x * in_hw.y; + // weight: [ic/4, oc, 4], loop: ic/4 + for(ushort in_c_idx = 0; in_c_idx < in_c_blocks; in_c_idx++) { + //weights NC4HW4 [1, 4*icC4, ocC4*kh*kw, 1] xic4 + //index: [0, 4*in_c_idx, out_c_idx*kh*kw + kh_start*kw + kw_start, 0] + const int inp_offset_base = (out_b_idx * in_c_blocks + in_c_idx) * in_hw.x * in_hw.y * 4; + + for(int iy = 0; iy < filter_hw.x; iy++) { + int weight_offset = ((((4*in_c_idx+0)* out_c_blocks + out_c_idx) *filter_hw.x + iy)*filter_hw.y + kw_start) * 4; + const int in_h0_idx = (iy * dilate_hw.x + in_h0_idx_base) * in_hw.y; + const int in_h1_idx = (iy * dilate_hw.x + in_h1_idx_base) * in_hw.y; + + for(int fw = in_w_idx_start; fw < in_w_idx_end; fw += dilate_hw.y) { + FLOAT4 in0 = (in_h0_idx < 0 || in_h0_idx >= in_hw_size) ? (FLOAT4)0 : vload4(in_h0_idx + fw, input+inp_offset_base); + FLOAT4 in1 = (in_h1_idx < 0 || in_h1_idx >= in_hw_size) ? (FLOAT4)0 : vload4(in_h1_idx + fw, input+inp_offset_base); +#if (defined USE_LOW_BIT_WEIGHT_INT8) + char4 charWeight0 = vload4(0, weight+weight_offset); + char4 charWeight1 = vload4(0, weight+weight_offset+weight_ic_offset); + char4 charWeight2 = vload4(0, weight+weight_offset+weight_ic_offset*2); + char4 charWeight3 = vload4(0, weight+weight_offset+weight_ic_offset*3); + FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC03, dequantOffsetC03); + FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC03, dequantOffsetC03); + FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC03, dequantOffsetC03); + FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC03, dequantOffsetC03); +#else + uchar2 charWeightInt40 = vload2(0, weight+weight_offset/2); + uchar2 charWeightInt41 = vload2(0, weight+weight_offset/2+weight_ic_offset/2); + uchar2 charWeightInt42 = vload2(0, weight+weight_offset/2+weight_ic_offset*2/2); + uchar2 charWeightInt43 = vload2(0, weight+weight_offset/2+weight_ic_offset*3/2); + char4 charWeight0 = (char4)(0, 0, 0, 0); + char4 charWeight1 = (char4)(0, 0, 0, 0); + char4 charWeight2 = (char4)(0, 0, 0, 0); + char4 charWeight3 = (char4)(0, 0, 0, 0); + charWeight0.x = (charWeightInt40.s0 >> 4) - 8; + charWeight0.y = (charWeightInt40.s0 & MOD_NUM) - 8; + charWeight0.z = (charWeightInt40.s1 >> 4) - 8; + charWeight0.w = (charWeightInt40.s1 & MOD_NUM) - 8; + charWeight1.x = (charWeightInt41.s0 >> 4) - 8; + charWeight1.y = (charWeightInt41.s0 & MOD_NUM) - 8; + charWeight1.z = (charWeightInt41.s1 >> 4) - 8; + charWeight1.w = (charWeightInt41.s1 & MOD_NUM) - 8; + charWeight2.x = (charWeightInt42.s0 >> 4) - 8; + charWeight2.y = (charWeightInt42.s0 & MOD_NUM) - 8; + charWeight2.z = (charWeightInt42.s1 >> 4) - 8; + charWeight2.w = (charWeightInt42.s1 & MOD_NUM) - 8; + charWeight3.x = (charWeightInt43.s0 >> 4) - 8; + charWeight3.y = (charWeightInt43.s0 & MOD_NUM) - 8; + charWeight3.z = (charWeightInt43.s1 >> 4) - 8; + charWeight3.w = (charWeightInt43.s1 & MOD_NUM) - 8; + FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC03, dequantOffsetC03); + FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC03, dequantOffsetC03); + FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC03, dequantOffsetC03); + FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC03, dequantOffsetC03); +#endif + out0 = mad(in0.x, weight0, out0); + out0 = mad(in0.y, weight1, out0); + out0 = mad(in0.z, weight2, out0); + out0 = mad(in0.w, weight3, out0); + + out1 = mad(in1.x, weight0, out1); + out1 = mad(in1.y, weight1, out1); + out1 = mad(in1.z, weight2, out1); + out1 = mad(in1.w, weight3, out1); + +#if (defined USE_LOW_BIT_WEIGHT_INT8) + charWeight0 = vload4(0, weight+weight_offset+weight_oc_offset); + charWeight1 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset); + charWeight2 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset*2); + charWeight3 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset*3); + weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC47, dequantOffsetC47); + weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC47, dequantOffsetC47); + weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC47, dequantOffsetC47); + weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC47, dequantOffsetC47); +#else + charWeightInt40 = vload2(0, weight+weight_offset/2+weight_oc_offset/2); + charWeightInt41 = vload2(0, weight+weight_offset/2+weight_oc_offset/2+weight_ic_offset/2); + charWeightInt42 = vload2(0, weight+weight_offset/2+weight_oc_offset/2+weight_ic_offset*2/2); + charWeightInt43 = vload2(0, weight+weight_offset/2+weight_oc_offset/2+weight_ic_offset*3/2); + charWeight0 = (char4)(0, 0, 0, 0); + charWeight1 = (char4)(0, 0, 0, 0); + charWeight2 = (char4)(0, 0, 0, 0); + charWeight3 = (char4)(0, 0, 0, 0); + charWeight0.x = (charWeightInt40.s0 >> 4) - 8; + charWeight0.y = (charWeightInt40.s0& MOD_NUM) - 8; + charWeight0.z = (charWeightInt40.s1 >> 4) - 8; + charWeight0.w = (charWeightInt40.s1& MOD_NUM) - 8; + charWeight1.x = (charWeightInt41.s0 >> 4) - 8; + charWeight1.y = (charWeightInt41.s0& MOD_NUM) - 8; + charWeight1.z = (charWeightInt41.s1 >> 4) - 8; + charWeight1.w = (charWeightInt41.s1& MOD_NUM) - 8; + charWeight2.x = (charWeightInt42.s0 >> 4) - 8; + charWeight2.y = (charWeightInt42.s0& MOD_NUM) - 8; + charWeight2.z = (charWeightInt42.s1 >> 4) - 8; + charWeight2.w = (charWeightInt42.s1& MOD_NUM) - 8; + charWeight3.x = (charWeightInt43.s0 >> 4) - 8; + charWeight3.y = (charWeightInt43.s0& MOD_NUM) - 8; + charWeight3.z = (charWeightInt43.s1 >> 4) - 8; + charWeight3.w = (charWeightInt43.s1& MOD_NUM) - 8; + weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC47, dequantOffsetC47); + weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC47, dequantOffsetC47); + weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC47, dequantOffsetC47); + weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC47, dequantOffsetC47); +#endif + out2 = mad(in0.x, weight0, out2); + out2 = mad(in0.y, weight1, out2); + out2 = mad(in0.z, weight2, out2); + out2 = mad(in0.w, weight3, out2); + + out3 = mad(in1.x, weight0, out3); + out3 = mad(in1.y, weight1, out3); + out3 = mad(in1.z, weight2, out3); + out3 = mad(in1.w, weight3, out3); + + weight_offset += 4; + } + } + } +#ifdef RELU + out0 = fmax(out0, (FLOAT4)0); + out1 = fmax(out1, (FLOAT4)0); + out2 = fmax(out2, (FLOAT4)0); + out3 = fmax(out3, (FLOAT4)0); +#endif + +#ifdef RELU6 + out0 = clamp(out0, (FLOAT4)0, (FLOAT4)6); + out1 = clamp(out1, (FLOAT4)0, (FLOAT4)6); + out2 = clamp(out2, (FLOAT4)0, (FLOAT4)6); + out3 = clamp(out3, (FLOAT4)0, (FLOAT4)6); +#endif + + int out_offset = (((out_b_idx*out_c_blocks + out_c_idx)*out_hw.x + out_h_idx)*out_hw.y + out_w_idx)*4; +#ifdef BLOCK_LEAVE + const int remain = out_hw.x - out_h_idx; + if(remain >= 2){ + vstore4(out0, 0, output+out_offset); + vstore4(out1, out_hw.y, output+out_offset); + }else if(remain == 1){ + vstore4(out0, 0, output+out_offset); + } +#ifdef CHANNEL_LEAVE + if(out_c_idx + 1 >= out_c_blocks){ + return; + } +#endif + out_offset = (((out_b_idx*out_c_blocks + out_c_idx + 1)*out_hw.x + out_h_idx)*out_hw.y + out_w_idx)*4; + if(remain >= 2){ + vstore4(out2, 0, output+out_offset); + vstore4(out3, out_hw.y, output+out_offset); + }else if(remain == 1){ + vstore4(out2, 0, output+out_offset); + } +#else + vstore4(out0, 0, output+out_offset); + vstore4(out1, out_hw.y, output+out_offset); +#ifdef CHANNEL_LEAVE + if(out_c_idx + 1 >= out_c_blocks){ + return; + } +#endif + out_offset = (((out_b_idx*out_c_blocks + out_c_idx + 1)*out_hw.x + out_h_idx)*out_hw.y + out_w_idx)*4; + vstore4(out2, 0, output+out_offset); + vstore4(out3, out_hw.y, output+out_offset); +#endif +} + +__kernel +void conv_2d_int_c8h1w4(GLOBAL_SIZE_2_DIMS + __global const FLOAT *input, +#if (defined USE_LOW_BIT_WEIGHT_INT8) + __global const char *weight, +#else + __global const uchar *weight, +#endif + __global const FLOAT *dequantScale, + __global const FLOAT *dequantOffset, + __global const FLOAT *bias, + __global FLOAT *output, + __private const int2 in_hw, + __private const int inChannel, + __private const int in_c_blocks, + __private const int2 out_hw, + __private const int2 filter_hw, + __private const int2 stride_hw, + __private const int2 pad_hw, + __private const int2 dilate_hw, + __private const int out_w_blocks, + __private const int out_c_blocks, + __private const int out_h_blocks) { + const int out_c_w_idx = get_global_id(0); //c/4 w + const int out_b_h_idx = get_global_id(1); //b h + + DEAL_NON_UNIFORM_DIM2(out_c_w_idx, out_b_h_idx); + + const int out_c_idx = (out_c_w_idx / out_w_blocks) << 1; + const int out_w_idx = (out_c_w_idx % out_w_blocks) << 2; + const int out_b_idx = out_b_h_idx / out_hw.x;//equal to in_b_idx + const int out_h_idx = out_b_h_idx % out_hw.x; + + const FLOAT4 dequantScaleC03 = vload4(out_c_idx, dequantScale); + const FLOAT4 dequantOffsetC03 = vload4(out_c_idx, dequantOffset); + const FLOAT4 dequantScaleC47 = vload4(out_c_idx + 1, dequantScale); + const FLOAT4 dequantOffsetC47 = vload4(out_c_idx + 1, dequantOffset); + + FLOAT4 out0 = vload4(out_c_idx, bias); + FLOAT4 out1 = out0; + FLOAT4 out2 = out0; + FLOAT4 out3 = out0; + + FLOAT4 out4 = vload4(out_c_idx + 1, bias); + FLOAT4 out5 = out4; + FLOAT4 out6 = out4; + FLOAT4 out7 = out4; + + const int in_w0_idx_base = mad24(out_w_idx, stride_hw.y, -pad_hw.y); + const int in_w1_idx_base = in_w0_idx_base + stride_hw.y; + const int in_w2_idx_base = in_w1_idx_base + stride_hw.y; + const int in_w3_idx_base = in_w2_idx_base + stride_hw.y; + + const int in_h_idx_base = mad24(out_h_idx, stride_hw.x, -pad_hw.x); + + const int kh_start = select(0, (-in_h_idx_base + dilate_hw.x - 1) / dilate_hw.x, in_h_idx_base < 0); + const int in_h_idx_start = mad24(kh_start, dilate_hw.x, in_h_idx_base); + const int in_h_idx_end = min(mad24(filter_hw.x, dilate_hw.x, in_h_idx_base), in_hw.x); + + const int weight_oc_offset = filter_hw.x * filter_hw.y * 4; + const int weight_ic_offset = out_c_blocks * weight_oc_offset; + for(ushort in_c_idx = 0; in_c_idx < in_c_blocks; in_c_idx++) { + //weights NC4HW4 [1, 4*icC4, ocC4*kh*kw, 1] xic4 + //index: [0, 4*in_c_idx, out_c_idx*kh*kw + kh_start*kw + kw_start, 0] + int weight_offset = ((((4*in_c_idx+0)* out_c_blocks + out_c_idx) *filter_hw.x + kh_start)*filter_hw.y + 0) * 4; + + for(int iy = in_h_idx_start; iy < in_h_idx_end; iy += dilate_hw.x) { + const int inp_offset_base = (((out_b_idx * in_c_blocks + in_c_idx) * in_hw.x + iy) * in_hw.y + 0) * 4; + + for(int fw = 0; fw < filter_hw.y; fw++) { + const int in_w0_idx = fw * dilate_hw.y + in_w0_idx_base; + const int in_w1_idx = fw * dilate_hw.y + in_w1_idx_base; + const int in_w2_idx = fw * dilate_hw.y + in_w2_idx_base; + const int in_w3_idx = fw * dilate_hw.y + in_w3_idx_base; + + FLOAT4 in0 = (in_w0_idx < 0 || in_w0_idx >= in_hw.y) ? (FLOAT4)0 : vload4(in_w0_idx, input+inp_offset_base); + FLOAT4 in1 = (in_w1_idx < 0 || in_w1_idx >= in_hw.y) ? (FLOAT4)0 : vload4(in_w1_idx, input+inp_offset_base); + FLOAT4 in2 = (in_w2_idx < 0 || in_w2_idx >= in_hw.y) ? (FLOAT4)0 : vload4(in_w2_idx, input+inp_offset_base); + FLOAT4 in3 = (in_w3_idx < 0 || in_w3_idx >= in_hw.y) ? (FLOAT4)0 : vload4(in_w3_idx, input+inp_offset_base); + +#if (defined USE_LOW_BIT_WEIGHT_INT8) + char4 charWeight0 = vload4(0, weight+weight_offset); + char4 charWeight1 = vload4(0, weight+weight_offset+weight_ic_offset); + char4 charWeight2 = vload4(0, weight+weight_offset+weight_ic_offset*2); + char4 charWeight3 = vload4(0, weight+weight_offset+weight_ic_offset*3); + FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC03, dequantOffsetC03); + FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC03, dequantOffsetC03); + FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC03, dequantOffsetC03); + FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC03, dequantOffsetC03); +#else + uchar2 charWeightInt40 = vload2(0, weight+weight_offset/2); + uchar2 charWeightInt41 = vload2(0, weight+weight_offset/2+weight_ic_offset/2); + uchar2 charWeightInt42 = vload2(0, weight+weight_offset/2+weight_ic_offset*2/2); + uchar2 charWeightInt43 = vload2(0, weight+weight_offset/2+weight_ic_offset*3/2); + char4 charWeight0 = (char4)(0, 0, 0, 0); + char4 charWeight1 = (char4)(0, 0, 0, 0); + char4 charWeight2 = (char4)(0, 0, 0, 0); + char4 charWeight3 = (char4)(0, 0, 0, 0); + charWeight0.x = (charWeightInt40.s0 >> 4) - 8; + charWeight0.y = (charWeightInt40.s0 & MOD_NUM) - 8; + charWeight0.z = (charWeightInt40.s1 >> 4) - 8; + charWeight0.w = (charWeightInt40.s1 & MOD_NUM) - 8; + charWeight1.x = (charWeightInt41.s0 >> 4) - 8; + charWeight1.y = (charWeightInt41.s0 & MOD_NUM) - 8; + charWeight1.z = (charWeightInt41.s1 >> 4) - 8; + charWeight1.w = (charWeightInt41.s1 & MOD_NUM) - 8; + charWeight2.x = (charWeightInt42.s0 >> 4) - 8; + charWeight2.y = (charWeightInt42.s0 & MOD_NUM) - 8; + charWeight2.z = (charWeightInt42.s1 >> 4) - 8; + charWeight2.w = (charWeightInt42.s1 & MOD_NUM) - 8; + charWeight3.x = (charWeightInt43.s0 >> 4) - 8; + charWeight3.y = (charWeightInt43.s0 & MOD_NUM) - 8; + charWeight3.z = (charWeightInt43.s1 >> 4) - 8; + charWeight3.w = (charWeightInt43.s1 & MOD_NUM) - 8; + FLOAT4 weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC03, dequantOffsetC03); + FLOAT4 weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC03, dequantOffsetC03); + FLOAT4 weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC03, dequantOffsetC03); + FLOAT4 weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC03, dequantOffsetC03); +#endif + + out0 = mad(in0.x, weight0, out0); + out0 = mad(in0.y, weight1, out0); + out0 = mad(in0.z, weight2, out0); + out0 = mad(in0.w, weight3, out0); + + out1 = mad(in1.x, weight0, out1); + out1 = mad(in1.y, weight1, out1); + out1 = mad(in1.z, weight2, out1); + out1 = mad(in1.w, weight3, out1); + + out2 = mad(in2.x, weight0, out2); + out2 = mad(in2.y, weight1, out2); + out2 = mad(in2.z, weight2, out2); + out2 = mad(in2.w, weight3, out2); + + out3 = mad(in3.x, weight0, out3); + out3 = mad(in3.y, weight1, out3); + out3 = mad(in3.z, weight2, out3); + out3 = mad(in3.w, weight3, out3); + +#if (defined USE_LOW_BIT_WEIGHT_INT8) + charWeight0 = vload4(0, weight+weight_offset+weight_oc_offset); + charWeight1 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset); + charWeight2 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset*2); + charWeight3 = vload4(0, weight+weight_offset+weight_oc_offset+weight_ic_offset*3); + weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC47, dequantOffsetC47); + weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC47, dequantOffsetC47); + weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC47, dequantOffsetC47); + weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC47, dequantOffsetC47); +#else + charWeightInt40 = vload2(0, weight+weight_offset/2+weight_oc_offset/2); + charWeightInt41 = vload2(0, weight+weight_offset/2+weight_oc_offset/2+weight_ic_offset/2); + charWeightInt42 = vload2(0, weight+weight_offset/2+weight_oc_offset/2+weight_ic_offset*2/2); + charWeightInt43 = vload2(0, weight+weight_offset/2+weight_oc_offset/2+weight_ic_offset*3/2); + charWeight0 = (char4)(0, 0, 0, 0); + charWeight1 = (char4)(0, 0, 0, 0); + charWeight2 = (char4)(0, 0, 0, 0); + charWeight3 = (char4)(0, 0, 0, 0); + charWeight0.x = (charWeightInt40.s0 >> 4) - 8; + charWeight0.y = (charWeightInt40.s0 & MOD_NUM) - 8; + charWeight0.z = (charWeightInt40.s1 >> 4) - 8; + charWeight0.w = (charWeightInt40.s1 & MOD_NUM) - 8; + charWeight1.x = (charWeightInt41.s0 >> 4) - 8; + charWeight1.y = (charWeightInt41.s0 & MOD_NUM)- 8; + charWeight1.z = (charWeightInt41.s1 >> 4) - 8; + charWeight1.w = (charWeightInt41.s1 & MOD_NUM) - 8; + charWeight2.x = (charWeightInt42.s0 >> 4) - 8; + charWeight2.y = (charWeightInt42.s0 & MOD_NUM) - 8; + charWeight2.z = (charWeightInt42.s1 >> 4) - 8; + charWeight2.w = (charWeightInt42.s1 & MOD_NUM) - 8; + charWeight3.x = (charWeightInt43.s0 >> 4) - 8; + charWeight3.y = (charWeightInt43.s0 & MOD_NUM) - 8; + charWeight3.z = (charWeightInt43.s1 >> 4) - 8; + charWeight3.w = (charWeightInt43.s1 & MOD_NUM) - 8; + weight0 = mad(CONVERT_FLOAT4(charWeight0), dequantScaleC47, dequantOffsetC47); + weight1 = mad(CONVERT_FLOAT4(charWeight1), dequantScaleC47, dequantOffsetC47); + weight2 = mad(CONVERT_FLOAT4(charWeight2), dequantScaleC47, dequantOffsetC47); + weight3 = mad(CONVERT_FLOAT4(charWeight3), dequantScaleC47, dequantOffsetC47); +#endif + + out4 = mad(in0.x, weight0, out4); + out4 = mad(in0.y, weight1, out4); + out4 = mad(in0.z, weight2, out4); + out4 = mad(in0.w, weight3, out4); + + out5 = mad(in1.x, weight0, out5); + out5 = mad(in1.y, weight1, out5); + out5 = mad(in1.z, weight2, out5); + out5 = mad(in1.w, weight3, out5); + + out6 = mad(in2.x, weight0, out6); + out6 = mad(in2.y, weight1, out6); + out6 = mad(in2.z, weight2, out6); + out6 = mad(in2.w, weight3, out6); + + out7 = mad(in3.x, weight0, out7); + out7 = mad(in3.y, weight1, out7); + out7 = mad(in3.z, weight2, out7); + out7 = mad(in3.w, weight3, out7); + + weight_offset += 4; + } + } + } +#ifdef RELU + out0 = fmax(out0, (FLOAT4)0); + out1 = fmax(out1, (FLOAT4)0); + out2 = fmax(out2, (FLOAT4)0); + out3 = fmax(out3, (FLOAT4)0); + out4 = fmax(out4, (FLOAT4)0); + out5 = fmax(out5, (FLOAT4)0); + out6 = fmax(out6, (FLOAT4)0); + out7 = fmax(out7, (FLOAT4)0); +#endif + +#ifdef RELU6 + out0 = clamp(out0, (FLOAT4)0, (FLOAT4)6); + out1 = clamp(out1, (FLOAT4)0, (FLOAT4)6); + out2 = clamp(out2, (FLOAT4)0, (FLOAT4)6); + out3 = clamp(out3, (FLOAT4)0, (FLOAT4)6); + out4 = clamp(out4, (FLOAT4)0, (FLOAT4)6); + out5 = clamp(out5, (FLOAT4)0, (FLOAT4)6); + out6 = clamp(out6, (FLOAT4)0, (FLOAT4)6); + out7 = clamp(out7, (FLOAT4)0, (FLOAT4)6); +#endif + + int out_offset = (((out_b_idx*out_c_blocks + out_c_idx)*out_hw.x + out_h_idx)*out_hw.y + out_w_idx)*4; +#ifdef BLOCK_LEAVE + const int remain = out_hw.y - out_w_idx; + if(remain >= 4){ + vstore16((FLOAT16)(out0, out1, out2, out3), 0, output+out_offset); + }else if(remain == 3){ + vstore8((FLOAT8)(out0, out1), 0, output+out_offset); + vstore4(out2, 2, output+out_offset); + }else if(remain == 2){ + vstore8((FLOAT8)(out0, out1), 0, output+out_offset); + }else if(remain == 1){ + vstore4(out0, 0, output+out_offset); + } +#ifdef CHANNEL_LEAVE + if(out_c_idx + 1 >= out_c_blocks)return; +#endif + out_offset = (((out_b_idx*out_c_blocks + out_c_idx + 1)*out_hw.x + out_h_idx)*out_hw.y + out_w_idx)*4; + if(remain >= 4){ + vstore16((FLOAT16)(out4, out5, out6, out7), 0, output+out_offset); + }else if(remain == 3){ + vstore8((FLOAT8)(out4, out5), 0, output+out_offset); + vstore4(out6, 2, output+out_offset); + }else if(remain == 2){ + vstore8((FLOAT8)(out4, out5), 0, output+out_offset); + }else if(remain == 1){ + vstore4(out4, 0, output+out_offset); + } +#else + vstore16((FLOAT16)(out0, out1, out2, out3), 0, output+out_offset); +#ifdef CHANNEL_LEAVE + if(out_c_idx + 1 >= out_c_blocks)return; +#endif + out_offset = (((out_b_idx*out_c_blocks + out_c_idx + 1)*out_hw.x + out_h_idx)*out_hw.y + out_w_idx)*4; + vstore16((FLOAT16)(out4, out5, out6, out7), 0, output+out_offset); +#endif +} diff --git a/source/backend/opencl/execution/cl/gather_buf.cl b/source/backend/opencl/execution/cl/gather_buf.cl new file mode 100644 index 000000000..6e239ffef --- /dev/null +++ b/source/backend/opencl/execution/cl/gather_buf.cl @@ -0,0 +1,85 @@ +#ifdef MNN_SUPPORT_FP16 +#pragma OPENCL EXTENSION cl_khr_fp16 : enable +#endif + +__kernel void batch_gather_buf(__private int global_dim0, __private int global_dim1, __private int global_dim2, + __global OUTPUT_TYPE* output, __global INPUT_TYPE* input, + __global int* offset_dst, __global int* offset_src, + __private const int x_size, + __private const int4 stride_src, + __private const int4 stride_dst, + __private const int2 steps, + __private const int2 iters, + __private const int4 dst_c4size, + __private const int4 src_c4size, + __private const int inputSize) { + int3 pos = (int3)(get_global_id(0), get_global_id(1), get_global_id(2)); + + if (pos.x < global_dim0 && pos.y < global_dim1 && pos.z < global_dim2) { + + int x = pos.x % x_size; + int y = pos.x / x_size; + + int2 index = (int2)(pos.z, pos.z); + if (iters.x >= 0) { +#ifdef OFFSET_DST_CHANNEL_STRIDE4 + index.x = offset_dst[pos.z * 4]; +#else + index.x = offset_dst[pos.z]; +#endif + } + if (iters.y >= 0) { +#ifdef OFFSET_SRC_CHANNEL_STRIDE4 + index.y = offset_src[pos.z * 4]; +#else + index.y = offset_src[pos.z]; +#endif + + } + int2 offset = index * steps; + int src_offset = offset.y + stride_src.w + x * stride_src.x + y * stride_src.y + pos.y * stride_src.z; + int dst_offset = offset.x + stride_dst.w + x * stride_dst.x + y * stride_dst.y + pos.y * stride_dst.z; + int src_offsetC4, dst_offsetC4; + { +#ifdef GATHER_INPUT_NHWC + int c = src_offset % src_c4size.z; src_offset /= src_c4size.z; + int w = src_offset % src_c4size.x; src_offset /= src_c4size.x; + int h = src_offset % src_c4size.y; + int b = src_offset / src_c4size.y; + int c4_size = (src_c4size.z + 3) / 4; + src_offsetC4 = (((b * c4_size + (c / 4)) * src_c4size.y + h) * src_c4size.x + w) * 4 + (c % 4); +#else + int w = src_offset % src_c4size.x; src_offset /= src_c4size.x; + int h = src_offset % src_c4size.y; src_offset /= src_c4size.y; + int c = src_offset % src_c4size.z; + int b = src_offset / src_c4size.z; + int c4_size = (src_c4size.z + 3) / 4; + src_offsetC4 = (((b * c4_size + (c / 4)) * src_c4size.y + h) * src_c4size.x + w) * 4 + (c % 4); +#endif + } + { +#ifdef GATHER_OUTPUT_NHWC + int c = dst_offset % dst_c4size.z; dst_offset /= dst_c4size.z; + int w = dst_offset % dst_c4size.x; dst_offset /= dst_c4size.x; + int h = dst_offset % dst_c4size.y; + int b = dst_offset / dst_c4size.y; + int c4_size = (dst_c4size.z + 3) / 4; + dst_offsetC4 = (((b * c4_size + (c / 4)) * dst_c4size.y + h) * dst_c4size.x + w) * 4 + (c % 4); +#else + int w = dst_offset % dst_c4size.x; dst_offset /= dst_c4size.x; + int h = dst_offset % dst_c4size.y; dst_offset /= dst_c4size.y; + int c = dst_offset % dst_c4size.z; + int b = dst_offset / dst_c4size.z; + int c4_size = (dst_c4size.z + 3) / 4; + dst_offsetC4 = (((b * c4_size + (c / 4)) * dst_c4size.y + h) * dst_c4size.x + w) * 4 + (c % 4); +#endif + } + if(offset.x >= 0){ + if(offset.y >= 0 && offset.y < inputSize){ + output[dst_offsetC4] = (OUTPUT_TYPE)input[src_offsetC4]; + }else{ + output[dst_offsetC4] = (OUTPUT_TYPE)(0); + } + } + } +} diff --git a/source/backend/opencl/execution/cl/gemm.cl b/source/backend/opencl/execution/cl/gemm.cl index d3f9c6394..a3ec5d516 100644 --- a/source/backend/opencl/execution/cl/gemm.cl +++ b/source/backend/opencl/execution/cl/gemm.cl @@ -290,16 +290,15 @@ __kernel void gemm_conv(GLOBAL_SIZE_DIM2 #else __global const FLOAT *weight, #endif - __global const FLOAT *bias, + __read_only image2d_t bias, __write_only image2d_t output, __private const int dstChannelC4, __private const int srcChannelC4, __private const int batch) { int2 pos = (int2)(get_global_id(0), get_global_id(1)); //cout/4, b UNIFORM_BOUNDRY_CHECK(pos.x, pos.y); - int pos_x = pos.x << 2; - FLOAT4 bias0 = vload4(0, bias + pos_x); + FLOAT4 bias0 = RI_F(bias, SAMPLER, (int2)(pos.x, 0)); FLOAT sum = 0; FLOAT4 out = 0; @@ -383,7 +382,7 @@ __kernel void gemm_conv_b2(GLOBAL_SIZE_DIM2 #else __global const FLOAT *weight, #endif - __global const FLOAT *bias, + __read_only image2d_t bias, __write_only image2d_t output, __private const int dstChannelC4, __private const int srcChannelC4, @@ -393,7 +392,7 @@ __kernel void gemm_conv_b2(GLOBAL_SIZE_DIM2 int pos_x = pos.x << 2; int pos_y = pos.y << 1; - FLOAT4 bias0 = vload4(0, bias + pos_x); + FLOAT4 bias0 = RI_F(bias, SAMPLER, (int2)(pos.x, 0)); FLOAT sum0 = 0, sum1 = 0; FLOAT4 out0 = (FLOAT4)0, out1 = (FLOAT4)0; diff --git a/source/backend/opencl/execution/cl/gemm_buf.cl b/source/backend/opencl/execution/cl/gemm_buf.cl index 4a8213ca0..e6c307c9f 100644 --- a/source/backend/opencl/execution/cl/gemm_buf.cl +++ b/source/backend/opencl/execution/cl/gemm_buf.cl @@ -130,8 +130,7 @@ __kernel void gemm_buf2(GLOBAL_SIZE_DIM2 vstore4(o1.scdef, 1, output+out_offset+12*width); } - -__kernel void gemm_conv_buf(GLOBAL_SIZE_DIM2 +__kernel void gemm_conv_c4_buf(GLOBAL_SIZE_DIM2 __global const FLOAT* input, #if (defined USE_LOW_BIT_WEIGHT_INT8) __global const char *weight, @@ -148,66 +147,295 @@ __kernel void gemm_conv_buf(GLOBAL_SIZE_DIM2 __global FLOAT* output, __private const int dstChannelC4, __private const int srcChannelC4, - __private const int batch) { - int2 pos = (int2)(get_global_id(0), get_global_id(1)); //cout/4, b - UNIFORM_BOUNDRY_CHECK(pos.x, pos.y); - int pos_x = pos.x << 2; + __private const int batch, + __private const int height, + __private const int width) { + const int out_c_w_idx = get_global_id(0); //c/4 w + const int out_b_h_idx = get_global_id(1); //b h + + UNIFORM_BOUNDRY_CHECK(out_c_w_idx, out_b_h_idx); - FLOAT4 bias0 = vload4(0, bias + pos_x); + const int out_c_idx = out_c_w_idx / width; + const int out_w_idx = out_c_w_idx % width; + const int out_b_idx = out_b_h_idx / height; + const int out_h_idx = out_b_h_idx % height; + + FLOAT4 bias0 = vload4(out_c_idx, bias); FLOAT sum = 0; FLOAT4 out = 0; - int input_offset = pos.y * srcChannelC4 * 4; - int out_offset = pos.y * dstChannelC4 * 4; + int input_offset = ((out_b_idx * srcChannelC4 * height + out_h_idx) * width + out_w_idx) * 4; + int out_offset = ((out_b_idx * dstChannelC4 * height + out_h_idx) * width + out_w_idx) * 4; + int wh = width * height * 4; #if (defined USE_LOW_BIT_WEIGHT_INT4) - int weight_offset = pos.x * 8; - int weight_oc_offset = dstChannelC4 * 8; + int weight_offset = out_c_idx * 4 * 8; + int weight_oc_offset = dstChannelC4 * 32; #else - int weight_offset = pos.x * 16; - int weight_oc_offset = dstChannelC4 * 16; + int weight_offset = out_c_idx * 4 * 16; + int weight_oc_offset = dstChannelC4 * 64; #endif #if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - const FLOAT4 Scale = vload4(pos.x, dequantScale); - const FLOAT4 Offset = vload4(pos.x, dequantOffset); + const FLOAT4 Scale = vload4(out_c_idx, dequantScale); + const FLOAT4 Offset = vload4(out_c_idx, dequantOffset); +#endif +#ifdef INPUT_CHANNEL_LEAVE + for (int k = 0; k < srcChannelC4/4 - 1; ++k) { +#else + for (int k = 0; k < srcChannelC4/4; ++k) { +#endif +#ifdef WIDTH_HEIGHT_1 + FLOAT16 in = vload16(k, input + input_offset); +#else + int k4 = k << 2; + FLOAT16 in; + in.s0123 = vload4(0, input + input_offset + k4 * wh); + in.s4567 = vload4(0, input + input_offset + (k4 + 1) * wh); + in.s89ab = vload4(0, input + input_offset + (k4 + 2) * wh); + in.scdef = vload4(0, input + input_offset + (k4 + 3) * wh); #endif - - for (int k = 0; k < srcChannelC4; ++k) { - FLOAT4 in = vload4(k, input + input_offset); #if (defined USE_LOW_BIT_WEIGHT_INT8) - FLOAT16 weights = CONVERT_FLOAT16(vload16(0, weight + weight_offset + k * weight_oc_offset)); - sum += in.x + in.y + in.z + in.w; + FLOAT16 weights0 = CONVERT_FLOAT16(vload16(0, weight + weight_offset + k * weight_oc_offset)); + FLOAT16 weights1 = CONVERT_FLOAT16(vload16(0, weight + weight_offset + k * weight_oc_offset + 16)); + FLOAT16 weights2 = CONVERT_FLOAT16(vload16(0, weight + weight_offset + k * weight_oc_offset + 32)); + FLOAT16 weights3 = CONVERT_FLOAT16(vload16(0, weight + weight_offset + k * weight_oc_offset + 48)); + sum += in.s0 + in.s1 + in.s2 + in.s3 + in.s4 + in.s5 + in.s6 + in.s7 + in.s8 + in.s9 + in.sa + in.sb + in.sc + in.sd + in.se + in.sf; #elif (defined USE_LOW_BIT_WEIGHT_INT4) - uchar8 charWeightsInt4 = vload8(0, weight + weight_offset + k * weight_oc_offset); - char16 charWeights = 0; - charWeights.s0 = (charWeightsInt4.s0 >> 4) - 8; - charWeights.s1 = (charWeightsInt4.s0 & 15) - 8; - charWeights.s2 = (charWeightsInt4.s1 >> 4) - 8; - charWeights.s3 = (charWeightsInt4.s1 & 15) - 8; - charWeights.s4 = (charWeightsInt4.s2 >> 4) - 8; - charWeights.s5 = (charWeightsInt4.s2 & 15) - 8; - charWeights.s6 = (charWeightsInt4.s3 >> 4) - 8; - charWeights.s7 = (charWeightsInt4.s3 & 15) - 8; - charWeights.s8 = (charWeightsInt4.s4 >> 4) - 8; - charWeights.s9 = (charWeightsInt4.s4 & 15) - 8; - charWeights.sa = (charWeightsInt4.s5 >> 4) - 8; - charWeights.sb = (charWeightsInt4.s5 & 15) - 8; - charWeights.sc = (charWeightsInt4.s6 >> 4) - 8; - charWeights.sd = (charWeightsInt4.s6 & 15) - 8; - charWeights.se = (charWeightsInt4.s7 >> 4) - 8; - charWeights.sf = (charWeightsInt4.s7 & 15) - 8; - FLOAT16 weights = CONVERT_FLOAT16(charWeights); - sum += in.x + in.y + in.z + in.w; + uchar16 charWeightsInt40 = vload16(0, weight + weight_offset + k * weight_oc_offset); + uchar16 charWeightsInt41 = vload16(0, weight + weight_offset + k * weight_oc_offset + 16); + FLOAT16 weights0, weights1, weights2, weights3; + { + char16 charWeights0 = 0; + char16 charWeights1 = 0; + charWeights0.s0 = (charWeightsInt40.s0 >> 4) - 8; + charWeights0.s1 = (charWeightsInt40.s0 & 15) - 8; + charWeights0.s2 = (charWeightsInt40.s1 >> 4) - 8; + charWeights0.s3 = (charWeightsInt40.s1 & 15) - 8; + charWeights0.s4 = (charWeightsInt40.s2 >> 4) - 8; + charWeights0.s5 = (charWeightsInt40.s2 & 15) - 8; + charWeights0.s6 = (charWeightsInt40.s3 >> 4) - 8; + charWeights0.s7 = (charWeightsInt40.s3 & 15) - 8; + charWeights0.s8 = (charWeightsInt40.s4 >> 4) - 8; + charWeights0.s9 = (charWeightsInt40.s4 & 15) - 8; + charWeights0.sa = (charWeightsInt40.s5 >> 4) - 8; + charWeights0.sb = (charWeightsInt40.s5 & 15) - 8; + charWeights0.sc = (charWeightsInt40.s6 >> 4) - 8; + charWeights0.sd = (charWeightsInt40.s6 & 15) - 8; + charWeights0.se = (charWeightsInt40.s7 >> 4) - 8; + charWeights0.sf = (charWeightsInt40.s7 & 15) - 8; + charWeights1.s0 = (charWeightsInt40.s8 >> 4) - 8; + charWeights1.s1 = (charWeightsInt40.s8 & 15) - 8; + charWeights1.s2 = (charWeightsInt40.s9 >> 4) - 8; + charWeights1.s3 = (charWeightsInt40.s9 & 15) - 8; + charWeights1.s4 = (charWeightsInt40.sa >> 4) - 8; + charWeights1.s5 = (charWeightsInt40.sa & 15) - 8; + charWeights1.s6 = (charWeightsInt40.sb >> 4) - 8; + charWeights1.s7 = (charWeightsInt40.sb & 15) - 8; + charWeights1.s8 = (charWeightsInt40.sc >> 4) - 8; + charWeights1.s9 = (charWeightsInt40.sc & 15) - 8; + charWeights1.sa = (charWeightsInt40.sd >> 4) - 8; + charWeights1.sb = (charWeightsInt40.sd & 15) - 8; + charWeights1.sc = (charWeightsInt40.se >> 4) - 8; + charWeights1.sd = (charWeightsInt40.se & 15) - 8; + charWeights1.se = (charWeightsInt40.sf >> 4) - 8; + charWeights1.sf = (charWeightsInt40.sf & 15) - 8; + weights0 = CONVERT_FLOAT16(charWeights0); + weights1 = CONVERT_FLOAT16(charWeights1); + } + + { + char16 charWeights0 = 0; + char16 charWeights1 = 0; + charWeights0.s0 = (charWeightsInt41.s0 >> 4) - 8; + charWeights0.s1 = (charWeightsInt41.s0 & 15) - 8; + charWeights0.s2 = (charWeightsInt41.s1 >> 4) - 8; + charWeights0.s3 = (charWeightsInt41.s1 & 15) - 8; + charWeights0.s4 = (charWeightsInt41.s2 >> 4) - 8; + charWeights0.s5 = (charWeightsInt41.s2 & 15) - 8; + charWeights0.s6 = (charWeightsInt41.s3 >> 4) - 8; + charWeights0.s7 = (charWeightsInt41.s3 & 15) - 8; + charWeights0.s8 = (charWeightsInt41.s4 >> 4) - 8; + charWeights0.s9 = (charWeightsInt41.s4 & 15) - 8; + charWeights0.sa = (charWeightsInt41.s5 >> 4) - 8; + charWeights0.sb = (charWeightsInt41.s5 & 15) - 8; + charWeights0.sc = (charWeightsInt41.s6 >> 4) - 8; + charWeights0.sd = (charWeightsInt41.s6 & 15) - 8; + charWeights0.se = (charWeightsInt41.s7 >> 4) - 8; + charWeights0.sf = (charWeightsInt41.s7 & 15) - 8; + charWeights1.s0 = (charWeightsInt41.s8 >> 4) - 8; + charWeights1.s1 = (charWeightsInt41.s8 & 15) - 8; + charWeights1.s2 = (charWeightsInt41.s9 >> 4) - 8; + charWeights1.s3 = (charWeightsInt41.s9 & 15) - 8; + charWeights1.s4 = (charWeightsInt41.sa >> 4) - 8; + charWeights1.s5 = (charWeightsInt41.sa & 15) - 8; + charWeights1.s6 = (charWeightsInt41.sb >> 4) - 8; + charWeights1.s7 = (charWeightsInt41.sb & 15) - 8; + charWeights1.s8 = (charWeightsInt41.sc >> 4) - 8; + charWeights1.s9 = (charWeightsInt41.sc & 15) - 8; + charWeights1.sa = (charWeightsInt41.sd >> 4) - 8; + charWeights1.sb = (charWeightsInt41.sd & 15) - 8; + charWeights1.sc = (charWeightsInt41.se >> 4) - 8; + charWeights1.sd = (charWeightsInt41.se & 15) - 8; + charWeights1.se = (charWeightsInt41.sf >> 4) - 8; + charWeights1.sf = (charWeightsInt41.sf & 15) - 8; + weights2 = CONVERT_FLOAT16(charWeights0); + weights3 = CONVERT_FLOAT16(charWeights1); + } + sum += in.s0 + in.s1 + in.s2 + in.s3 + in.s4 + in.s5 + in.s6 + in.s7 + in.s8 + in.s9 + in.sa + in.sb + in.sc + in.sd + in.se + in.sf; #else - FLOAT16 weights = vload16(0, weight + weight_offset + k * weight_oc_offset); + FLOAT16 weights0 = vload16(0, weight + weight_offset + k * weight_oc_offset); + FLOAT16 weights1 = vload16(0, weight + weight_offset + k * weight_oc_offset + 16); + FLOAT16 weights2 = vload16(0, weight + weight_offset + k * weight_oc_offset + 32); + FLOAT16 weights3 = vload16(0, weight + weight_offset + k * weight_oc_offset + 48); +#endif + + out.s0 += dot(in.s0123, weights0.s0123); + out.s0 += dot(in.s4567, weights0.s4567); + out.s0 += dot(in.s89ab, weights0.s89ab); + out.s0 += dot(in.scdef, weights0.scdef); + + out.s1 += dot(in.s0123, weights1.s0123); + out.s1 += dot(in.s4567, weights1.s4567); + out.s1 += dot(in.s89ab, weights1.s89ab); + out.s1 += dot(in.scdef, weights1.scdef); + + out.s2 += dot(in.s0123, weights2.s0123); + out.s2 += dot(in.s4567, weights2.s4567); + out.s2 += dot(in.s89ab, weights2.s89ab); + out.s2 += dot(in.scdef, weights2.scdef); + + out.s3 += dot(in.s0123, weights3.s0123); + out.s3 += dot(in.s4567, weights3.s4567); + out.s3 += dot(in.s89ab, weights3.s89ab); + out.s3 += dot(in.scdef, weights3.scdef); + } +#ifdef INPUT_CHANNEL_LEAVE + { + int k = srcChannelC4/4 - 1; + int k4 = k * 4; + FLOAT16 in; + in.s0123 = vload4(0, input + input_offset + k4 * wh); + in.s4567 = k4 + 1 < srcChannelC4 ? vload4(0, input + input_offset + (k4 + 1) * wh) : (FLOAT4)0; + in.s89ab = k4 + 2 < srcChannelC4 ? vload4(0, input + input_offset + (k4 + 2) * wh) : (FLOAT4)0; + in.scdef = k4 + 3 < srcChannelC4 ? vload4(0, input + input_offset + (k4 + 3) * wh) : (FLOAT4)0; +#if (defined USE_LOW_BIT_WEIGHT_INT8) + FLOAT16 weights0 = CONVERT_FLOAT16(vload16(0, weight + weight_offset + k * weight_oc_offset)); + FLOAT16 weights1 = CONVERT_FLOAT16(vload16(0, weight + weight_offset + k * weight_oc_offset + 16)); + FLOAT16 weights2 = CONVERT_FLOAT16(vload16(0, weight + weight_offset + k * weight_oc_offset + 32)); + FLOAT16 weights3 = CONVERT_FLOAT16(vload16(0, weight + weight_offset + k * weight_oc_offset + 48)); + sum += in.s0 + in.s1 + in.s2 + in.s3 + in.s4 + in.s5 + in.s6 + in.s7 + in.s8 + in.s9 + in.sa + in.sb + in.sc + in.sd + in.se + in.sf; +#elif (defined USE_LOW_BIT_WEIGHT_INT4) + uchar16 charWeightsInt40 = vload16(0, weight + weight_offset + k * weight_oc_offset); + uchar16 charWeightsInt41 = vload16(0, weight + weight_offset + k * weight_oc_offset + 16); + FLOAT16 weights0, weights1, weights2, weights3; + { + char16 charWeights0 = 0; + char16 charWeights1 = 0; + charWeights0.s0 = (charWeightsInt40.s0 >> 4) - 8; + charWeights0.s1 = (charWeightsInt40.s0 & 15) - 8; + charWeights0.s2 = (charWeightsInt40.s1 >> 4) - 8; + charWeights0.s3 = (charWeightsInt40.s1 & 15) - 8; + charWeights0.s4 = (charWeightsInt40.s2 >> 4) - 8; + charWeights0.s5 = (charWeightsInt40.s2 & 15) - 8; + charWeights0.s6 = (charWeightsInt40.s3 >> 4) - 8; + charWeights0.s7 = (charWeightsInt40.s3 & 15) - 8; + charWeights0.s8 = (charWeightsInt40.s4 >> 4) - 8; + charWeights0.s9 = (charWeightsInt40.s4 & 15) - 8; + charWeights0.sa = (charWeightsInt40.s5 >> 4) - 8; + charWeights0.sb = (charWeightsInt40.s5 & 15) - 8; + charWeights0.sc = (charWeightsInt40.s6 >> 4) - 8; + charWeights0.sd = (charWeightsInt40.s6 & 15) - 8; + charWeights0.se = (charWeightsInt40.s7 >> 4) - 8; + charWeights0.sf = (charWeightsInt40.s7 & 15) - 8; + charWeights1.s0 = (charWeightsInt40.s8 >> 4) - 8; + charWeights1.s1 = (charWeightsInt40.s8 & 15) - 8; + charWeights1.s2 = (charWeightsInt40.s9 >> 4) - 8; + charWeights1.s3 = (charWeightsInt40.s9 & 15) - 8; + charWeights1.s4 = (charWeightsInt40.sa >> 4) - 8; + charWeights1.s5 = (charWeightsInt40.sa & 15) - 8; + charWeights1.s6 = (charWeightsInt40.sb >> 4) - 8; + charWeights1.s7 = (charWeightsInt40.sb & 15) - 8; + charWeights1.s8 = (charWeightsInt40.sc >> 4) - 8; + charWeights1.s9 = (charWeightsInt40.sc & 15) - 8; + charWeights1.sa = (charWeightsInt40.sd >> 4) - 8; + charWeights1.sb = (charWeightsInt40.sd & 15) - 8; + charWeights1.sc = (charWeightsInt40.se >> 4) - 8; + charWeights1.sd = (charWeightsInt40.se & 15) - 8; + charWeights1.se = (charWeightsInt40.sf >> 4) - 8; + charWeights1.sf = (charWeightsInt40.sf & 15) - 8; + weights0 = CONVERT_FLOAT16(charWeights0); + weights1 = CONVERT_FLOAT16(charWeights1); + } + + { + char16 charWeights0 = 0; + char16 charWeights1 = 0; + charWeights0.s0 = (charWeightsInt41.s0 >> 4) - 8; + charWeights0.s1 = (charWeightsInt41.s0 & 15) - 8; + charWeights0.s2 = (charWeightsInt41.s1 >> 4) - 8; + charWeights0.s3 = (charWeightsInt41.s1 & 15) - 8; + charWeights0.s4 = (charWeightsInt41.s2 >> 4) - 8; + charWeights0.s5 = (charWeightsInt41.s2 & 15) - 8; + charWeights0.s6 = (charWeightsInt41.s3 >> 4) - 8; + charWeights0.s7 = (charWeightsInt41.s3 & 15) - 8; + charWeights0.s8 = (charWeightsInt41.s4 >> 4) - 8; + charWeights0.s9 = (charWeightsInt41.s4 & 15) - 8; + charWeights0.sa = (charWeightsInt41.s5 >> 4) - 8; + charWeights0.sb = (charWeightsInt41.s5 & 15) - 8; + charWeights0.sc = (charWeightsInt41.s6 >> 4) - 8; + charWeights0.sd = (charWeightsInt41.s6 & 15) - 8; + charWeights0.se = (charWeightsInt41.s7 >> 4) - 8; + charWeights0.sf = (charWeightsInt41.s7 & 15) - 8; + charWeights1.s0 = (charWeightsInt41.s8 >> 4) - 8; + charWeights1.s1 = (charWeightsInt41.s8 & 15) - 8; + charWeights1.s2 = (charWeightsInt41.s9 >> 4) - 8; + charWeights1.s3 = (charWeightsInt41.s9 & 15) - 8; + charWeights1.s4 = (charWeightsInt41.sa >> 4) - 8; + charWeights1.s5 = (charWeightsInt41.sa & 15) - 8; + charWeights1.s6 = (charWeightsInt41.sb >> 4) - 8; + charWeights1.s7 = (charWeightsInt41.sb & 15) - 8; + charWeights1.s8 = (charWeightsInt41.sc >> 4) - 8; + charWeights1.s9 = (charWeightsInt41.sc & 15) - 8; + charWeights1.sa = (charWeightsInt41.sd >> 4) - 8; + charWeights1.sb = (charWeightsInt41.sd & 15) - 8; + charWeights1.sc = (charWeightsInt41.se >> 4) - 8; + charWeights1.sd = (charWeightsInt41.se & 15) - 8; + charWeights1.se = (charWeightsInt41.sf >> 4) - 8; + charWeights1.sf = (charWeightsInt41.sf & 15) - 8; + weights2 = CONVERT_FLOAT16(charWeights0); + weights3 = CONVERT_FLOAT16(charWeights1); + } + sum += in.s0 + in.s1 + in.s2 + in.s3 + in.s4 + in.s5 + in.s6 + in.s7 + in.s8 + in.s9 + in.sa + in.sb + in.sc + in.sd + in.se + in.sf; + +#else + FLOAT16 weights0 = vload16(0, weight + weight_offset + k * weight_oc_offset); + FLOAT16 weights1 = vload16(0, weight + weight_offset + k * weight_oc_offset + 16); + FLOAT16 weights2 = vload16(0, weight + weight_offset + k * weight_oc_offset + 32); + FLOAT16 weights3 = vload16(0, weight + weight_offset + k * weight_oc_offset + 48); #endif - out = mad((FLOAT4)in.x, (FLOAT4)weights.s0123, out); - out = mad((FLOAT4)in.y, (FLOAT4)weights.s4567, out); - out = mad((FLOAT4)in.z, (FLOAT4)weights.s89ab, out); - out = mad((FLOAT4)in.w, (FLOAT4)weights.scdef, out); + out.s0 += dot(in.s0123, weights0.s0123); + out.s0 += dot(in.s4567, weights0.s4567); + out.s0 += dot(in.s89ab, weights0.s89ab); + out.s0 += dot(in.scdef, weights0.scdef); + + out.s1 += dot(in.s0123, weights1.s0123); + out.s1 += dot(in.s4567, weights1.s4567); + out.s1 += dot(in.s89ab, weights1.s89ab); + out.s1 += dot(in.scdef, weights1.scdef); + + out.s2 += dot(in.s0123, weights2.s0123); + out.s2 += dot(in.s4567, weights2.s4567); + out.s2 += dot(in.s89ab, weights2.s89ab); + out.s2 += dot(in.scdef, weights2.scdef); + + out.s3 += dot(in.s0123, weights3.s0123); + out.s3 += dot(in.s4567, weights3.s4567); + out.s3 += dot(in.s89ab, weights3.s89ab); + out.s3 += dot(in.scdef, weights3.scdef); } +#endif #if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) out = bias0 + mad(out, Scale, sum * Offset); @@ -220,11 +448,11 @@ __kernel void gemm_conv_buf(GLOBAL_SIZE_DIM2 out = clamp(out, (FLOAT4)0, (FLOAT4)6); #endif - vstore4(out, pos.x, output+out_offset); + vstore4(out, out_c_idx, output+out_offset); } -__kernel void gemm_conv_b2_buf(GLOBAL_SIZE_DIM2 - __global const FLOAT *input, +__kernel void gemm_conv_c2_buf(GLOBAL_SIZE_DIM2 + __global const FLOAT* input, #if (defined USE_LOW_BIT_WEIGHT_INT8) __global const char *weight, __global const FLOAT *dequantScale, @@ -237,41 +465,266 @@ __kernel void gemm_conv_b2_buf(GLOBAL_SIZE_DIM2 __global const FLOAT *weight, #endif __global const FLOAT *bias, - __global FLOAT *output, + __global FLOAT* output, __private const int dstChannelC4, __private const int srcChannelC4, - __private const int batch) { - int2 pos = (int2)(get_global_id(0), get_global_id(1)); //cout/4, b - UNIFORM_BOUNDRY_CHECK(pos.x, pos.y); - int pos_x = pos.x << 2; - int pos_y = pos.y << 1; + __private const int batch, + __private const int height, + __private const int width) { + const int out_c_w_idx = get_global_id(0); //c/4 w + const int out_b_h_idx = get_global_id(1); //b h + + UNIFORM_BOUNDRY_CHECK(out_c_w_idx, out_b_h_idx); + + const int out_c_idx = out_c_w_idx / width; + const int out_w_idx = out_c_w_idx % width; + const int out_b_idx = out_b_h_idx / height; + const int out_h_idx = out_b_h_idx % height; - FLOAT4 bias0 = vload4(0, bias + pos_x); - FLOAT sum0 = 0, sum1 = 0; - FLOAT4 out0 = (FLOAT4)0, out1 = (FLOAT4)0; + FLOAT2 bias0 = vload2(out_c_idx, bias); + FLOAT sum = 0; + FLOAT2 out = 0; - int input_offset = pos_y * srcChannelC4 * 4; - int out_offset = pos_y * dstChannelC4 * 4; + int input_offset = ((out_b_idx * srcChannelC4 * height + out_h_idx) * width + out_w_idx) * 4; + int out_offset = ((out_b_idx * dstChannelC4 * height + out_h_idx) * width + out_w_idx) * 4; + int wh = width * height * 4; #if (defined USE_LOW_BIT_WEIGHT_INT4) - int weight_offset = pos.x * 8; - int weight_oc_offset = dstChannelC4 * 8; + int weight_offset = out_c_idx * 2 * 8; + int weight_oc_offset = dstChannelC4 * 32; #else - int weight_offset = pos.x * 16; - int weight_oc_offset = dstChannelC4 * 16; + int weight_offset = out_c_idx * 2 * 16; + int weight_oc_offset = dstChannelC4 * 64; #endif #if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - const FLOAT4 Scale = vload4(pos.x, dequantScale); - const FLOAT4 Offset = vload4(pos.x, dequantOffset); + const FLOAT2 Scale = vload2(out_c_idx, dequantScale); + const FLOAT2 Offset = vload2(out_c_idx, dequantOffset); #endif - for (int k = 0; k < srcChannelC4; ++k) { - FLOAT4 in0 = vload4(k, input + input_offset); - FLOAT4 in1 = vload4(k, input + input_offset + srcChannelC4 * 4); +#ifdef INPUT_CHANNEL_LEAVE + for (int k = 0; k < srcChannelC4/4 - 1; ++k) { +#else + for (int k = 0; k < srcChannelC4/4; ++k) { +#endif +#ifdef WIDTH_HEIGHT_1 + FLOAT16 in = vload16(k, input + input_offset); +#else + FLOAT16 in; + int k4 = k << 2; + in.s0123 = vload4(0, input + input_offset + k4 * wh); + in.s4567 = vload4(0, input + input_offset + (k4 + 1) * wh); + in.s89ab = vload4(0, input + input_offset + (k4 + 2) * wh); + in.scdef = vload4(0, input + input_offset + (k4 + 3) * wh); +#endif +#if (defined USE_LOW_BIT_WEIGHT_INT8) + FLOAT16 weights0 = CONVERT_FLOAT16(vload16(0, weight + weight_offset + k * weight_oc_offset)); + FLOAT16 weights1 = CONVERT_FLOAT16(vload16(0, weight + weight_offset + k * weight_oc_offset + 16)); + sum += in.s0 + in.s1 + in.s2 + in.s3 + in.s4 + in.s5 + in.s6 + in.s7 + in.s8 + in.s9 + in.sa + in.sb + in.sc + in.sd + in.se + in.sf; +#elif (defined USE_LOW_BIT_WEIGHT_INT4) + uchar16 charWeightsInt4 = vload16(0, weight + weight_offset + k * weight_oc_offset); + char16 charWeights0 = 0; + char16 charWeights1 = 0; + charWeights0.s0 = (charWeightsInt4.s0 >> 4) - 8; + charWeights0.s1 = (charWeightsInt4.s0 & 15) - 8; + charWeights0.s2 = (charWeightsInt4.s1 >> 4) - 8; + charWeights0.s3 = (charWeightsInt4.s1 & 15) - 8; + charWeights0.s4 = (charWeightsInt4.s2 >> 4) - 8; + charWeights0.s5 = (charWeightsInt4.s2 & 15) - 8; + charWeights0.s6 = (charWeightsInt4.s3 >> 4) - 8; + charWeights0.s7 = (charWeightsInt4.s3 & 15) - 8; + charWeights0.s8 = (charWeightsInt4.s4 >> 4) - 8; + charWeights0.s9 = (charWeightsInt4.s4 & 15) - 8; + charWeights0.sa = (charWeightsInt4.s5 >> 4) - 8; + charWeights0.sb = (charWeightsInt4.s5 & 15) - 8; + charWeights0.sc = (charWeightsInt4.s6 >> 4) - 8; + charWeights0.sd = (charWeightsInt4.s6 & 15) - 8; + charWeights0.se = (charWeightsInt4.s7 >> 4) - 8; + charWeights0.sf = (charWeightsInt4.s7 & 15) - 8; + + charWeights1.s0 = (charWeightsInt4.s8 >> 4) - 8; + charWeights1.s1 = (charWeightsInt4.s8 & 15) - 8; + charWeights1.s2 = (charWeightsInt4.s9 >> 4) - 8; + charWeights1.s3 = (charWeightsInt4.s9 & 15) - 8; + charWeights1.s4 = (charWeightsInt4.sa >> 4) - 8; + charWeights1.s5 = (charWeightsInt4.sa & 15) - 8; + charWeights1.s6 = (charWeightsInt4.sb >> 4) - 8; + charWeights1.s7 = (charWeightsInt4.sb & 15) - 8; + charWeights1.s8 = (charWeightsInt4.sc >> 4) - 8; + charWeights1.s9 = (charWeightsInt4.sc & 15) - 8; + charWeights1.sa = (charWeightsInt4.sd >> 4) - 8; + charWeights1.sb = (charWeightsInt4.sd & 15) - 8; + charWeights1.sc = (charWeightsInt4.se >> 4) - 8; + charWeights1.sd = (charWeightsInt4.se & 15) - 8; + charWeights1.se = (charWeightsInt4.sf >> 4) - 8; + charWeights1.sf = (charWeightsInt4.sf & 15) - 8; + FLOAT16 weights0 = CONVERT_FLOAT16(charWeights0); + FLOAT16 weights1 = CONVERT_FLOAT16(charWeights1); + sum += in.s0 + in.s1 + in.s2 + in.s3 + in.s4 + in.s5 + in.s6 + in.s7 + in.s8 + in.s9 + in.sa + in.sb + in.sc + in.sd + in.se + in.sf; + +#else + FLOAT16 weights0 = vload16(0, weight + weight_offset + k * weight_oc_offset); + FLOAT16 weights1 = vload16(0, weight + weight_offset + k * weight_oc_offset + 16); +#endif + out.s0 += dot(in.s0123, weights0.s0123); + out.s0 += dot(in.s4567, weights0.s4567); + out.s0 += dot(in.s89ab, weights0.s89ab); + out.s0 += dot(in.scdef, weights0.scdef); + out.s1 += dot(in.s0123, weights1.s0123); + out.s1 += dot(in.s4567, weights1.s4567); + out.s1 += dot(in.s89ab, weights1.s89ab); + out.s1 += dot(in.scdef, weights1.scdef); + } + +#ifdef INPUT_CHANNEL_LEAVE + { + int k = srcChannelC4/4 - 1; + FLOAT16 in = 0; + int k4 = k * 4; + in.s0123 = vload4(0, input + input_offset + k4 * wh); + in.s4567 = k4 + 1 < srcChannelC4 ? vload4(0, input + input_offset + (k4 + 1) * wh) : (FLOAT4)0; + in.s89ab = k4 + 2 < srcChannelC4 ? vload4(0, input + input_offset + (k4 + 2) * wh) : (FLOAT4)0; + in.scdef = k4 + 3 < srcChannelC4 ? vload4(0, input + input_offset + (k4 + 3) * wh) : (FLOAT4)0; +#if (defined USE_LOW_BIT_WEIGHT_INT8) + FLOAT16 weights0 = CONVERT_FLOAT16(vload16(0, weight + weight_offset + k * weight_oc_offset)); + FLOAT16 weights1 = CONVERT_FLOAT16(vload16(0, weight + weight_offset + k * weight_oc_offset + 16)); + sum += in.s0 + in.s1 + in.s2 + in.s3 + in.s4 + in.s5 + in.s6 + in.s7 + in.s8 + in.s9 + in.sa + in.sb + in.sc + in.sd + in.se + in.sf; +#elif (defined USE_LOW_BIT_WEIGHT_INT4) + uchar16 charWeightsInt4 = vload16(0, weight + weight_offset + k * weight_oc_offset); + char16 charWeights0 = 0; + char16 charWeights1 = 0; + charWeights0.s0 = (charWeightsInt4.s0 >> 4) - 8; + charWeights0.s1 = (charWeightsInt4.s0 & 15) - 8; + charWeights0.s2 = (charWeightsInt4.s1 >> 4) - 8; + charWeights0.s3 = (charWeightsInt4.s1 & 15) - 8; + charWeights0.s4 = (charWeightsInt4.s2 >> 4) - 8; + charWeights0.s5 = (charWeightsInt4.s2 & 15) - 8; + charWeights0.s6 = (charWeightsInt4.s3 >> 4) - 8; + charWeights0.s7 = (charWeightsInt4.s3 & 15) - 8; + charWeights0.s8 = (charWeightsInt4.s4 >> 4) - 8; + charWeights0.s9 = (charWeightsInt4.s4 & 15) - 8; + charWeights0.sa = (charWeightsInt4.s5 >> 4) - 8; + charWeights0.sb = (charWeightsInt4.s5 & 15) - 8; + charWeights0.sc = (charWeightsInt4.s6 >> 4) - 8; + charWeights0.sd = (charWeightsInt4.s6 & 15) - 8; + charWeights0.se = (charWeightsInt4.s7 >> 4) - 8; + charWeights0.sf = (charWeightsInt4.s7 & 15) - 8; + + charWeights1.s0 = (charWeightsInt4.s8 >> 4) - 8; + charWeights1.s1 = (charWeightsInt4.s8 & 15) - 8; + charWeights1.s2 = (charWeightsInt4.s9 >> 4) - 8; + charWeights1.s3 = (charWeightsInt4.s9 & 15) - 8; + charWeights1.s4 = (charWeightsInt4.sa >> 4) - 8; + charWeights1.s5 = (charWeightsInt4.sa & 15) - 8; + charWeights1.s6 = (charWeightsInt4.sb >> 4) - 8; + charWeights1.s7 = (charWeightsInt4.sb & 15) - 8; + charWeights1.s8 = (charWeightsInt4.sc >> 4) - 8; + charWeights1.s9 = (charWeightsInt4.sc & 15) - 8; + charWeights1.sa = (charWeightsInt4.sd >> 4) - 8; + charWeights1.sb = (charWeightsInt4.sd & 15) - 8; + charWeights1.sc = (charWeightsInt4.se >> 4) - 8; + charWeights1.sd = (charWeightsInt4.se & 15) - 8; + charWeights1.se = (charWeightsInt4.sf >> 4) - 8; + charWeights1.sf = (charWeightsInt4.sf & 15) - 8; + FLOAT16 weights0 = CONVERT_FLOAT16(charWeights0); + FLOAT16 weights1 = CONVERT_FLOAT16(charWeights1); + sum += in.s0 + in.s1 + in.s2 + in.s3 + in.s4 + in.s5 + in.s6 + in.s7 + in.s8 + in.s9 + in.sa + in.sb + in.sc + in.sd + in.se + in.sf; + +#else + FLOAT16 weights0 = vload16(0, weight + weight_offset + k * weight_oc_offset); + FLOAT16 weights1 = vload16(0, weight + weight_offset + k * weight_oc_offset + 16); +#endif + out.s0 += dot(in.s0123, weights0.s0123); + out.s0 += dot(in.s4567, weights0.s4567); + out.s0 += dot(in.s89ab, weights0.s89ab); + out.s0 += dot(in.scdef, weights0.scdef); + out.s1 += dot(in.s0123, weights1.s0123); + out.s1 += dot(in.s4567, weights1.s4567); + out.s1 += dot(in.s89ab, weights1.s89ab); + out.s1 += dot(in.scdef, weights1.scdef); + } +#endif + +#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) + out = bias0 + mad(out, Scale, sum * Offset); +#endif +#ifdef RELU + out = fmax(out, (FLOAT2)0); +#endif + +#ifdef RELU6 + out = clamp(out, (FLOAT2)0, (FLOAT2)6); +#endif + + vstore2(out, out_c_idx, output+out_offset); +} + +__kernel void gemm_conv_c1_buf(GLOBAL_SIZE_DIM2 + __global const FLOAT* input, +#if (defined USE_LOW_BIT_WEIGHT_INT8) + __global const char *weight, + __global const FLOAT *dequantScale, + __global const FLOAT *dequantOffset, +#elif (defined USE_LOW_BIT_WEIGHT_INT4) + __global const uchar *weight, + __global const FLOAT *dequantScale, + __global const FLOAT *dequantOffset, +#else + __global const FLOAT *weight, +#endif + __global const FLOAT *bias, + __global FLOAT* output, + __private const int dstChannelC4, + __private const int srcChannelC4, + __private const int batch, + __private const int height, + __private const int width) { + const int out_c_w_idx = get_global_id(0); //c/4 w + const int out_b_h_idx = get_global_id(1); //b h + + UNIFORM_BOUNDRY_CHECK(out_c_w_idx, out_b_h_idx); + + const int out_c_idx = out_c_w_idx / width; + const int out_w_idx = out_c_w_idx % width; + const int out_b_idx = out_b_h_idx / height; + const int out_h_idx = out_b_h_idx % height; + + FLOAT bias0 = bias[out_c_idx]; + FLOAT sum = 0; + FLOAT out = 0; + + int input_offset = ((out_b_idx * srcChannelC4 * height + out_h_idx) * width + out_w_idx) * 4; + int out_offset = ((out_b_idx * dstChannelC4 * height + out_h_idx) * width + out_w_idx) * 4; + int wh = width * height * 4; +#if (defined USE_LOW_BIT_WEIGHT_INT4) + int weight_offset = out_c_idx * 8; + int weight_oc_offset = dstChannelC4 * 32; +#else + int weight_offset = out_c_idx * 16; + int weight_oc_offset = dstChannelC4 * 64; +#endif + +#if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) + const FLOAT Scale = dequantScale[out_c_idx]; + const FLOAT Offset = dequantOffset[out_c_idx]; +#endif +#ifdef INPUT_CHANNEL_LEAVE + for (int k = 0; k < srcChannelC4/4 - 1; ++k) { +#else + for (int k = 0; k < srcChannelC4/4; ++k) { +#endif +#ifdef WIDTH_HEIGHT_1 + FLOAT16 in = vload16(k, input + input_offset); +#else + FLOAT16 in; + int k4 = k << 2; + in.s0123 = vload4(0, input + input_offset + k4 * wh); + in.s4567 = vload4(0, input + input_offset + (k4 + 1) * wh); + in.s89ab = vload4(0, input + input_offset + (k4 + 2) * wh); + in.scdef = vload4(0, input + input_offset + (k4 + 3) * wh); +#endif #if (defined USE_LOW_BIT_WEIGHT_INT8) FLOAT16 weights = CONVERT_FLOAT16(vload16(0, weight + weight_offset + k * weight_oc_offset)); - sum0 += in0.x + in0.y + in0.z + in0.w; - sum1 += in1.x + in1.y + in1.z + in1.w; + sum += in.s0 + in.s1 + in.s2 + in.s3 + in.s4 + in.s5 + in.s6 + in.s7 + in.s8 + in.s9 + in.sa + in.sb + in.sc + in.sd + in.se + in.sf; #elif (defined USE_LOW_BIT_WEIGHT_INT4) uchar8 charWeightsInt4 = vload8(0, weight + weight_offset + k * weight_oc_offset); char16 charWeights = 0; @@ -292,39 +745,69 @@ __kernel void gemm_conv_b2_buf(GLOBAL_SIZE_DIM2 charWeights.se = (charWeightsInt4.s7 >> 4) - 8; charWeights.sf = (charWeightsInt4.s7 & 15) - 8; FLOAT16 weights = CONVERT_FLOAT16(charWeights); - sum0 += in0.x + in0.y + in0.z + in0.w; - sum1 += in1.x + in1.y + in1.z + in1.w; - + sum += in.s0 + in.s1 + in.s2 + in.s3 + in.s4 + in.s5 + in.s6 + in.s7 + in.s8 + in.s9 + in.sa + in.sb + in.sc + in.sd + in.se + in.sf; #else FLOAT16 weights = vload16(0, weight + weight_offset + k * weight_oc_offset); #endif - - out0 = mad((FLOAT4)in0.x, (FLOAT4)weights.s0123, out0); - out0 = mad((FLOAT4)in0.y, (FLOAT4)weights.s4567, out0); - out0 = mad((FLOAT4)in0.z, (FLOAT4)weights.s89ab, out0); - out0 = mad((FLOAT4)in0.w, (FLOAT4)weights.scdef, out0); - - out1 = mad((FLOAT4)in1.x, (FLOAT4)weights.s0123, out1); - out1 = mad((FLOAT4)in1.y, (FLOAT4)weights.s4567, out1); - out1 = mad((FLOAT4)in1.z, (FLOAT4)weights.s89ab, out1); - out1 = mad((FLOAT4)in1.w, (FLOAT4)weights.scdef, out1); + out += dot(in.s0123, weights.s0123); + out += dot(in.s4567, weights.s4567); + out += dot(in.s89ab, weights.s89ab); + out += dot(in.scdef, weights.scdef); } +#ifdef INPUT_CHANNEL_LEAVE + { + int k = srcChannelC4/4 - 1; + FLOAT16 in = 0; + int k4 = k * 4; + in.s0123 = vload4(0, input + input_offset + k4 * wh); + in.s4567 = k4 + 1 < srcChannelC4 ? vload4(0, input + input_offset + (k4 + 1) * wh) : (FLOAT4)0; + in.s89ab = k4 + 2 < srcChannelC4 ? vload4(0, input + input_offset + (k4 + 2) * wh) : (FLOAT4)0; + in.scdef = k4 + 3 < srcChannelC4 ? vload4(0, input + input_offset + (k4 + 3) * wh) : (FLOAT4)0; +#if (defined USE_LOW_BIT_WEIGHT_INT8) + FLOAT16 weights = CONVERT_FLOAT16(vload16(0, weight + weight_offset + k * weight_oc_offset)); + sum += in.s0 + in.s1 + in.s2 + in.s3 + in.s4 + in.s5 + in.s6 + in.s7 + in.s8 + in.s9 + in.sa + in.sb + in.sc + in.sd + in.se + in.sf; +#elif (defined USE_LOW_BIT_WEIGHT_INT4) + uchar8 charWeightsInt4 = vload8(0, weight + weight_offset + k * weight_oc_offset); + char16 charWeights = 0; + charWeights.s0 = (charWeightsInt4.s0 >> 4) - 8; + charWeights.s1 = (charWeightsInt4.s0 & 15) - 8; + charWeights.s2 = (charWeightsInt4.s1 >> 4) - 8; + charWeights.s3 = (charWeightsInt4.s1 & 15) - 8; + charWeights.s4 = (charWeightsInt4.s2 >> 4) - 8; + charWeights.s5 = (charWeightsInt4.s2 & 15) - 8; + charWeights.s6 = (charWeightsInt4.s3 >> 4) - 8; + charWeights.s7 = (charWeightsInt4.s3 & 15) - 8; + charWeights.s8 = (charWeightsInt4.s4 >> 4) - 8; + charWeights.s9 = (charWeightsInt4.s4 & 15) - 8; + charWeights.sa = (charWeightsInt4.s5 >> 4) - 8; + charWeights.sb = (charWeightsInt4.s5 & 15) - 8; + charWeights.sc = (charWeightsInt4.s6 >> 4) - 8; + charWeights.sd = (charWeightsInt4.s6 & 15) - 8; + charWeights.se = (charWeightsInt4.s7 >> 4) - 8; + charWeights.sf = (charWeightsInt4.s7 & 15) - 8; + FLOAT16 weights = CONVERT_FLOAT16(charWeights); + sum += in.s0 + in.s1 + in.s2 + in.s3 + in.s4 + in.s5 + in.s6 + in.s7 + in.s8 + in.s9 + in.sa + in.sb + in.sc + in.sd + in.se + in.sf; +#else + FLOAT16 weights = vload16(0, weight + weight_offset + k * weight_oc_offset); +#endif + out += dot(in.s0123, weights.s0123); + out += dot(in.s4567, weights.s4567); + out += dot(in.s89ab, weights.s89ab); + out += dot(in.scdef, weights.scdef); + } +#endif #if (defined USE_LOW_BIT_WEIGHT_INT8) || (defined USE_LOW_BIT_WEIGHT_INT4) - out0 = bias0 + mad(out0, Scale, sum0 * Offset); - out1 = bias0 + mad(out1, Scale, sum1 * Offset); + out = bias0 + mad(out, Scale, sum * Offset); #endif #ifdef RELU - out0 = fmax(out0, (FLOAT4)0); - out1 = fmax(out1, (FLOAT4)0); + out = fmax(out, )0); #endif #ifdef RELU6 - out0 = clamp(out0, (FLOAT4)0, (FLOAT4)6); - out1 = clamp(out1, (FLOAT4)0, (FLOAT4)6); + out = clamp(out, 0, 6); #endif - vstore4(out0, pos.x, output+out_offset); - if(pos_y + 1 < batch) - vstore4(out1, pos.x, output+out_offset+dstChannelC4 * 4); + //vstore4(out, pos.x, output+out_offset); + output[out_offset + out_c_idx] = out; } diff --git a/source/backend/opencl/execution/cl/layernorm.cl b/source/backend/opencl/execution/cl/layernorm.cl index 7fdf58e17..81bbd19dc 100644 --- a/source/backend/opencl/execution/cl/layernorm.cl +++ b/source/backend/opencl/execution/cl/layernorm.cl @@ -16,7 +16,7 @@ __kernel void layernorm_w(__private int global_dim0, __private int global_dim1, #endif __private float epsilon){ int3 pos = (int3)(get_global_id(0), get_global_id(1), get_global_id(2)); - FLOAT4 local sum[LOCAL_SIZE]; + float4 local sum[LOCAL_SIZE]; if (pos.x < global_dim0 && pos.y < global_dim1 && pos.z < global_dim2) { const int h = pos.y % height; const int c = pos.y / height; @@ -24,9 +24,12 @@ __kernel void layernorm_w(__private int global_dim0, __private int global_dim1, const int lid = get_local_id(0); const int bh_offset = mad24(b, height, h); - FLOAT4 in_sum = 0; + float4 in_sum = 0; +#ifdef RMSNORM + float4 mean = 0; +#else for(int i = lid; i < width; i+=LOCAL_SIZE){ - FLOAT4 in = RI_F(input, SAMPLER, (int2)(c * width + i, bh_offset)); + float4 in = convert_float4(RI_F(input, SAMPLER, (int2)(c * width + i, bh_offset))); in_sum += in; } sum[lid] = in_sum; @@ -37,10 +40,11 @@ __kernel void layernorm_w(__private int global_dim0, __private int global_dim1, barrier(CLK_LOCAL_MEM_FENCE); } - FLOAT4 mean = sum[0] / (FLOAT4)width; + float4 mean = sum[0] / (float4)width; +#endif in_sum = 0; for(int i = lid; i < width; i+=LOCAL_SIZE){ - FLOAT4 in = RI_F(input, SAMPLER, (int2)(c * width + i, bh_offset)); + float4 in = convert_float4(RI_F(input, SAMPLER, (int2)(c * width + i, bh_offset))); in_sum += (in - mean) * (in - mean); } sum[lid] = in_sum; @@ -50,16 +54,16 @@ __kernel void layernorm_w(__private int global_dim0, __private int global_dim1, sum[lid] = sum[lid] + sum[lid + i]; barrier(CLK_LOCAL_MEM_FENCE); } - FLOAT4 square_sum = sum[0] / (FLOAT4)width; - FLOAT4 value = (FLOAT4)1.0f / (FLOAT4)sqrt(square_sum + (FLOAT4)epsilon); + float4 square_sum = sum[0] / (float4)width; + float4 value = (float4)1.0f / (float4)sqrt(square_sum + (float4)epsilon); for(int i = lid; i < width; i+=LOCAL_SIZE){ - FLOAT4 in = RI_F(input, SAMPLER, (int2)(c * width + i, bh_offset)); + float4 in = convert_float4(RI_F(input, SAMPLER, (int2)(c * width + i, bh_offset))); #ifdef GAMMA_BETA - FLOAT4 out = (in - mean) * value * (FLOAT4)gamma[i] + (FLOAT4)beta[i]; + float4 out = (in - mean) * value * (float4)gamma[i] + (float4)beta[i]; #else - FLOAT4 out = (in - mean) * value; + float4 out = (in - mean) * value; #endif - WI_F(output, (int2)(c * width + i, bh_offset), out); + WI_F(output, (int2)(c * width + i, bh_offset), CONVERT_FLOAT4(out)); } } } @@ -77,18 +81,21 @@ __kernel void layernorm_hw(__private int global_dim0, __private int global_dim1, #endif __private float epsilon){ int3 pos = (int3)(get_global_id(0), get_global_id(1), get_global_id(2)); - FLOAT4 local sum[LOCAL_SIZE]; + float4 local sum[LOCAL_SIZE]; if (pos.x < global_dim0 && pos.y < global_dim1 && pos.z < global_dim2) { const int c = pos.y; const int b = pos.z; const int height_width = height * width; const int lid = get_local_id(0); - FLOAT4 in_sum = 0; + float4 in_sum = 0; +#ifdef RMSNORM + float4 mean = 0; +#else for(int i = lid; i < height_width; i+=LOCAL_SIZE){ int w = i % width; int h = i / width; - FLOAT4 in = RI_F(input, SAMPLER, (int2)(c * width + w, b * height + h)); + float4 in = convert_float4(RI_F(input, SAMPLER, (int2)(c * width + w, b * height + h))); in_sum += in; } sum[lid] = in_sum; @@ -99,12 +106,13 @@ __kernel void layernorm_hw(__private int global_dim0, __private int global_dim1, barrier(CLK_LOCAL_MEM_FENCE); } - FLOAT4 mean = sum[0] / (FLOAT4)height_width; + float4 mean = sum[0] / (float4)height_width; +#endif in_sum = 0; for(int i = lid; i < height_width; i+=LOCAL_SIZE){ int w = i % width; int h = i / width; - FLOAT4 in = RI_F(input, SAMPLER, (int2)(c * width + w, b * height + h)); + float4 in = convert_float4(RI_F(input, SAMPLER, (int2)(c * width + w, b * height + h))); in_sum += (in - mean) * (in - mean); } sum[lid] = in_sum; @@ -114,18 +122,18 @@ __kernel void layernorm_hw(__private int global_dim0, __private int global_dim1, sum[lid] = sum[lid] + sum[lid + i]; barrier(CLK_LOCAL_MEM_FENCE); } - FLOAT4 square_sum = sum[0] / (FLOAT4)height_width; - FLOAT4 value = (FLOAT4)1.0f / (FLOAT4)sqrt(square_sum + (FLOAT4)epsilon); + float4 square_sum = sum[0] / (float4)height_width; + float4 value = (float4)1.0f / (float4)sqrt(square_sum + (float4)epsilon); for(int i = lid; i < height_width; i+=LOCAL_SIZE){ int w = i % width; int h = i / width; - FLOAT4 in = RI_F(input, SAMPLER, (int2)(c * width + w, b * height + h)); + float4 in = convert_float4(RI_F(input, SAMPLER, (int2)(c * width + w, b * height + h))); #ifdef GAMMA_BETA - FLOAT4 out = (in - mean) * value * (FLOAT4)gamma[i] + (FLOAT4)beta[i]; + float4 out = (in - mean) * value * (float4)gamma[i] + (float4)beta[i]; #else - FLOAT4 out = (in - mean) * value; + float4 out = (in - mean) * value; #endif - WI_F(output, (int2)(c * width + w, b * height + h), out); + WI_F(output, (int2)(c * width + w, b * height + h), CONVERT_FLOAT4(out)); } } } @@ -142,7 +150,7 @@ __kernel void layernorm_chw(__private int global_dim0, __private int global_dim1 #endif __private float epsilon){ int3 pos = (int3)(get_global_id(0), get_global_id(1), get_global_id(2)); - FLOAT local sum[LOCAL_SIZE]; + float local sum[LOCAL_SIZE]; if (pos.x < global_dim0 && pos.y < global_dim1 && pos.z < global_dim2) { const int b = pos.z; const int sum_size = width * height * channel; @@ -151,24 +159,27 @@ __kernel void layernorm_chw(__private int global_dim0, __private int global_dim1 const int channel4 = (channel + 3) / 4; const int channel_remain = channel - (channel4 - 1) * 4; - FLOAT4 in_sum = 0; - FLOAT4 in_sum_left = 0; + float4 in_sum = 0; + float4 in_sum_left = 0; + float *in_sum_left_ptr = (float*)(&in_sum_left); +#ifdef RMSNORM + float4 mean = 0; +#else for(int c = 0; c < channel4 - 1; ++c){ for(int i = lid; i < reduce_size; i+=LOCAL_SIZE){ int w = i % width; int h = i / width; - FLOAT4 in = RI_F(input, SAMPLER, (int2)(c * width + w, b * height + h)); + float4 in = convert_float4(RI_F(input, SAMPLER, (int2)(c * width + w, b * height + h))); in_sum += in; } } for(int i = lid; i < reduce_size; i+=LOCAL_SIZE){ int w = i % width; int h = i / width; - FLOAT4 in = RI_F(input, SAMPLER, (int2)((channel4 - 1) * width + w, b * height + h)); + float4 in = convert_float4(RI_F(input, SAMPLER, (int2)((channel4 - 1) * width + w, b * height + h))); in_sum_left += in; } in_sum.x = in_sum.x + in_sum.y + in_sum.z + in_sum.w; - FLOAT *in_sum_left_ptr = (FLOAT*)(&in_sum_left); for(int i = 1; i < channel_remain; ++i){ in_sum_left_ptr[0] += in_sum_left_ptr[i]; } @@ -180,14 +191,15 @@ __kernel void layernorm_chw(__private int global_dim0, __private int global_dim1 barrier(CLK_LOCAL_MEM_FENCE); } - FLOAT4 mean = sum[0] / (FLOAT4)sum_size; + float4 mean = sum[0] / (float4)sum_size; +#endif in_sum = 0; in_sum_left = 0; for(int c = 0; c < channel4 - 1; ++c){ for(int i = lid; i < reduce_size; i+=LOCAL_SIZE){ int w = i % width; int h = i / width; - FLOAT4 in = RI_F(input, SAMPLER, (int2)(c * width + w, b * height + h)); + float4 in = convert_float4(RI_F(input, SAMPLER, (int2)(c * width + w, b * height + h))); in_sum += (in - mean) * (in - mean); } } @@ -195,7 +207,7 @@ __kernel void layernorm_chw(__private int global_dim0, __private int global_dim1 for(int i = lid; i < reduce_size; i+=LOCAL_SIZE){ int w = i % width; int h = i / width; - FLOAT4 in = RI_F(input, SAMPLER, (int2)((channel4 - 1) * width + w, b * height + h)); + float4 in = convert_float4(RI_F(input, SAMPLER, (int2)((channel4 - 1) * width + w, b * height + h))); in_sum_left += (in - mean) * (in - mean); } @@ -211,19 +223,19 @@ __kernel void layernorm_chw(__private int global_dim0, __private int global_dim1 sum[lid] = sum[lid] + sum[lid + i]; barrier(CLK_LOCAL_MEM_FENCE); } - FLOAT4 square_sum = sum[0] / (FLOAT4)sum_size; - FLOAT4 value = (FLOAT4)1.0f / (FLOAT4)sqrt(square_sum + (FLOAT4)epsilon); + float4 square_sum = sum[0] / (float4)sum_size; + float4 value = (float4)1.0f / (float4)sqrt(square_sum + (float4)epsilon); for(int c = 0; c < channel4; ++c){ for(int i = lid; i < reduce_size; i+=LOCAL_SIZE){ int w = i % width; int h = i / width; - FLOAT4 in = RI_F(input, SAMPLER, (int2)(c * width + w, b * height + h)); + float4 in = convert_float4(RI_F(input, SAMPLER, (int2)(c * width + w, b * height + h))); #ifdef GAMMA_BETA - FLOAT4 out = (in - mean) * value * (FLOAT4)gamma[c * reduce_size + i] + (FLOAT4)beta[c * reduce_size + i]; + float4 out = (in - mean) * value * (float4)gamma[c * reduce_size + i] + (float4)beta[c * reduce_size + i]; #else - FLOAT4 out = (in - mean) * value; + float4 out = (in - mean) * value; #endif - WI_F(output, (int2)(c * width + w, b * height + h), out); + WI_F(output, (int2)(c * width + w, b * height + h), CONVERT_FLOAT4(out)); } } } diff --git a/source/backend/opencl/execution/cl/layernorm_buf.cl b/source/backend/opencl/execution/cl/layernorm_buf.cl index c0cd3dab5..90457d629 100644 --- a/source/backend/opencl/execution/cl/layernorm_buf.cl +++ b/source/backend/opencl/execution/cl/layernorm_buf.cl @@ -14,7 +14,7 @@ __kernel void layernorm_w_buf(__private int global_dim0, __private int global_di #endif __private float epsilon){ int3 pos = (int3)(get_global_id(0), get_global_id(1), get_global_id(2)); - FLOAT4 local sum[LOCAL_SIZE]; + float4 local sum[LOCAL_SIZE]; if (pos.x < global_dim0 && pos.y < global_dim1 && pos.z < global_dim2) { const int h = pos.y % height; const int c = pos.y / height; @@ -23,9 +23,12 @@ __kernel void layernorm_w_buf(__private int global_dim0, __private int global_di const int channel4 = (channel + 3) / 4; const int offset = ((b * channel4 + c) * height + h) * width * 4; - FLOAT4 in_sum = 0; + float4 in_sum = 0; +#ifdef RMSNORM + float4 mean = 0; +#else for(int i = lid; i < width; i+=LOCAL_SIZE){ - FLOAT4 in = vload4(i, input + offset); + float4 in = convert_float4(vload4(i, input + offset)); in_sum += in; } sum[lid] = in_sum; @@ -36,10 +39,11 @@ __kernel void layernorm_w_buf(__private int global_dim0, __private int global_di barrier(CLK_LOCAL_MEM_FENCE); } - FLOAT4 mean = sum[0] / (FLOAT4)width; + float4 mean = sum[0] / (float4)width; +#endif in_sum = 0; for(int i = lid; i < width; i+=LOCAL_SIZE){ - FLOAT4 in = vload4(i, input + offset); + float4 in = convert_float4(vload4(i, input + offset)); in_sum += (in - mean) * (in - mean); } sum[lid] = in_sum; @@ -49,16 +53,16 @@ __kernel void layernorm_w_buf(__private int global_dim0, __private int global_di sum[lid] = sum[lid] + sum[lid + i]; barrier(CLK_LOCAL_MEM_FENCE); } - FLOAT4 square_sum = sum[0] / (FLOAT4)width; - FLOAT4 value = (FLOAT4)1.0f / (FLOAT4)sqrt(square_sum + (FLOAT4)epsilon); + float4 square_sum = sum[0] / (float4)width; + float4 value = (float4)1.0f / (float4)sqrt(square_sum + (float4)epsilon); for(int i = lid; i < width; i+=LOCAL_SIZE){ - FLOAT4 in = vload4(i, input + offset); + float4 in = convert_float4(vload4(i, input + offset)); #ifdef GAMMA_BETA - FLOAT4 out = (in - mean) * value * (FLOAT4)gamma[i] + (FLOAT4)beta[i]; + float4 out = (in - mean) * value * (float4)gamma[i] + (float4)beta[i]; #else - FLOAT4 out = (in - mean) * value; + float4 out = (in - mean) * value; #endif - vstore4(out, i, output + offset); + vstore4(CONVERT_FLOAT4(out), i, output + offset); } } } @@ -76,7 +80,7 @@ __kernel void layernorm_hw_buf(__private int global_dim0, __private int global_d #endif __private float epsilon){ int3 pos = (int3)(get_global_id(0), get_global_id(1), get_global_id(2)); - FLOAT4 local sum[LOCAL_SIZE]; + float4 local sum[LOCAL_SIZE]; if (pos.x < global_dim0 && pos.y < global_dim1 && pos.z < global_dim2) { const int c = pos.y; const int b = pos.z; @@ -85,9 +89,12 @@ __kernel void layernorm_hw_buf(__private int global_dim0, __private int global_d const int lid = get_local_id(0); const int offset = ((b * channel4 + c) * height) * width * 4; - FLOAT4 in_sum = 0; + float4 in_sum = 0; +#ifdef RMSNORM + float4 mean = 0; +#else for(int i = lid; i < height_width; i+=LOCAL_SIZE){ - FLOAT4 in = vload4(i, input + offset); + float4 in = convert_float4(vload4(i, input + offset)); in_sum += in; } sum[lid] = in_sum; @@ -98,10 +105,11 @@ __kernel void layernorm_hw_buf(__private int global_dim0, __private int global_d barrier(CLK_LOCAL_MEM_FENCE); } - FLOAT4 mean = sum[0] / (FLOAT4)height_width; + float4 mean = sum[0] / (float4)height_width; +#endif in_sum = 0; for(int i = lid; i < height_width; i+=LOCAL_SIZE){ - FLOAT4 in = vload4(i, input + offset); + float4 in = convert_float4(vload4(i, input + offset)); in_sum += (in - mean) * (in - mean); } sum[lid] = in_sum; @@ -111,16 +119,16 @@ __kernel void layernorm_hw_buf(__private int global_dim0, __private int global_d sum[lid] = sum[lid] + sum[lid + i]; barrier(CLK_LOCAL_MEM_FENCE); } - FLOAT4 square_sum = sum[0] / (FLOAT4)height_width; - FLOAT4 value = (FLOAT4)1.0f / (FLOAT4)sqrt(square_sum + (FLOAT4)epsilon); + float4 square_sum = sum[0] / (float4)height_width; + float4 value = (float4)1.0f / (float4)sqrt(square_sum + (float4)epsilon); for(int i = lid; i < height_width; i+=LOCAL_SIZE){ - FLOAT4 in = vload4(i, input + offset); + float4 in = convert_float4(vload4(i, input + offset)); #ifdef GAMMA_BETA - FLOAT4 out = (in - mean) * value * (FLOAT4)gamma[i] + (FLOAT4)beta[i]; + float4 out = (in - mean) * value * (float4)gamma[i] + (float4)beta[i]; #else - FLOAT4 out = (in - mean) * value; + float4 out = (in - mean) * value; #endif - vstore4(out, i, output + offset); + vstore4(CONVERT_FLOAT4(out), i, output + offset); } } } @@ -137,7 +145,7 @@ __kernel void layernorm_chw_buf(__private int global_dim0, __private int global_ #endif __private float epsilon){ int3 pos = (int3)(get_global_id(0), get_global_id(1), get_global_id(2)); - FLOAT local sum[LOCAL_SIZE]; + float local sum[LOCAL_SIZE]; if (pos.x < global_dim0 && pos.y < global_dim1 && pos.z < global_dim2) { const int b = pos.z; const int sum_size = width * height * channel; @@ -148,20 +156,23 @@ __kernel void layernorm_chw_buf(__private int global_dim0, __private int global_ const int offset = ((b * channel4) * height) * width * 4; const int wh_offset = height * width * 4; - FLOAT4 in_sum = 0; - FLOAT4 in_sum_left = 0; + float4 in_sum = 0; + float4 in_sum_left = 0; + float *in_sum_left_ptr = (float*)(&in_sum_left); +#ifdef RMSNORM + float4 mean = 0; +#else for(int c = 0; c < channel4 - 1; ++c){ for(int i = lid; i < reduce_size; i+=LOCAL_SIZE){ - FLOAT4 in = vload4(i, input + offset + c * wh_offset); + float4 in = convert_float4(vload4(i, input + offset + c * wh_offset)); in_sum += in; } } for(int i = lid; i < reduce_size; i+=LOCAL_SIZE){ - FLOAT4 in = vload4(i, input + offset + (channel4 - 1) * wh_offset); + float4 in = convert_float4(vload4(i, input + offset + (channel4 - 1) * wh_offset)); in_sum_left += in; } in_sum.x = in_sum.x + in_sum.y + in_sum.z + in_sum.w; - FLOAT *in_sum_left_ptr = (FLOAT*)(&in_sum_left); for(int i = 1; i < channel_remain; ++i){ in_sum_left_ptr[0] += in_sum_left_ptr[i]; } @@ -173,18 +184,19 @@ __kernel void layernorm_chw_buf(__private int global_dim0, __private int global_ barrier(CLK_LOCAL_MEM_FENCE); } - FLOAT4 mean = sum[0] / (FLOAT4)sum_size; + float4 mean = sum[0] / (float4)sum_size; +#endif in_sum = 0; in_sum_left = 0; for(int c = 0; c < channel4 - 1; ++c){ for(int i = lid; i < reduce_size; i+=LOCAL_SIZE){ - FLOAT4 in = vload4(i, input + offset + c * wh_offset); + float4 in = convert_float4(vload4(i, input + offset + c * wh_offset)); in_sum += (in - mean) * (in - mean); } } for(int i = lid; i < reduce_size; i+=LOCAL_SIZE){ - FLOAT4 in = vload4(i, input + offset + (channel4 - 1) * wh_offset); + float4 in = convert_float4(vload4(i, input + offset + (channel4 - 1) * wh_offset)); in_sum_left += (in - mean) * (in - mean); } @@ -200,17 +212,17 @@ __kernel void layernorm_chw_buf(__private int global_dim0, __private int global_ sum[lid] = sum[lid] + sum[lid + i]; barrier(CLK_LOCAL_MEM_FENCE); } - FLOAT4 square_sum = sum[0] / (FLOAT4)sum_size; - FLOAT4 value = (FLOAT4)1.0f / (FLOAT4)sqrt(square_sum + (FLOAT4)epsilon); + float4 square_sum = sum[0] / (float4)sum_size; + float4 value = (float4)1.0f / (float4)sqrt(square_sum + (float4)epsilon); for(int c = 0; c < channel4; ++c){ for(int i = lid; i < reduce_size; i+=LOCAL_SIZE){ - FLOAT4 in = vload4(i, input + offset + c * wh_offset); + float4 in = convert_float4(vload4(i, input + offset + c * wh_offset)); #ifdef GAMMA_BETA - FLOAT4 out = (in - mean) * value * (FLOAT4)gamma[c * reduce_size + i] + (FLOAT4)beta[c * reduce_size + i]; + float4 out = (in - mean) * value * (float4)gamma[c * reduce_size + i] + (float4)beta[c * reduce_size + i]; #else - FLOAT4 out = (in - mean) * value; + float4 out = (in - mean) * value; #endif - vstore4(out, i, output + offset + c * wh_offset); + vstore4(CONVERT_FLOAT4(out), i, output + offset + c * wh_offset); } } } diff --git a/source/backend/opencl/execution/cl/loop.cl b/source/backend/opencl/execution/cl/loop.cl index 97464acb4..263cf9e24 100644 --- a/source/backend/opencl/execution/cl/loop.cl +++ b/source/backend/opencl/execution/cl/loop.cl @@ -9,9 +9,9 @@ __kernel void batch_matmul(__private int global_dim0, __private int global_dim1, #ifdef BIAS __global FLOAT* input_C, #endif - __global FLOAT* offset_O, __global FLOAT* offset_A, __global FLOAT* offset_B, + __global int* offset_O, __global int* offset_A, __global int* offset_B, #ifdef BIAS - __global FLOAT* offset_C, + __global int* offset_C, #endif __private const int e, __private const int l, @@ -25,17 +25,17 @@ __kernel void batch_matmul(__private int global_dim0, __private int global_dim1, pos.y <<= 2; int4 index = (int4)(pos.z); if (iters.x >= 0) { - index.x = (int)(offset_O[pos.z]); + index.x = offset_O[pos.z]; } if (iters.y >= 0) { - index.y = (int)(offset_A[pos.z]); + index.y = offset_A[pos.z]; } if (iters.z >= 0) { - index.z = (int)(offset_B[pos.z]); + index.z = offset_B[pos.z]; } #ifdef BIAS if (iters.w >= 0) { - index.w = (int)(offset_C[pos.z]); + index.w = offset_C[pos.z]; } #endif int4 offset = index * steps + offsets; @@ -217,7 +217,7 @@ __kernel void batch_matmul(__private int global_dim0, __private int global_dim1, __kernel void tile(__private int global_dim0, __private int global_dim1, __private int global_dim2, __read_only image2d_t input, - __global FLOAT* output, + __global OUTPUT_TYPE* output, __private const int width, __private const int height, __private const int channel){ @@ -238,9 +238,9 @@ __kernel void tile(__private int global_dim0, __private int global_dim1, __priva const int c_dst_pitch = y_dst_pitch * height; const int b_dst_pitch = c_dst_pitch * channel; #endif - __global FLOAT* dst_ptr = output + pos.z * b_dst_pitch + c * c_dst_pitch + h * y_dst_pitch + w * x_dst_pitch; + __global OUTPUT_TYPE* dst_ptr = output + pos.z * b_dst_pitch + c * c_dst_pitch + h * y_dst_pitch + w * x_dst_pitch; - FLOAT4 value = RI_F(input, SAMPLER, (int2)(pos.y * width + w, pos.z * height + h)); + OUTPUT_TYPE4 value = CONVERT_OUTPUT4(RI_DATA(input, SAMPLER, (int2)(pos.y * width + w, pos.z * height + h))); dst_ptr[0] = value.x; if(c + 1 >= channel)return; dst_ptr[c_dst_pitch] = value.y; @@ -252,7 +252,7 @@ __kernel void tile(__private int global_dim0, __private int global_dim1, __priva } __kernel void pack(__private int global_dim0, __private int global_dim1, __private int global_dim2, - __global FLOAT* input, + __global INPUT_TYPE* input, __write_only image2d_t output, __private const int width, __private const int height, @@ -274,24 +274,25 @@ __kernel void pack(__private int global_dim0, __private int global_dim1, __priva const int c_src_pitch = y_src_pitch * height; const int b_src_pitch = c_src_pitch * channel; #endif - __global FLOAT* src_ptr = input + pos.z * b_src_pitch + c * c_src_pitch + h * y_src_pitch + w * x_src_pitch; - FLOAT4 value = (FLOAT4)0; - FLOAT *value_ptr = (FLOAT*)&value; + __global INPUT_TYPE* src_ptr = input + pos.z * b_src_pitch + c * c_src_pitch + h * y_src_pitch + w * x_src_pitch; + OUTPUT_TYPE_I4 value = (OUTPUT_TYPE_I4)0; + OUTPUT_TYPE_I *value_ptr = (OUTPUT_TYPE_I*)&value; for(int i = 0; i < 4 && (i + c < channel); ++i){ - value_ptr[i] = src_ptr[i * c_src_pitch]; + value_ptr[i] = (OUTPUT_TYPE_I)src_ptr[i * c_src_pitch]; } - WI_F(output, (int2)(pos.y * width + w, pos.z * height + h), value); + WI_DATA(output, (int2)(pos.y * width + w, pos.z * height + h), value); } } __kernel void batch_gather(__private int global_dim0, __private int global_dim1, __private int global_dim2, - __global FLOAT* output, __global FLOAT* input, - __global FLOAT* offset_dst, __global FLOAT* offset_src, + __global OUTPUT_TYPE* output, __global INPUT_TYPE* input, + __global int* offset_dst, __global int* offset_src, __private const int x_size, __private const int4 stride_src, __private const int4 stride_dst, __private const int2 steps, - __private const int2 iters) { + __private const int2 iters, + __private const int inputSize) { int3 pos = (int3)(get_global_id(0), get_global_id(1), get_global_id(2)); if (pos.x < global_dim0 && pos.y < global_dim1 && pos.z < global_dim2) { @@ -301,13 +302,19 @@ __kernel void batch_gather(__private int global_dim0, __private int global_dim1, int2 index = (int2)(pos.z, pos.z); if (iters.x >= 0) { - index.x = (int)(offset_dst[pos.z]); + index.x = offset_dst[pos.z]; } if (iters.y >= 0) { - index.y = (int)(offset_src[pos.z]); + index.y = offset_src[pos.z]; } int2 offset = index * steps; - output[offset.x + stride_dst.w + x * stride_dst.x + y * stride_dst.y + pos.y * stride_dst.z] = input[offset.y + stride_src.w + x * stride_src.x + y * stride_src.y + pos.y * stride_src.z]; + if(offset.x >= 0){ + if(offset.y >= 0 && offset.y < inputSize){ + output[offset.x + stride_dst.w + x * stride_dst.x + y * stride_dst.y + pos.y * stride_dst.z] = (OUTPUT_TYPE)input[offset.y + stride_src.w + x * stride_src.x + y * stride_src.y + pos.y * stride_src.z]; + }else{ + output[offset.x + stride_dst.w + x * stride_dst.x + y * stride_dst.y + pos.y * stride_dst.z] = (OUTPUT_TYPE)(0); + } + } } } @@ -338,9 +345,9 @@ __kernel void broadcast_binary(__private int global_dim0, __private int global_d int4 h = out_offset % dst_size.s2; out_offset /= dst_size.s2; int4 c = out_offset % dst_size.s1; out_offset /= dst_size.s1; int4 n = out_offset % dst_size.s0; - FLOAT4 in0, in1; - FLOAT* in0_ptr = (FLOAT*)&in0; - FLOAT* in1_ptr = (FLOAT*)&in1; + float4 in0, in1; + float* in0_ptr = (float*)&in0; + float* in1_ptr = (float*)&in1; { int4 w0 = w % (src0_size.s3 * src0_size.s4); @@ -359,8 +366,8 @@ __kernel void broadcast_binary(__private int global_dim0, __private int global_d int nc4 = c4offset % src0C4_size.w; int cc4_offset = cc4 / 4; int cc4_remain = cc4 % 4; - FLOAT4 tmp = RI_F(input0, SAMPLER, (int2)(cc4_offset * src0C4_size.x + wc4, nc4 * src0C4_size.y + hc4)); - FLOAT *tmp_ptr = (FLOAT*)&tmp; + float4 tmp = convert_float4(RI_DATA(input0, SAMPLER, (int2)(cc4_offset * src0C4_size.x + wc4, nc4 * src0C4_size.y + hc4))); + float *tmp_ptr = (float*)&tmp; in0_ptr[i] = tmp_ptr[cc4_remain]; } } @@ -382,14 +389,14 @@ __kernel void broadcast_binary(__private int global_dim0, __private int global_d int nc4 = c4offset % src1C4_size.w; int cc4_offset = cc4 / 4; int cc4_remain = cc4 % 4; - FLOAT4 tmp = RI_F(input1, SAMPLER, (int2)(cc4_offset * src1C4_size.x + wc4, nc4 * src1C4_size.y + hc4)); - FLOAT *tmp_ptr = (FLOAT*)&tmp; + float4 tmp = convert_float4(RI_DATA(input1, SAMPLER, (int2)(cc4_offset * src1C4_size.x + wc4, nc4 * src1C4_size.y + hc4))); + float *tmp_ptr = (float*)&tmp; in1_ptr[i] = tmp_ptr[cc4_remain]; } } - FLOAT4 out = CONVERT_FLOAT4(LOOP_BINARY_OPERATOR); - WI_F(output, (int2)(co * dst_width + wo, no * dst_height + ho), out); + float4 out = LOOP_BINARY_OPERATOR; + WI_DATA(output, (int2)(co * dst_width + wo, no * dst_height + ho), CONVERT_OUTPUT_I4(out)); } } #endif diff --git a/source/backend/opencl/execution/cl/loop_buf.cl b/source/backend/opencl/execution/cl/loop_buf.cl index c2056babc..047eefd7d 100644 --- a/source/backend/opencl/execution/cl/loop_buf.cl +++ b/source/backend/opencl/execution/cl/loop_buf.cl @@ -3,7 +3,7 @@ #endif #define PI 3.141592653589f __kernel void tile_buf(__private int global_dim0, __private int global_dim1, __private int global_dim2, - __global FLOAT* input, __global FLOAT* output, + __global INPUT_TYPE* input, __global OUTPUT_TYPE* output, __private const int width, __private const int height, __private const int channel){ @@ -27,9 +27,9 @@ __kernel void tile_buf(__private int global_dim0, __private int global_dim1, __p const int c_dst_pitch = y_dst_pitch * height; const int b_dst_pitch = c_dst_pitch * channel; #endif - __global FLOAT* dst_ptr = output + pos.z * b_dst_pitch + c * c_dst_pitch + h * y_dst_pitch + w * x_dst_pitch; + __global OUTPUT_TYPE* dst_ptr = output + pos.z * b_dst_pitch + c * c_dst_pitch + h * y_dst_pitch + w * x_dst_pitch; - FLOAT4 value = vload4(0, input + pos.z * b_src_pitch + pos.y * c_src_pitch + h * y_src_pitch + w * x_src_pitch); + OUTPUT_TYPE4 value = CONVERT_OUTPUT4(vload4(0, input + pos.z * b_src_pitch + pos.y * c_src_pitch + h * y_src_pitch + w * x_src_pitch)); dst_ptr[0] = value.x; if(c + 1 >= channel)return; dst_ptr[c_dst_pitch] = value.y; @@ -41,7 +41,7 @@ __kernel void tile_buf(__private int global_dim0, __private int global_dim1, __p } __kernel void pack_buf(__private int global_dim0, __private int global_dim1, __private int global_dim2, - __global FLOAT* input, __global FLOAT* output, + __global INPUT_TYPE* input, __global OUTPUT_TYPE* output, __private const int width, __private const int height, __private const int channel){ @@ -65,11 +65,11 @@ __kernel void pack_buf(__private int global_dim0, __private int global_dim1, __p const int c_src_pitch = y_src_pitch * height; const int b_src_pitch = c_src_pitch * channel; #endif - __global FLOAT* src_ptr = input + pos.z * b_src_pitch + c * c_src_pitch + h * y_src_pitch + w * x_src_pitch; - FLOAT4 value = (FLOAT4)0; - FLOAT *value_ptr = (FLOAT*)&value; + __global INPUT_TYPE* src_ptr = input + pos.z * b_src_pitch + c * c_src_pitch + h * y_src_pitch + w * x_src_pitch; + OUTPUT_TYPE4 value = (OUTPUT_TYPE4)0; + OUTPUT_TYPE *value_ptr = (OUTPUT_TYPE*)&value; for(int i = 0; i < 4 && (i + c < channel); ++i){ - value_ptr[i] = src_ptr[i * c_src_pitch]; + value_ptr[i] = (OUTPUT_TYPE)src_ptr[i * c_src_pitch]; } vstore4(value, 0, output + pos.z * b_dst_pitch + pos.y * c_dst_pitch + h * y_dst_pitch + w * x_dst_pitch); } @@ -77,7 +77,7 @@ __kernel void pack_buf(__private int global_dim0, __private int global_dim1, __p #ifdef LOOP_BINARY_OPERATOR __kernel void broadcast_binary_buf(__private int global_dim0, __private int global_dim1, __private int global_dim2, - __global FLOAT* output, __global FLOAT* input0, __global FLOAT* input1, + __global OUTPUT_TYPE* output, __global INPUT_TYPE* input0, __global INPUT_TYPE* input1, __private const int8 src0_size, //(batch, channel, height, width) __private const int4 src0C4_size, // nc4hw4 __private const int8 src1_size, @@ -104,9 +104,9 @@ __kernel void broadcast_binary_buf(__private int global_dim0, __private int glob int4 n = out_offset % dst_size.s0; const int src0_channel_block = (src0C4_size.z + 3) / 4; const int src1_channel_block = (src1C4_size.z + 3) / 4; - FLOAT4 in0, in1; - FLOAT* in0_ptr = (FLOAT*)&in0; - FLOAT* in1_ptr = (FLOAT*)&in1; + float4 in0, in1; + float* in0_ptr = (float*)&in0; + float* in1_ptr = (float*)&in1; { int4 w0 = w % (src0_size.s3 * src0_size.s4); @@ -125,7 +125,7 @@ __kernel void broadcast_binary_buf(__private int global_dim0, __private int glob int nc4 = c4offset % src0C4_size.w; int cc4_offset = cc4 / 4; int cc4_remain = cc4 % 4; - in0_ptr[i] = input0[((((nc4 * src0_channel_block) + cc4_offset) * src0C4_size.y + hc4) * src0C4_size.x + wc4) * 4 + cc4_remain]; + in0_ptr[i] = (float)input0[((((nc4 * src0_channel_block) + cc4_offset) * src0C4_size.y + hc4) * src0C4_size.x + wc4) * 4 + cc4_remain]; } } @@ -146,12 +146,12 @@ __kernel void broadcast_binary_buf(__private int global_dim0, __private int glob int nc4 = c4offset % src1C4_size.w; int cc4_offset = cc4 / 4; int cc4_remain = cc4 % 4; - in1_ptr[i] = input1[((((nc4 * src1_channel_block) + cc4_offset) * src1C4_size.y + hc4) * src1C4_size.x + wc4) * 4 + cc4_remain]; + in1_ptr[i] = (float)input1[((((nc4 * src1_channel_block) + cc4_offset) * src1C4_size.y + hc4) * src1C4_size.x + wc4) * 4 + cc4_remain]; } } - FLOAT4 out = CONVERT_FLOAT4(LOOP_BINARY_OPERATOR); - vstore4(out, 0, output + ((((no * channel_block) + co) * dst_height + ho) * dst_width + wo) * 4); + float4 out = LOOP_BINARY_OPERATOR; + vstore4(CONVERT_OUTPUT4(out), 0, output + ((((no * channel_block) + co) * dst_height + ho) * dst_width + wo) * 4); } } #endif diff --git a/source/backend/opencl/execution/cl/opencl_program.cc b/source/backend/opencl/execution/cl/opencl_program.cc index 671af5c65..b18253f2c 100644 --- a/source/backend/opencl/execution/cl/opencl_program.cc +++ b/source/backend/opencl/execution/cl/opencl_program.cc @@ -8,7 +8,7 @@ extern const std::map> OpenCLProgramMap { { "conv_2d", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x52,0x45,0x41,0x44,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4d,0x41,0x47,0x45,0x28,0x69,0x2c,0x20,0x62,0x61,0x73,0x65,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x23,0x23,0x69,0x20,0x2b,0x20,0x62,0x61,0x73,0x65,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x20,0x3d,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x23,0x23,0x69,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x62,0x5f,0x76,0x61,0x6c,0x75,0x65,0x29,0x29,0x3b,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x69,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x69,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x69,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x69,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x69,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x20,0x20,0x20,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x53,0x34,0x28,0x69,0x2c,0x20,0x6a,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x6a,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x6a,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x6a,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x6a,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x4f,0x50,0x54,0x28,0x69,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x5f,0x73,0x6d,0x23,0x23,0x69,0x5b,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x5d,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x5f,0x73,0x6d,0x23,0x23,0x69,0x5b,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x5d,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x5f,0x73,0x6d,0x23,0x23,0x69,0x5b,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x5d,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x5f,0x73,0x6d,0x23,0x23,0x69,0x5b,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x5d,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x20,0x20,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x55,0x4e,0x49,0x54,0x20,0x34,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x20,0x31,0x35,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x23,0x69,0x66,0x20,0x53,0x45,0x54,0x5f,0x41,0x54,0x54,0x52,0x49,0x42,0x55,0x54,0x45,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x77,0x6f,0x72,0x6b,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x68,0x69,0x6e,0x74,0x28,0x31,0x36,0x2c,0x20,0x31,0x36,0x2c,0x20,0x31,0x29,0x29,0x29,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x31,0x78,0x31,0x5f,0x6d,0x61,0x6c,0x69,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x55,0x46,0x46,0x45,0x52,0x5f,0x49,0x4e,0x50,0x5f,0x46,0x50,0x33,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x34,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x55,0x46,0x46,0x45,0x52,0x5f,0x49,0x4e,0x50,0x5f,0x46,0x50,0x33,0x32,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x29,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x3b,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x3b,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x33,0x3b,0x20,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x36,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0x20,0x2b,0x2b,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x77,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x55,0x46,0x46,0x45,0x52,0x5f,0x49,0x4e,0x50,0x5f,0x46,0x50,0x33,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x77,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x31,0x78,0x31,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x6f,0x77,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x6f,0x6c,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x34,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x62,0x69,0x61,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x5f,0x73,0x6d,0x30,0x5b,0x55,0x4e,0x49,0x54,0x2a,0x55,0x4e,0x49,0x54,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x5f,0x73,0x6d,0x31,0x5b,0x55,0x4e,0x49,0x54,0x2a,0x55,0x4e,0x49,0x54,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x5f,0x73,0x6d,0x32,0x5b,0x55,0x4e,0x49,0x54,0x2a,0x55,0x4e,0x49,0x54,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x5f,0x73,0x6d,0x33,0x5b,0x55,0x4e,0x49,0x54,0x2a,0x55,0x4e,0x49,0x54,0x5d,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x74,0x69,0x6c,0x65,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x55,0x4e,0x49,0x54,0x20,0x2d,0x31,0x29,0x2f,0x20,0x55,0x4e,0x49,0x54,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x6f,0x6c,0x5f,0x78,0x5f,0x75,0x6e,0x69,0x74,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x63,0x6f,0x6c,0x2c,0x20,0x55,0x4e,0x49,0x54,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x5f,0x78,0x5f,0x75,0x6e,0x69,0x74,0x20,0x2b,0x20,0x72,0x6f,0x77,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x74,0x20,0x3d,0x20,0x30,0x3b,0x20,0x74,0x20,0x3c,0x20,0x74,0x69,0x6c,0x65,0x73,0x3b,0x20,0x2b,0x2b,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x74,0x2c,0x20,0x55,0x4e,0x49,0x54,0x2c,0x20,0x72,0x6f,0x77,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x69,0x6e,0x5f,0x63,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x77,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x6d,0x30,0x5b,0x69,0x6e,0x5f,0x69,0x6e,0x64,0x65,0x78,0x5d,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x6d,0x31,0x5b,0x69,0x6e,0x5f,0x69,0x6e,0x64,0x65,0x78,0x5d,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2b,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x6d,0x32,0x5b,0x69,0x6e,0x5f,0x69,0x6e,0x64,0x65,0x78,0x5d,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2b,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x6d,0x33,0x5b,0x69,0x6e,0x5f,0x69,0x6e,0x64,0x65,0x78,0x5d,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2b,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x74,0x2c,0x20,0x55,0x4e,0x49,0x54,0x2a,0x34,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6b,0x20,0x3c,0x20,0x55,0x4e,0x49,0x54,0x3b,0x20,0x6b,0x2b,0x2b,0x29,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x63,0x78,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x2c,0x20,0x34,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x69,0x6e,0x64,0x65,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x5f,0x78,0x5f,0x75,0x6e,0x69,0x74,0x20,0x2b,0x20,0x6b,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x63,0x78,0x34,0x2b,0x2b,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x63,0x78,0x34,0x2b,0x2b,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x63,0x78,0x34,0x2b,0x2b,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x63,0x78,0x34,0x2b,0x2b,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x4f,0x50,0x54,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x4f,0x50,0x54,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x4f,0x50,0x54,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x4f,0x50,0x54,0x28,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x77,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x23,0x69,0x66,0x20,0x53,0x45,0x54,0x5f,0x41,0x54,0x54,0x52,0x49,0x42,0x55,0x54,0x45,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x77,0x6f,0x72,0x6b,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x68,0x69,0x6e,0x74,0x28,0x31,0x36,0x2c,0x20,0x31,0x36,0x2c,0x20,0x31,0x29,0x29,0x29,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x31,0x78,0x31,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x62,0x69,0x61,0x73,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x62,0x69,0x61,0x73,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x34,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x38,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x62,0x69,0x61,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x43,0x4f,0x4e,0x56,0x5f,0x53,0x31,0x44,0x31,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x2b,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x2b,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x2b,0x20,0x33,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2a,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x2c,0x20,0x49,0x4e,0x54,0x5f,0x4d,0x49,0x4e,0x2c,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x2c,0x20,0x49,0x4e,0x54,0x5f,0x4d,0x49,0x4e,0x2c,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x2c,0x20,0x49,0x4e,0x54,0x5f,0x4d,0x49,0x4e,0x2c,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x2c,0x20,0x49,0x4e,0x54,0x5f,0x4d,0x49,0x4e,0x2c,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x2b,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x34,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0x20,0x2b,0x2b,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x38,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x38,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x23,0x69,0x66,0x20,0x53,0x45,0x54,0x5f,0x41,0x54,0x54,0x52,0x49,0x42,0x55,0x54,0x45,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x77,0x6f,0x72,0x6b,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x68,0x69,0x6e,0x74,0x28,0x31,0x36,0x2c,0x20,0x31,0x36,0x2c,0x20,0x31,0x29,0x29,0x29,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x31,0x78,0x31,0x5f,0x63,0x38,0x68,0x31,0x77,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x62,0x69,0x61,0x73,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x62,0x69,0x61,0x73,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x38,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x33,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x62,0x69,0x61,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x62,0x69,0x61,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x43,0x4f,0x4e,0x56,0x5f,0x53,0x31,0x44,0x31,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x2b,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x2b,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x2b,0x20,0x33,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2a,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x2c,0x20,0x49,0x4e,0x54,0x5f,0x4d,0x49,0x4e,0x2c,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x2c,0x20,0x49,0x4e,0x54,0x5f,0x4d,0x49,0x4e,0x2c,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x2c,0x20,0x49,0x4e,0x54,0x5f,0x4d,0x49,0x4e,0x2c,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x2c,0x20,0x49,0x4e,0x54,0x5f,0x4d,0x49,0x4e,0x2c,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x2b,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x34,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x20,0x3d,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x34,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0x20,0x2b,0x2b,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x31,0x36,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x30,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x30,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x30,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x30,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x31,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x31,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x31,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x31,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x38,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x38,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x39,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x39,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x61,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x61,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x62,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x62,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x63,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x63,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x64,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x64,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x65,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x65,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x66,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x66,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x53,0x34,0x28,0x34,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x53,0x34,0x28,0x35,0x2c,0x20,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x53,0x34,0x28,0x36,0x2c,0x20,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x53,0x34,0x28,0x37,0x2c,0x20,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x23,0x69,0x66,0x20,0x53,0x45,0x54,0x5f,0x41,0x54,0x54,0x52,0x49,0x42,0x55,0x54,0x45,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x77,0x6f,0x72,0x6b,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x68,0x69,0x6e,0x74,0x28,0x31,0x36,0x2c,0x20,0x31,0x36,0x2c,0x20,0x31,0x29,0x29,0x29,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x63,0x34,0x68,0x31,0x77,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x49,0x41,0x53,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x62,0x69,0x61,0x73,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x49,0x41,0x53,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x62,0x69,0x61,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3c,0x3c,0x32,0x2c,0x20,0x2d,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x31,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x32,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x33,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x43,0x4f,0x4e,0x56,0x5f,0x53,0x31,0x44,0x31,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x2c,0x20,0x31,0x2c,0x20,0x2d,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x20,0x20,0x20,0x3d,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x65,0x6e,0x64,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x29,0x20,0x2b,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3c,0x20,0x30,0x29,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2c,0x20,0x2d,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x65,0x6e,0x64,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x29,0x20,0x2b,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3c,0x20,0x30,0x29,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x2c,0x20,0x69,0x6e,0x31,0x2c,0x20,0x69,0x6e,0x32,0x2c,0x20,0x69,0x6e,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x20,0x2b,0x2b,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x69,0x79,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x62,0x5f,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x69,0x79,0x20,0x2b,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x43,0x4f,0x4e,0x56,0x5f,0x53,0x31,0x44,0x31,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x45,0x41,0x44,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4d,0x41,0x47,0x45,0x28,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x45,0x41,0x44,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4d,0x41,0x47,0x45,0x28,0x31,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x45,0x41,0x44,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4d,0x41,0x47,0x45,0x28,0x32,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x45,0x41,0x44,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4d,0x41,0x47,0x45,0x28,0x33,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x31,0x3b,0x20,0x77,0x20,0x3c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0x20,0x77,0x2b,0x2b,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x69,0x6e,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x69,0x6e,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x69,0x6e,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x45,0x41,0x44,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4d,0x41,0x47,0x45,0x28,0x33,0x2c,0x20,0x77,0x29,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x30,0x3b,0x20,0x77,0x20,0x3c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0x20,0x77,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x77,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x45,0x41,0x44,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4d,0x41,0x47,0x45,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x45,0x41,0x44,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4d,0x41,0x47,0x45,0x28,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x45,0x41,0x44,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4d,0x41,0x47,0x45,0x28,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x45,0x41,0x44,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4d,0x41,0x47,0x45,0x28,0x33,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x23,0x69,0x66,0x20,0x53,0x45,0x54,0x5f,0x41,0x54,0x54,0x52,0x49,0x42,0x55,0x54,0x45,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x77,0x6f,0x72,0x6b,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x68,0x69,0x6e,0x74,0x28,0x31,0x36,0x2c,0x20,0x31,0x36,0x2c,0x20,0x31,0x29,0x29,0x29,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x63,0x38,0x68,0x34,0x77,0x31,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x49,0x41,0x53,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x62,0x69,0x61,0x73,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x49,0x41,0x53,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x62,0x69,0x61,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x62,0x69,0x61,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3c,0x3c,0x32,0x2c,0x20,0x2d,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x2c,0x20,0x69,0x6e,0x31,0x2c,0x20,0x69,0x6e,0x32,0x2c,0x20,0x69,0x6e,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x20,0x2b,0x2b,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x30,0x29,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0x20,0x69,0x79,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x30,0x20,0x3d,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x2b,0x20,0x69,0x79,0x20,0x2b,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x2b,0x20,0x69,0x79,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x2b,0x20,0x69,0x79,0x20,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x31,0x20,0x3d,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x2b,0x20,0x69,0x79,0x20,0x2b,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x2b,0x20,0x69,0x79,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x2b,0x20,0x69,0x79,0x20,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x32,0x20,0x3d,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x2b,0x20,0x69,0x79,0x20,0x2b,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x2b,0x20,0x69,0x79,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x2b,0x20,0x69,0x79,0x20,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x33,0x20,0x3d,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x2b,0x20,0x69,0x79,0x20,0x2b,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x2b,0x20,0x69,0x79,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x2b,0x20,0x69,0x79,0x20,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x78,0x20,0x3c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0x20,0x69,0x78,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x30,0x20,0x3d,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x2b,0x20,0x69,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x69,0x64,0x78,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x2b,0x20,0x69,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x2b,0x20,0x69,0x78,0x20,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x30,0x2c,0x20,0x68,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x30,0x2c,0x20,0x68,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x30,0x2c,0x20,0x68,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x30,0x2c,0x20,0x68,0x33,0x29,0x29,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x53,0x34,0x28,0x34,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x53,0x34,0x28,0x35,0x2c,0x20,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x53,0x34,0x28,0x36,0x2c,0x20,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x53,0x34,0x28,0x37,0x2c,0x20,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3e,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x31,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x32,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x33,0x29,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x31,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x32,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x31,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x2b,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3e,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x31,0x29,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x32,0x29,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x33,0x29,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x31,0x29,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x32,0x29,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x31,0x29,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x23,0x69,0x66,0x20,0x53,0x45,0x54,0x5f,0x41,0x54,0x54,0x52,0x49,0x42,0x55,0x54,0x45,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x77,0x6f,0x72,0x6b,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x68,0x69,0x6e,0x74,0x28,0x31,0x36,0x2c,0x20,0x31,0x36,0x2c,0x20,0x31,0x29,0x29,0x29,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x63,0x34,0x68,0x34,0x77,0x31,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x49,0x41,0x53,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x62,0x69,0x61,0x73,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x49,0x41,0x53,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x62,0x69,0x61,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3c,0x3c,0x32,0x2c,0x20,0x2d,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x2c,0x20,0x69,0x6e,0x31,0x2c,0x20,0x69,0x6e,0x32,0x2c,0x20,0x69,0x6e,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x20,0x2b,0x2b,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x30,0x29,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0x20,0x69,0x79,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x30,0x20,0x3d,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x2b,0x20,0x69,0x79,0x20,0x2b,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x2b,0x20,0x69,0x79,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x2b,0x20,0x69,0x79,0x20,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x31,0x20,0x3d,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x2b,0x20,0x69,0x79,0x20,0x2b,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x2b,0x20,0x69,0x79,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x2b,0x20,0x69,0x79,0x20,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x32,0x20,0x3d,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x2b,0x20,0x69,0x79,0x20,0x2b,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x2b,0x20,0x69,0x79,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x2b,0x20,0x69,0x79,0x20,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x33,0x20,0x3d,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x2b,0x20,0x69,0x79,0x20,0x2b,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x2b,0x20,0x69,0x79,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x2b,0x20,0x69,0x79,0x20,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x78,0x20,0x3c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0x20,0x69,0x78,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x30,0x20,0x3d,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x2b,0x20,0x69,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x69,0x64,0x78,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x2b,0x20,0x69,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x2b,0x20,0x69,0x78,0x20,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x30,0x2c,0x20,0x68,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x30,0x2c,0x20,0x68,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x30,0x2c,0x20,0x68,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x30,0x2c,0x20,0x68,0x33,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3e,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x31,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x32,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x33,0x29,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x31,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x32,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x31,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x52,0x45,0x41,0x44,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4d,0x41,0x47,0x45,0x28,0x69,0x2c,0x20,0x62,0x61,0x73,0x65,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x23,0x23,0x69,0x20,0x2b,0x20,0x62,0x61,0x73,0x65,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x20,0x3d,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x23,0x23,0x69,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x62,0x5f,0x76,0x61,0x6c,0x75,0x65,0x29,0x29,0x3b,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x69,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x69,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x69,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x69,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x69,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x20,0x20,0x20,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x53,0x34,0x28,0x69,0x2c,0x20,0x6a,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x6a,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x6a,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x6a,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x6a,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x4f,0x50,0x54,0x28,0x69,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x5f,0x73,0x6d,0x23,0x23,0x69,0x5b,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x5d,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x5f,0x73,0x6d,0x23,0x23,0x69,0x5b,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x5d,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x5f,0x73,0x6d,0x23,0x23,0x69,0x5b,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x5d,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x5f,0x73,0x6d,0x23,0x23,0x69,0x5b,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x5d,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x20,0x20,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x55,0x4e,0x49,0x54,0x20,0x34,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x20,0x31,0x35,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x23,0x69,0x66,0x20,0x53,0x45,0x54,0x5f,0x41,0x54,0x54,0x52,0x49,0x42,0x55,0x54,0x45,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x77,0x6f,0x72,0x6b,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x68,0x69,0x6e,0x74,0x28,0x31,0x36,0x2c,0x20,0x31,0x36,0x2c,0x20,0x31,0x29,0x29,0x29,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x31,0x78,0x31,0x5f,0x6d,0x61,0x6c,0x69,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x55,0x46,0x46,0x45,0x52,0x5f,0x49,0x4e,0x50,0x5f,0x46,0x50,0x33,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x34,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x55,0x46,0x46,0x45,0x52,0x5f,0x49,0x4e,0x50,0x5f,0x46,0x50,0x33,0x32,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x29,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x3b,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x3b,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x33,0x3b,0x20,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x36,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0x20,0x2b,0x2b,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x77,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x55,0x46,0x46,0x45,0x52,0x5f,0x49,0x4e,0x50,0x5f,0x46,0x50,0x33,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x77,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x23,0x69,0x66,0x20,0x53,0x45,0x54,0x5f,0x41,0x54,0x54,0x52,0x49,0x42,0x55,0x54,0x45,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x77,0x6f,0x72,0x6b,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x68,0x69,0x6e,0x74,0x28,0x31,0x36,0x2c,0x20,0x31,0x36,0x2c,0x20,0x31,0x29,0x29,0x29,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x31,0x78,0x31,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x34,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x38,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x62,0x69,0x61,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x43,0x4f,0x4e,0x56,0x5f,0x53,0x31,0x44,0x31,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x2b,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x2b,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x2b,0x20,0x33,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2a,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x2c,0x20,0x49,0x4e,0x54,0x5f,0x4d,0x49,0x4e,0x2c,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x2c,0x20,0x49,0x4e,0x54,0x5f,0x4d,0x49,0x4e,0x2c,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x2c,0x20,0x49,0x4e,0x54,0x5f,0x4d,0x49,0x4e,0x2c,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x2c,0x20,0x49,0x4e,0x54,0x5f,0x4d,0x49,0x4e,0x2c,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x2b,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x34,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0x20,0x2b,0x2b,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x38,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x38,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x23,0x69,0x66,0x20,0x53,0x45,0x54,0x5f,0x41,0x54,0x54,0x52,0x49,0x42,0x55,0x54,0x45,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x77,0x6f,0x72,0x6b,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x68,0x69,0x6e,0x74,0x28,0x31,0x36,0x2c,0x20,0x31,0x36,0x2c,0x20,0x31,0x29,0x29,0x29,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x31,0x78,0x31,0x5f,0x63,0x38,0x68,0x31,0x77,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x38,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x33,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x62,0x69,0x61,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x62,0x69,0x61,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x43,0x4f,0x4e,0x56,0x5f,0x53,0x31,0x44,0x31,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x2b,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x2b,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x2b,0x20,0x33,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2a,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x20,0x3d,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x2c,0x20,0x49,0x4e,0x54,0x5f,0x4d,0x49,0x4e,0x2c,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x2c,0x20,0x49,0x4e,0x54,0x5f,0x4d,0x49,0x4e,0x2c,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x2c,0x20,0x49,0x4e,0x54,0x5f,0x4d,0x49,0x4e,0x2c,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x2c,0x20,0x49,0x4e,0x54,0x5f,0x4d,0x49,0x4e,0x2c,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x2b,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x34,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x20,0x3d,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x34,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0x20,0x2b,0x2b,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x33,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x31,0x36,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x30,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x30,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x30,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x30,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x31,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x31,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x31,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x31,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x38,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x38,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x39,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x39,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x61,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x61,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x62,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x62,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x63,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x63,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x64,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x64,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x65,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x65,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x66,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x66,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x53,0x34,0x28,0x34,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x53,0x34,0x28,0x35,0x2c,0x20,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x53,0x34,0x28,0x36,0x2c,0x20,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x53,0x34,0x28,0x37,0x2c,0x20,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x23,0x69,0x66,0x20,0x53,0x45,0x54,0x5f,0x41,0x54,0x54,0x52,0x49,0x42,0x55,0x54,0x45,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x77,0x6f,0x72,0x6b,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x68,0x69,0x6e,0x74,0x28,0x31,0x36,0x2c,0x20,0x31,0x36,0x2c,0x20,0x31,0x29,0x29,0x29,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x63,0x34,0x68,0x31,0x77,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x49,0x41,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x62,0x69,0x61,0x73,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x49,0x41,0x53,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x62,0x69,0x61,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3c,0x3c,0x32,0x2c,0x20,0x2d,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x31,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x32,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x33,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x43,0x4f,0x4e,0x56,0x5f,0x53,0x31,0x44,0x31,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x2c,0x20,0x31,0x2c,0x20,0x2d,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x20,0x20,0x20,0x3d,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x65,0x6e,0x64,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x29,0x20,0x2b,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3c,0x20,0x30,0x29,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2c,0x20,0x2d,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x65,0x6e,0x64,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x29,0x20,0x2b,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3c,0x20,0x30,0x29,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x2c,0x20,0x69,0x6e,0x31,0x2c,0x20,0x69,0x6e,0x32,0x2c,0x20,0x69,0x6e,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x20,0x2b,0x2b,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x69,0x79,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x62,0x5f,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x69,0x79,0x20,0x2b,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x43,0x4f,0x4e,0x56,0x5f,0x53,0x31,0x44,0x31,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x45,0x41,0x44,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4d,0x41,0x47,0x45,0x28,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x45,0x41,0x44,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4d,0x41,0x47,0x45,0x28,0x31,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x45,0x41,0x44,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4d,0x41,0x47,0x45,0x28,0x32,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x45,0x41,0x44,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4d,0x41,0x47,0x45,0x28,0x33,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x31,0x3b,0x20,0x77,0x20,0x3c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0x20,0x77,0x2b,0x2b,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x69,0x6e,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x69,0x6e,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x69,0x6e,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x45,0x41,0x44,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4d,0x41,0x47,0x45,0x28,0x33,0x2c,0x20,0x77,0x29,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x30,0x3b,0x20,0x77,0x20,0x3c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0x20,0x77,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x77,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x45,0x41,0x44,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4d,0x41,0x47,0x45,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x45,0x41,0x44,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4d,0x41,0x47,0x45,0x28,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x45,0x41,0x44,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4d,0x41,0x47,0x45,0x28,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x45,0x41,0x44,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4d,0x41,0x47,0x45,0x28,0x33,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x23,0x69,0x66,0x20,0x53,0x45,0x54,0x5f,0x41,0x54,0x54,0x52,0x49,0x42,0x55,0x54,0x45,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x77,0x6f,0x72,0x6b,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x68,0x69,0x6e,0x74,0x28,0x31,0x36,0x2c,0x20,0x31,0x36,0x2c,0x20,0x31,0x29,0x29,0x29,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x63,0x38,0x68,0x34,0x77,0x31,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x49,0x41,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x62,0x69,0x61,0x73,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x49,0x41,0x53,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x62,0x69,0x61,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x62,0x69,0x61,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3c,0x3c,0x32,0x2c,0x20,0x2d,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x2c,0x20,0x69,0x6e,0x31,0x2c,0x20,0x69,0x6e,0x32,0x2c,0x20,0x69,0x6e,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x20,0x2b,0x2b,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x30,0x29,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0x20,0x69,0x79,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x30,0x20,0x3d,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x2b,0x20,0x69,0x79,0x20,0x2b,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x2b,0x20,0x69,0x79,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x2b,0x20,0x69,0x79,0x20,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x31,0x20,0x3d,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x2b,0x20,0x69,0x79,0x20,0x2b,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x2b,0x20,0x69,0x79,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x2b,0x20,0x69,0x79,0x20,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x32,0x20,0x3d,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x2b,0x20,0x69,0x79,0x20,0x2b,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x2b,0x20,0x69,0x79,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x2b,0x20,0x69,0x79,0x20,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x33,0x20,0x3d,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x2b,0x20,0x69,0x79,0x20,0x2b,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x2b,0x20,0x69,0x79,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x2b,0x20,0x69,0x79,0x20,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x78,0x20,0x3c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0x20,0x69,0x78,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x30,0x20,0x3d,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x2b,0x20,0x69,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x69,0x64,0x78,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x2b,0x20,0x69,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x2b,0x20,0x69,0x78,0x20,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x30,0x2c,0x20,0x68,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x30,0x2c,0x20,0x68,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x30,0x2c,0x20,0x68,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x30,0x2c,0x20,0x68,0x33,0x29,0x29,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x53,0x34,0x28,0x34,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x53,0x34,0x28,0x35,0x2c,0x20,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x53,0x34,0x28,0x36,0x2c,0x20,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x53,0x34,0x28,0x37,0x2c,0x20,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3e,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x31,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x32,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x33,0x29,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x31,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x32,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x31,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x2b,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3e,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x31,0x29,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x32,0x29,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x33,0x29,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x31,0x29,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x32,0x29,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x31,0x29,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x23,0x69,0x66,0x20,0x53,0x45,0x54,0x5f,0x41,0x54,0x54,0x52,0x49,0x42,0x55,0x54,0x45,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x77,0x6f,0x72,0x6b,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x68,0x69,0x6e,0x74,0x28,0x31,0x36,0x2c,0x20,0x31,0x36,0x2c,0x20,0x31,0x29,0x29,0x29,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x63,0x34,0x68,0x34,0x77,0x31,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x49,0x41,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x62,0x69,0x61,0x73,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x6c,0x65,0x6e,0x67,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x49,0x41,0x53,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x62,0x69,0x61,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3c,0x3c,0x32,0x2c,0x20,0x2d,0x70,0x61,0x64,0x64,0x69,0x6e,0x67,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x2c,0x20,0x69,0x6e,0x31,0x2c,0x20,0x69,0x6e,0x32,0x2c,0x20,0x69,0x6e,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x6c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x20,0x2b,0x2b,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x30,0x29,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0x20,0x69,0x79,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x30,0x20,0x3d,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x2b,0x20,0x69,0x79,0x20,0x2b,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x2b,0x20,0x69,0x79,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x2b,0x20,0x69,0x79,0x20,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x31,0x20,0x3d,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x2b,0x20,0x69,0x79,0x20,0x2b,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x2b,0x20,0x69,0x79,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x2b,0x20,0x69,0x79,0x20,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x32,0x20,0x3d,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x2b,0x20,0x69,0x79,0x20,0x2b,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x2b,0x20,0x69,0x79,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x2b,0x20,0x69,0x79,0x20,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x33,0x20,0x3d,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x2b,0x20,0x69,0x79,0x20,0x2b,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x2b,0x20,0x69,0x79,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x2b,0x20,0x69,0x79,0x20,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x78,0x20,0x3c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0x20,0x69,0x78,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x69,0x6f,0x6e,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x30,0x20,0x3d,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x2b,0x20,0x69,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x69,0x64,0x78,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x2b,0x20,0x69,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x30,0x20,0x2b,0x20,0x69,0x78,0x20,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x30,0x2c,0x20,0x68,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x30,0x2c,0x20,0x68,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x30,0x2c,0x20,0x68,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x30,0x2c,0x20,0x68,0x33,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x42,0x55,0x46,0x46,0x45,0x52,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x5f,0x79,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3e,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x31,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x32,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x33,0x29,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x31,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x32,0x29,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x79,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x20,0x2b,0x20,0x31,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa, } }, { "deconv_2d", @@ -16,7 +16,7 @@ extern const std::map> OpenCLProgramMap }, { "unary", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x65,0x6c,0x75,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x30,0x2e,0x37,0x39,0x37,0x38,0x38,0x34,0x35,0x38,0x66,0x20,0x2a,0x20,0x28,0x30,0x2e,0x30,0x34,0x34,0x37,0x31,0x35,0x66,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2b,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x78,0x32,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x64,0x73,0x74,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3e,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x35,0x2e,0x30,0x66,0x20,0x3f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x3a,0x20,0x28,0x76,0x61,0x6c,0x75,0x65,0x20,0x3c,0x3d,0x20,0x2d,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x35,0x2e,0x30,0x66,0x20,0x3f,0x20,0x2d,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x3a,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x28,0x31,0x33,0x35,0x31,0x33,0x35,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x31,0x37,0x33,0x32,0x35,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x33,0x37,0x38,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x29,0x29,0x29,0x29,0x20,0x2f,0x20,0x28,0x31,0x33,0x35,0x31,0x33,0x35,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x36,0x32,0x33,0x37,0x30,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x33,0x31,0x35,0x30,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x32,0x38,0x2e,0x30,0x66,0x29,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x31,0x2e,0x30,0x66,0x20,0x2b,0x20,0x64,0x73,0x74,0x29,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2a,0x20,0x30,0x2e,0x35,0x66,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x75,0x6e,0x61,0x72,0x79,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x62,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x77,0x2c,0x20,0x68,0x62,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x77,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x70,0x6f,0x73,0x2c,0x20,0x68,0x62,0x29,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x70,0x6f,0x73,0x2c,0x20,0x68,0x62,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x70,0x6f,0x73,0x2c,0x20,0x68,0x62,0x29,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x7d,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x65,0x6c,0x75,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x30,0x2e,0x37,0x39,0x37,0x38,0x38,0x34,0x35,0x38,0x66,0x20,0x2a,0x20,0x28,0x30,0x2e,0x30,0x34,0x34,0x37,0x31,0x35,0x66,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2b,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x78,0x32,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x64,0x73,0x74,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3e,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x35,0x2e,0x30,0x66,0x20,0x3f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x3a,0x20,0x28,0x76,0x61,0x6c,0x75,0x65,0x20,0x3c,0x3d,0x20,0x2d,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x35,0x2e,0x30,0x66,0x20,0x3f,0x20,0x2d,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x3a,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x28,0x31,0x33,0x35,0x31,0x33,0x35,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x31,0x37,0x33,0x32,0x35,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x33,0x37,0x38,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x29,0x29,0x29,0x29,0x20,0x2f,0x20,0x28,0x31,0x33,0x35,0x31,0x33,0x35,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x36,0x32,0x33,0x37,0x30,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x33,0x31,0x35,0x30,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x32,0x38,0x2e,0x30,0x66,0x29,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x31,0x2e,0x30,0x66,0x20,0x2b,0x20,0x64,0x73,0x74,0x29,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2a,0x20,0x30,0x2e,0x35,0x66,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x75,0x6e,0x61,0x72,0x79,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x62,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x77,0x2c,0x20,0x68,0x62,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x77,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x70,0x6f,0x73,0x2c,0x20,0x68,0x62,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x49,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x70,0x6f,0x73,0x2c,0x20,0x68,0x62,0x29,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x7d,0xa, } }, #ifndef MNN_OPENCL_BUFFER_CLOSED { @@ -30,12 +30,12 @@ extern const std::map> OpenCLProgramMap }, { "select", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x5f,0x69,0x6d,0x67,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x79,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x64,0x78,0x2c,0x20,0x69,0x64,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x5f,0x76,0x65,0x63,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x64,0x78,0x2c,0x20,0x69,0x64,0x79,0x29,0x29,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x49,0x4e,0x53,0x49,0x5a,0x45,0x31,0x5f,0x45,0x55,0x51,0x41,0x4c,0x5f,0x31,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x30,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x30,0x2e,0x78,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x64,0x78,0x2c,0x20,0x69,0x64,0x79,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x49,0x4e,0x53,0x49,0x5a,0x45,0x32,0x5f,0x45,0x55,0x51,0x41,0x4c,0x5f,0x31,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x30,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x31,0x2e,0x78,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x64,0x78,0x2c,0x20,0x69,0x64,0x79,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x31,0x2c,0x20,0x69,0x6e,0x30,0x2c,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x5f,0x76,0x65,0x63,0x20,0x3d,0x3d,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x64,0x78,0x2c,0x20,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x7d,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x5f,0x69,0x6d,0x67,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x79,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x64,0x78,0x2c,0x20,0x69,0x64,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x5f,0x76,0x65,0x63,0x20,0x3d,0x20,0x72,0x65,0x61,0x64,0x5f,0x69,0x6d,0x61,0x67,0x65,0x69,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x64,0x78,0x2c,0x20,0x69,0x64,0x79,0x29,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x49,0x4e,0x53,0x49,0x5a,0x45,0x31,0x5f,0x45,0x55,0x51,0x41,0x4c,0x5f,0x31,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x30,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x30,0x2e,0x78,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x64,0x78,0x2c,0x20,0x69,0x64,0x79,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x49,0x4e,0x53,0x49,0x5a,0x45,0x32,0x5f,0x45,0x55,0x51,0x41,0x4c,0x5f,0x31,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x30,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x31,0x2e,0x78,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x64,0x78,0x2c,0x20,0x69,0x64,0x79,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x31,0x2c,0x20,0x69,0x6e,0x30,0x2c,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x5f,0x76,0x65,0x63,0x20,0x3d,0x3d,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x64,0x78,0x2c,0x20,0x69,0x64,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x7d,0xa, } }, #ifndef MNN_OPENCL_BUFFER_CLOSED { "range_buf", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x61,0x6e,0x67,0x65,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x69,0x6e,0x64,0x65,0x78,0x34,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x73,0x69,0x7a,0x65,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x73,0x69,0x7a,0x65,0x20,0x2a,0x20,0x32,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x73,0x69,0x7a,0x65,0x20,0x2a,0x20,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5b,0x30,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x73,0x74,0x65,0x70,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x5b,0x30,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x69,0x6e,0x64,0x65,0x78,0x34,0x29,0x20,0x2a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x74,0x65,0x70,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x61,0x6e,0x67,0x65,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x69,0x6e,0x64,0x65,0x78,0x34,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x73,0x69,0x7a,0x65,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x73,0x69,0x7a,0x65,0x20,0x2a,0x20,0x32,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x73,0x69,0x7a,0x65,0x20,0x2a,0x20,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5b,0x30,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x73,0x74,0x65,0x70,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x5b,0x30,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x29,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x69,0x6e,0x64,0x65,0x78,0x34,0x29,0x20,0x2a,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x29,0x73,0x74,0x65,0x70,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa, } }, #endif { @@ -48,7 +48,7 @@ extern const std::map> OpenCLProgramMap }, { "raster", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x73,0x65,0x74,0x5f,0x7a,0x65,0x72,0x6f,0x28,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x78,0x2c,0x20,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x79,0x2a,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x2b,0x20,0x78,0x5d,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x30,0x2e,0x30,0x66,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x73,0x65,0x74,0x5f,0x7a,0x65,0x72,0x6f,0x28,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x78,0x2c,0x20,0x79,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x78,0x2c,0x20,0x79,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x2e,0x30,0x66,0x29,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x61,0x73,0x74,0x65,0x72,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x7a,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x78,0x2c,0x20,0x79,0x2c,0x20,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x7a,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x7a,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5b,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5d,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x61,0x73,0x74,0x65,0x72,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x63,0x6f,0x6d,0x62,0x69,0x6e,0x65,0x28,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x6f,0x6d,0x62,0x69,0x6e,0x65,0x53,0x72,0x63,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x6f,0x6d,0x62,0x69,0x6e,0x65,0x44,0x73,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x30,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x7a,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x64,0x78,0x2c,0x20,0x79,0x2c,0x20,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x69,0x64,0x78,0x20,0x25,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x20,0x3d,0x20,0x69,0x64,0x78,0x20,0x2f,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x64,0x20,0x2a,0x20,0x63,0x6f,0x6d,0x62,0x69,0x6e,0x65,0x53,0x72,0x63,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x7a,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x64,0x20,0x2a,0x20,0x63,0x6f,0x6d,0x62,0x69,0x6e,0x65,0x44,0x73,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x7a,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5b,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5d,0x3b,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x61,0x73,0x74,0x65,0x72,0x5f,0x69,0x6d,0x61,0x67,0x65,0x28,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x7a,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x78,0x2c,0x20,0x79,0x2c,0x20,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x7a,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x7a,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x5f,0x6e,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x2f,0x20,0x28,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2b,0x33,0x29,0x2f,0x34,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x28,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2b,0x33,0x29,0x2f,0x34,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x5f,0x63,0x34,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2f,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x25,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x5f,0x68,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2f,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x25,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x5f,0x77,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x5f,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x2f,0x20,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2b,0x33,0x29,0x2f,0x34,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2b,0x33,0x29,0x2f,0x34,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x5f,0x63,0x34,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2f,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x25,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x5f,0x68,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2f,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x25,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x5f,0x77,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x5f,0x63,0x34,0x2a,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x5f,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x31,0x20,0x3d,0x20,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x5f,0x6e,0x2a,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x5f,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x5f,0x63,0x34,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x5f,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x5f,0x6e,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x5f,0x68,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x30,0x2c,0x20,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x30,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x31,0x29,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x7d,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x73,0x65,0x74,0x5f,0x7a,0x65,0x72,0x6f,0x28,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x78,0x2c,0x20,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x79,0x2a,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x2b,0x20,0x78,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x28,0x30,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x73,0x65,0x74,0x5f,0x7a,0x65,0x72,0x6f,0x28,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x78,0x2c,0x20,0x79,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x78,0x2c,0x20,0x79,0x29,0x2c,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x29,0x28,0x30,0x29,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x61,0x73,0x74,0x65,0x72,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x64,0x69,0x72,0x65,0x63,0x74,0x28,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x6f,0x6d,0x62,0x69,0x6e,0x65,0x53,0x72,0x63,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x6f,0x6d,0x62,0x69,0x6e,0x65,0x44,0x73,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x30,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x7a,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x64,0x78,0x2c,0x20,0x79,0x2c,0x20,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x69,0x64,0x78,0x20,0x25,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x20,0x3d,0x20,0x69,0x64,0x78,0x20,0x2f,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x64,0x20,0x2a,0x20,0x63,0x6f,0x6d,0x62,0x69,0x6e,0x65,0x53,0x72,0x63,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x7a,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x64,0x20,0x2a,0x20,0x63,0x6f,0x6d,0x62,0x69,0x6e,0x65,0x44,0x73,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x7a,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x44,0x41,0x54,0x41,0x5f,0x46,0x4f,0x52,0x4d,0x41,0x54,0x5f,0x4e,0x48,0x57,0x43,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x73,0x72,0x63,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x73,0x72,0x63,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x62,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x2f,0x20,0x73,0x72,0x63,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x73,0x72,0x63,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x73,0x72,0x63,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x62,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x2f,0x20,0x73,0x72,0x63,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x63,0x6f,0x6f,0x72,0x64,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x28,0x69,0x6e,0x5f,0x63,0x20,0x2f,0x20,0x34,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x2c,0x20,0x69,0x6e,0x5f,0x62,0x20,0x2a,0x20,0x73,0x72,0x63,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x63,0x6f,0x6f,0x72,0x64,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x2a,0x29,0x26,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x70,0x74,0x72,0x5b,0x69,0x6e,0x5f,0x63,0x20,0x25,0x20,0x34,0x5d,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x61,0x73,0x74,0x65,0x72,0x5f,0x69,0x6d,0x61,0x67,0x65,0x28,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x7a,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x78,0x2c,0x20,0x79,0x2c,0x20,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x7a,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x7a,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x5f,0x6e,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x2f,0x20,0x28,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2b,0x33,0x29,0x2f,0x34,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x28,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2b,0x33,0x29,0x2f,0x34,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x5f,0x63,0x34,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2f,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x25,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x5f,0x68,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2f,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x25,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x5f,0x77,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x5f,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x2f,0x20,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2b,0x33,0x29,0x2f,0x34,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2b,0x33,0x29,0x2f,0x34,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x5f,0x63,0x34,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2f,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x25,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x5f,0x68,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2f,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x25,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x5f,0x77,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x5f,0x63,0x34,0x2a,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x5f,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x31,0x20,0x3d,0x20,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x5f,0x6e,0x2a,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x5f,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x5f,0x63,0x34,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x5f,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x5f,0x6e,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x5f,0x68,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x30,0x2c,0x20,0x69,0x6e,0x70,0x5f,0x69,0x64,0x78,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x30,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x31,0x29,0x2c,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x49,0x34,0x28,0x6f,0x75,0x74,0x29,0x29,0x3b,0xa,0x7d,0xa, } }, #ifndef MNN_OPENCL_BUFFER_CLOSED #ifdef MNN_SUPPORT_INTEL_SUBGROUP @@ -59,6 +59,12 @@ extern const std::map> OpenCLProgramMap #endif #endif #ifndef MNN_OPENCL_BUFFER_CLOSED +{ + "conv_2d_int_buf", + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x52,0x45,0x41,0x44,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4d,0x41,0x47,0x45,0x28,0x69,0x2c,0x20,0x62,0x61,0x73,0x65,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x23,0x23,0x69,0x20,0x2b,0x20,0x62,0x61,0x73,0x65,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x20,0x3d,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x20,0x25,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x6c,0x65,0x6e,0x67,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x23,0x23,0x69,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x29,0x3d,0x3d,0x2d,0x31,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x69,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x69,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x69,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x69,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x69,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x20,0x31,0x35,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x69,0x6e,0x74,0x5f,0x63,0x34,0x68,0x31,0x77,0x31,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x75,0x73,0x68,0x6f,0x72,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x20,0x5b,0x31,0x2c,0x20,0x20,0x34,0x2a,0x69,0x63,0x43,0x34,0x2c,0x20,0x20,0x6f,0x63,0x43,0x34,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x2c,0x20,0x20,0x31,0x5d,0x20,0x78,0x69,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x69,0x79,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x78,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x69,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x69,0x78,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x79,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x20,0x3d,0x20,0x28,0x69,0x78,0x2d,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2f,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x69,0x6e,0x74,0x5f,0x63,0x34,0x68,0x31,0x77,0x32,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0x2f,0x2f,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x20,0x77,0x69,0x64,0x74,0x68,0x27,0x73,0x20,0x6e,0x75,0x6d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x75,0x73,0x68,0x6f,0x72,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x20,0x5b,0x31,0x2c,0x20,0x20,0x34,0x2a,0x69,0x63,0x43,0x34,0x2c,0x20,0x20,0x6f,0x63,0x43,0x34,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x2c,0x20,0x20,0x31,0x5d,0x20,0x78,0x69,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x69,0x79,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x79,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x66,0x77,0x20,0x3d,0x20,0x30,0x3b,0x20,0x66,0x77,0x20,0x3c,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x3b,0x20,0x66,0x77,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x69,0x6e,0x74,0x5f,0x63,0x34,0x68,0x31,0x77,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x75,0x73,0x68,0x6f,0x72,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x20,0x5b,0x31,0x2c,0x20,0x20,0x34,0x2a,0x69,0x63,0x43,0x34,0x2c,0x20,0x20,0x6f,0x63,0x43,0x34,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x2c,0x20,0x20,0x31,0x5d,0x20,0x78,0x69,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x69,0x79,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x79,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x66,0x77,0x20,0x3d,0x20,0x30,0x3b,0x20,0x66,0x77,0x20,0x3c,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x3b,0x20,0x66,0x77,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x69,0x6e,0x74,0x5f,0x63,0x34,0x68,0x34,0x77,0x31,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x75,0x73,0x68,0x6f,0x72,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x20,0x5b,0x31,0x2c,0x20,0x20,0x34,0x2a,0x69,0x63,0x43,0x34,0x2c,0x20,0x20,0x6f,0x63,0x43,0x34,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x2c,0x20,0x20,0x31,0x5d,0x20,0x78,0x69,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x3b,0x20,0x69,0x79,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x79,0x29,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x66,0x77,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x66,0x77,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x66,0x77,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x33,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x33,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x69,0x6e,0x74,0x5f,0x63,0x38,0x68,0x34,0x77,0x31,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x75,0x73,0x68,0x6f,0x72,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x20,0x5b,0x31,0x2c,0x20,0x20,0x34,0x2a,0x69,0x63,0x43,0x34,0x2c,0x20,0x20,0x6f,0x63,0x43,0x34,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x2c,0x20,0x20,0x31,0x5d,0x20,0x78,0x69,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x3b,0x20,0x69,0x79,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x79,0x29,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x66,0x77,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x66,0x77,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x66,0x77,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x33,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x33,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x33,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x33,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x69,0x6e,0x74,0x5f,0x63,0x38,0x68,0x32,0x77,0x31,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x3a,0x20,0x5b,0x69,0x63,0x2f,0x34,0x2c,0x20,0x6f,0x63,0x2c,0x20,0x34,0x5d,0x2c,0x20,0x6c,0x6f,0x6f,0x70,0x3a,0x20,0x69,0x63,0x2f,0x34,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x75,0x73,0x68,0x6f,0x72,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x20,0x5b,0x31,0x2c,0x20,0x20,0x34,0x2a,0x69,0x63,0x43,0x34,0x2c,0x20,0x20,0x6f,0x63,0x43,0x34,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x2c,0x20,0x20,0x31,0x5d,0x20,0x78,0x69,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x3b,0x20,0x69,0x79,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x79,0x29,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x66,0x77,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x66,0x77,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x66,0x77,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x69,0x6e,0x74,0x5f,0x63,0x38,0x68,0x31,0x77,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x75,0x73,0x68,0x6f,0x72,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x20,0x5b,0x31,0x2c,0x20,0x20,0x34,0x2a,0x69,0x63,0x43,0x34,0x2c,0x20,0x20,0x6f,0x63,0x43,0x34,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x2c,0x20,0x20,0x31,0x5d,0x20,0x78,0x69,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x69,0x79,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x79,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x66,0x77,0x20,0x3d,0x20,0x30,0x3b,0x20,0x66,0x77,0x20,0x3c,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x3b,0x20,0x66,0x77,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x2c,0x20,0x6f,0x75,0x74,0x36,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x2c,0x20,0x6f,0x75,0x74,0x36,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa, } + }, +#endif +#ifndef MNN_OPENCL_BUFFER_CLOSED { "interp_buf", { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x65,0x61,0x72,0x65,0x73,0x74,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x63,0x61,0x6c,0x65,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x63,0x61,0x6c,0x65,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x55,0x53,0x45,0x5f,0x52,0x4f,0x55,0x4e,0x44,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x78,0x28,0x30,0x2c,0x20,0x28,0x69,0x6e,0x74,0x29,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x30,0x2e,0x34,0x39,0x39,0x66,0x29,0x29,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x2d,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x78,0x28,0x30,0x2c,0x20,0x28,0x69,0x6e,0x74,0x29,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x30,0x2e,0x34,0x39,0x39,0x66,0x29,0x29,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2d,0x31,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x78,0x28,0x30,0x2c,0x20,0x28,0x69,0x6e,0x74,0x29,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x29,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x2d,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x78,0x28,0x30,0x2c,0x20,0x28,0x69,0x6e,0x74,0x29,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x29,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2d,0x31,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x6e,0x64,0x65,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x6e,0x64,0x65,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x69,0x6c,0x69,0x6e,0x65,0x61,0x72,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x63,0x61,0x6c,0x65,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x63,0x61,0x6c,0x65,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x78,0x28,0x30,0x2c,0x20,0x28,0x69,0x6e,0x74,0x29,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x29,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x2d,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x78,0x28,0x30,0x2c,0x20,0x28,0x69,0x6e,0x74,0x29,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x29,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2d,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x78,0x28,0x30,0x2c,0x20,0x28,0x69,0x6e,0x74,0x29,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2b,0x31,0x29,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x2d,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x78,0x28,0x30,0x2c,0x20,0x28,0x69,0x6e,0x74,0x29,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2b,0x31,0x29,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2d,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x66,0x61,0x63,0x74,0x6f,0x72,0x5f,0x77,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2d,0x20,0x28,0x69,0x6e,0x74,0x29,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x66,0x61,0x63,0x74,0x6f,0x72,0x5f,0x68,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2d,0x20,0x28,0x69,0x6e,0x74,0x29,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x30,0x30,0x20,0x3d,0x20,0x28,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x6e,0x64,0x65,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x6e,0x64,0x65,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x30,0x31,0x20,0x3d,0x20,0x28,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x6e,0x64,0x65,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x6e,0x64,0x65,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x31,0x30,0x20,0x3d,0x20,0x28,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x6e,0x64,0x65,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x6e,0x64,0x65,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x31,0x31,0x20,0x3d,0x20,0x28,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x6e,0x64,0x65,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x6e,0x64,0x65,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x30,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x30,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x30,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x30,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x31,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x31,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x31,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x31,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x28,0x31,0x2e,0x30,0x2d,0x66,0x61,0x63,0x74,0x6f,0x72,0x5f,0x77,0x29,0x2a,0x28,0x31,0x2e,0x30,0x2d,0x66,0x61,0x63,0x74,0x6f,0x72,0x5f,0x68,0x29,0x29,0x2a,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x5f,0x30,0x30,0x29,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x66,0x61,0x63,0x74,0x6f,0x72,0x5f,0x77,0x2a,0x28,0x31,0x2e,0x30,0x2d,0x66,0x61,0x63,0x74,0x6f,0x72,0x5f,0x68,0x29,0x29,0x2a,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x5f,0x30,0x31,0x29,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x28,0x31,0x2e,0x30,0x2d,0x66,0x61,0x63,0x74,0x6f,0x72,0x5f,0x77,0x29,0x2a,0x66,0x61,0x63,0x74,0x6f,0x72,0x5f,0x68,0x29,0x2a,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x5f,0x31,0x30,0x29,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x66,0x61,0x63,0x74,0x6f,0x72,0x5f,0x77,0x2a,0x66,0x61,0x63,0x74,0x6f,0x72,0x5f,0x68,0x29,0x2a,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x5f,0x31,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x65,0x61,0x72,0x65,0x73,0x74,0x33,0x44,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x65,0x70,0x74,0x68,0x5f,0x73,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x64,0x65,0x70,0x74,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x64,0x65,0x70,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x64,0x65,0x70,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x64,0x65,0x70,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x64,0x65,0x70,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x64,0x65,0x70,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x64,0x65,0x70,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x64,0x65,0x70,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x64,0x65,0x70,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x64,0x65,0x70,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x69,0x6e,0x5f,0x64,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x64,0x65,0x70,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x64,0x65,0x70,0x74,0x68,0x5f,0x73,0x63,0x61,0x6c,0x65,0x20,0x2b,0x20,0x64,0x65,0x70,0x74,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x63,0x61,0x6c,0x65,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x63,0x61,0x6c,0x65,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x64,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x78,0x28,0x30,0x2c,0x20,0x28,0x69,0x6e,0x74,0x29,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x69,0x6e,0x5f,0x64,0x5f,0x69,0x64,0x78,0x29,0x29,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x64,0x65,0x70,0x74,0x68,0x2d,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x78,0x28,0x30,0x2c,0x20,0x28,0x69,0x6e,0x74,0x29,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x29,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x2d,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x6e,0x64,0x65,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x78,0x28,0x30,0x2c,0x20,0x28,0x69,0x6e,0x74,0x29,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x29,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2d,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x64,0x65,0x70,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x64,0x5f,0x69,0x6e,0x64,0x65,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x6e,0x64,0x65,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x6e,0x64,0x65,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x64,0x65,0x70,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x64,0x65,0x70,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x7d, } @@ -75,20 +81,20 @@ extern const std::map> OpenCLProgramMap #ifndef MNN_OPENCL_BUFFER_CLOSED { "binary_buf", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x50,0x49,0x20,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x36,0x35,0x33,0x35,0x38,0x39,0x66,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x34,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0x2f,0x2f,0x4e,0x43,0x34,0x2c,0x20,0x48,0x57,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2a,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x29,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x79,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x70,0x72,0x65,0x6c,0x75,0x5f,0x62,0x75,0x66,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x34,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0x2f,0x2f,0x4e,0x43,0x34,0x2c,0x20,0x48,0x57,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2a,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x29,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x79,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x50,0x49,0x20,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x36,0x35,0x33,0x35,0x38,0x39,0x66,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x34,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0x2f,0x2f,0x4e,0x43,0x34,0x2c,0x20,0x48,0x57,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2a,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x29,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x70,0x72,0x65,0x6c,0x75,0x5f,0x62,0x75,0x66,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x34,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0x2f,0x2f,0x4e,0x43,0x34,0x2c,0x20,0x48,0x57,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2a,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x29,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa, } }, #endif #ifndef MNN_OPENCL_BUFFER_CLOSED { "raster_buf", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x73,0x65,0x74,0x5f,0x7a,0x65,0x72,0x6f,0x28,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x78,0x2c,0x20,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x79,0x2a,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x2b,0x20,0x78,0x5d,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x30,0x2e,0x30,0x66,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x73,0x65,0x74,0x5f,0x7a,0x65,0x72,0x6f,0x28,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x78,0x2c,0x20,0x79,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x78,0x2c,0x20,0x79,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x2e,0x30,0x66,0x29,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x61,0x73,0x74,0x65,0x72,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x7a,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x78,0x2c,0x20,0x79,0x2c,0x20,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x7a,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x7a,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5b,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5d,0x3b,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x61,0x73,0x74,0x65,0x72,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x7a,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x78,0x2c,0x20,0x79,0x2c,0x20,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x7a,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x7a,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x29,0x29,0x3b,0xa,0x7d,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x73,0x65,0x74,0x5f,0x7a,0x65,0x72,0x6f,0x28,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x78,0x2c,0x20,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x79,0x2a,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x2b,0x20,0x78,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x28,0x30,0x2e,0x30,0x66,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x73,0x65,0x74,0x5f,0x7a,0x65,0x72,0x6f,0x28,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x78,0x2c,0x20,0x79,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x78,0x2c,0x20,0x79,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x2e,0x30,0x66,0x29,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x61,0x73,0x74,0x65,0x72,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x7a,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x78,0x2c,0x20,0x79,0x2c,0x20,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x7a,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x7a,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x69,0x6e,0x70,0x75,0x74,0x5b,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x5d,0x3b,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x61,0x73,0x74,0x65,0x72,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x7a,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x78,0x2c,0x20,0x79,0x2c,0x20,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x7a,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x7a,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x29,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x61,0x73,0x74,0x65,0x72,0x5f,0x64,0x69,0x72,0x65,0x63,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x69,0x7a,0x65,0x5f,0x78,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x6f,0x6d,0x62,0x69,0x6e,0x65,0x53,0x72,0x63,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x6f,0x6d,0x62,0x69,0x6e,0x65,0x44,0x73,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x7a,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x64,0x78,0x2c,0x20,0x79,0x2c,0x20,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x69,0x64,0x78,0x20,0x25,0x20,0x73,0x69,0x7a,0x65,0x5f,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x20,0x3d,0x20,0x69,0x64,0x78,0x20,0x2f,0x20,0x73,0x69,0x7a,0x65,0x5f,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x64,0x20,0x2a,0x20,0x63,0x6f,0x6d,0x62,0x69,0x6e,0x65,0x53,0x72,0x63,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x7a,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x64,0x20,0x2a,0x20,0x63,0x6f,0x6d,0x62,0x69,0x6e,0x65,0x44,0x73,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x7a,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x30,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x31,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x53,0x74,0x72,0x69,0x64,0x65,0x32,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x44,0x41,0x54,0x41,0x5f,0x46,0x4f,0x52,0x4d,0x41,0x54,0x5f,0x4e,0x48,0x57,0x43,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x73,0x72,0x63,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x73,0x72,0x63,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x62,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x2f,0x20,0x73,0x72,0x63,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x73,0x72,0x63,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x43,0x34,0x20,0x3d,0x20,0x28,0x28,0x28,0x69,0x6e,0x5f,0x62,0x20,0x2a,0x20,0x73,0x72,0x63,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2b,0x20,0x28,0x69,0x6e,0x5f,0x63,0x20,0x2f,0x20,0x34,0x29,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x28,0x69,0x6e,0x5f,0x63,0x20,0x25,0x20,0x34,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x73,0x72,0x63,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x73,0x72,0x63,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x62,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x2f,0x20,0x73,0x72,0x63,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x73,0x72,0x63,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x43,0x34,0x20,0x3d,0x20,0x28,0x28,0x28,0x69,0x6e,0x5f,0x62,0x20,0x2a,0x20,0x73,0x72,0x63,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2b,0x20,0x28,0x69,0x6e,0x5f,0x63,0x20,0x2f,0x20,0x34,0x29,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x28,0x69,0x6e,0x5f,0x63,0x20,0x25,0x20,0x34,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x44,0x41,0x54,0x41,0x5f,0x46,0x4f,0x52,0x4d,0x41,0x54,0x5f,0x4e,0x48,0x57,0x43,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x2f,0x3d,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x2f,0x3d,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x2f,0x20,0x64,0x73,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x43,0x34,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2b,0x20,0x28,0x6f,0x75,0x74,0x5f,0x63,0x20,0x2f,0x20,0x34,0x29,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x28,0x6f,0x75,0x74,0x5f,0x63,0x20,0x25,0x20,0x34,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x2f,0x3d,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x2f,0x3d,0x20,0x64,0x73,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x20,0x2f,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x43,0x34,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2b,0x20,0x28,0x6f,0x75,0x74,0x5f,0x63,0x20,0x2f,0x20,0x34,0x29,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x28,0x6f,0x75,0x74,0x5f,0x63,0x20,0x25,0x20,0x34,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x43,0x34,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x69,0x6e,0x70,0x75,0x74,0x5b,0x69,0x6e,0x70,0x75,0x74,0x49,0x6e,0x64,0x65,0x78,0x43,0x34,0x5d,0x3b,0xa,0x7d,0xa, } }, #endif #ifndef MNN_OPENCL_BUFFER_CLOSED #ifdef MNN_SUPPORT_INTEL_SUBGROUP { "binary_subgroup_buf", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x50,0x49,0x20,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x36,0x35,0x33,0x35,0x38,0x39,0x66,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x34,0x5f,0x63,0x34,0x5f,0x63,0x34,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2b,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x34,0x5f,0x63,0x34,0x5f,0x63,0x31,0x36,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3e,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2b,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x34,0x5f,0x63,0x31,0x36,0x5f,0x63,0x34,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3e,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2b,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x31,0x36,0x5f,0x63,0x34,0x5f,0x63,0x34,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3e,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2b,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x34,0x5f,0x63,0x31,0x36,0x5f,0x63,0x31,0x36,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3e,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2b,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x31,0x36,0x5f,0x63,0x34,0x5f,0x63,0x31,0x36,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3e,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2b,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x70,0x72,0x65,0x6c,0x75,0x5f,0x62,0x75,0x66,0x5f,0x63,0x34,0x5f,0x63,0x34,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2b,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x70,0x72,0x65,0x6c,0x75,0x5f,0x62,0x75,0x66,0x5f,0x63,0x34,0x5f,0x63,0x31,0x36,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3e,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2b,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x72,0x65,0x71,0x64,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x28,0x31,0x36,0x29,0x29,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x70,0x72,0x65,0x6c,0x75,0x5f,0x62,0x75,0x66,0x5f,0x63,0x31,0x36,0x5f,0x63,0x31,0x36,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x28,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x28,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x34,0x20,0x3e,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x25,0x20,0x34,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x73,0x67,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x75,0x73,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x2c,0x20,0x61,0x73,0x5f,0x75,0x73,0x68,0x6f,0x72,0x74,0x34,0x28,0x6f,0x75,0x74,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x77,0x72,0x69,0x74,0x65,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x2c,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x34,0x28,0x6f,0x75,0x74,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x73,0x67,0x6c,0x69,0x64,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x5d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x5d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x72,0x65,0x71,0x64,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x28,0x31,0x36,0x29,0x29,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x70,0x72,0x65,0x6c,0x75,0x5f,0x62,0x75,0x66,0x5f,0x63,0x31,0x36,0x5f,0x63,0x34,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2a,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x3c,0x3c,0x32,0x29,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2b,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x28,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x28,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x5f,0x78,0x20,0x3d,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x25,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x3d,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x34,0x20,0x3e,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x3f,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x25,0x20,0x34,0x29,0x20,0x3a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x78,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0xa,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x72,0x65,0x71,0x64,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x28,0x31,0x36,0x29,0x29,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x31,0x36,0x5f,0x63,0x31,0x36,0x5f,0x63,0x31,0x36,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x34,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x30,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x31,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x30,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x31,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3f,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x29,0x29,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x5b,0x30,0x5d,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3f,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x29,0x29,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x5b,0x30,0x5d,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3f,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x29,0x29,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x5b,0x30,0x5d,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3f,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x29,0x29,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x5b,0x30,0x5d,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3f,0x20,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x5b,0x30,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3f,0x20,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x5b,0x30,0x5d,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3f,0x20,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x5b,0x30,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3f,0x20,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x5b,0x30,0x5d,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x34,0x20,0x3e,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x25,0x20,0x34,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x73,0x67,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x75,0x73,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x2c,0x20,0x61,0x73,0x5f,0x75,0x73,0x68,0x6f,0x72,0x74,0x34,0x28,0x6f,0x75,0x74,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x77,0x72,0x69,0x74,0x65,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x2c,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x34,0x28,0x6f,0x75,0x74,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x73,0x67,0x6c,0x69,0x64,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x5d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x5d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x72,0x65,0x71,0x64,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x28,0x31,0x36,0x29,0x29,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x31,0x36,0x5f,0x63,0x31,0x36,0x5f,0x63,0x34,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x34,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x30,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x31,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2a,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x30,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x31,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x29,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2b,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3f,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x29,0x29,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x5b,0x30,0x5d,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3f,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x29,0x29,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x5b,0x30,0x5d,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3f,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x29,0x29,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x5b,0x30,0x5d,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3f,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x29,0x29,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x5b,0x30,0x5d,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3f,0x20,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x5b,0x30,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3f,0x20,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x5b,0x30,0x5d,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3f,0x20,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x5b,0x30,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3f,0x20,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x5b,0x30,0x5d,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x5f,0x78,0x20,0x3d,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x25,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x3d,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x34,0x20,0x3e,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x3f,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x25,0x20,0x34,0x29,0x20,0x3a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x78,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x50,0x49,0x20,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x36,0x35,0x33,0x35,0x38,0x39,0x66,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x34,0x5f,0x63,0x34,0x5f,0x63,0x34,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2b,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x34,0x5f,0x63,0x34,0x5f,0x63,0x31,0x36,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3e,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2b,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x34,0x5f,0x63,0x31,0x36,0x5f,0x63,0x34,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3e,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2b,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x31,0x36,0x5f,0x63,0x34,0x5f,0x63,0x34,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3e,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2b,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x34,0x5f,0x63,0x31,0x36,0x5f,0x63,0x31,0x36,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3e,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2b,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x31,0x36,0x5f,0x63,0x34,0x5f,0x63,0x31,0x36,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3e,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2b,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x2a,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x70,0x72,0x65,0x6c,0x75,0x5f,0x62,0x75,0x66,0x5f,0x63,0x34,0x5f,0x63,0x34,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2b,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x70,0x72,0x65,0x6c,0x75,0x5f,0x62,0x75,0x66,0x5f,0x63,0x34,0x5f,0x63,0x31,0x36,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3e,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2b,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x72,0x65,0x71,0x64,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x28,0x31,0x36,0x29,0x29,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x70,0x72,0x65,0x6c,0x75,0x5f,0x62,0x75,0x66,0x5f,0x63,0x31,0x36,0x5f,0x63,0x31,0x36,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x41,0x53,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x44,0x41,0x54,0x41,0x34,0x28,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x53,0x55,0x42,0x5f,0x47,0x52,0x4f,0x55,0x50,0x5f,0x52,0x45,0x41,0x44,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x44,0x41,0x54,0x41,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x41,0x53,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x44,0x41,0x54,0x41,0x28,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x53,0x55,0x42,0x5f,0x47,0x52,0x4f,0x55,0x50,0x5f,0x52,0x45,0x41,0x44,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x44,0x41,0x54,0x41,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x3b,0xa,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x34,0x20,0x3e,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x25,0x20,0x34,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x73,0x67,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x6f,0x75,0x74,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x53,0x55,0x42,0x5f,0x47,0x52,0x4f,0x55,0x50,0x5f,0x57,0x52,0x49,0x54,0x45,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x44,0x41,0x54,0x41,0x2a,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x2c,0x20,0x41,0x53,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x44,0x41,0x54,0x41,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x73,0x67,0x6c,0x69,0x64,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x72,0x65,0x71,0x64,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x28,0x31,0x36,0x29,0x29,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x70,0x72,0x65,0x6c,0x75,0x5f,0x62,0x75,0x66,0x5f,0x63,0x31,0x36,0x5f,0x63,0x34,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2a,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x3c,0x3c,0x32,0x29,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2b,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x41,0x53,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x44,0x41,0x54,0x41,0x34,0x28,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x53,0x55,0x42,0x5f,0x47,0x52,0x4f,0x55,0x50,0x5f,0x52,0x45,0x41,0x44,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x44,0x41,0x54,0x41,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x41,0x53,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x44,0x41,0x54,0x41,0x28,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x53,0x55,0x42,0x5f,0x47,0x52,0x4f,0x55,0x50,0x5f,0x52,0x45,0x41,0x44,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x44,0x41,0x54,0x41,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x5f,0x78,0x20,0x3d,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x25,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x3d,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x34,0x20,0x3e,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x3f,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x25,0x20,0x34,0x29,0x20,0x3a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x78,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x6f,0x75,0x74,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0xa,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x72,0x65,0x71,0x64,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x28,0x31,0x36,0x29,0x29,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x31,0x36,0x5f,0x63,0x31,0x36,0x5f,0x63,0x31,0x36,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x34,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x30,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x31,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x30,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x31,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x41,0x53,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x44,0x41,0x54,0x41,0x34,0x28,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x53,0x55,0x42,0x5f,0x47,0x52,0x4f,0x55,0x50,0x5f,0x52,0x45,0x41,0x44,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x44,0x41,0x54,0x41,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x29,0x29,0x20,0x3a,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x5b,0x30,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x41,0x53,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x44,0x41,0x54,0x41,0x34,0x28,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x53,0x55,0x42,0x5f,0x47,0x52,0x4f,0x55,0x50,0x5f,0x52,0x45,0x41,0x44,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x44,0x41,0x54,0x41,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x29,0x29,0x20,0x3a,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x5b,0x30,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x34,0x20,0x3e,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x25,0x20,0x34,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x73,0x67,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x6f,0x75,0x74,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x53,0x55,0x42,0x5f,0x47,0x52,0x4f,0x55,0x50,0x5f,0x57,0x52,0x49,0x54,0x45,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x44,0x41,0x54,0x41,0x2a,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x2c,0x20,0x41,0x53,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x44,0x41,0x54,0x41,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x73,0x67,0x6c,0x69,0x64,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x72,0x65,0x71,0x64,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x28,0x31,0x36,0x29,0x29,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x31,0x36,0x5f,0x63,0x31,0x36,0x5f,0x63,0x34,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x34,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x20,0x3d,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x70,0x61,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x30,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x31,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x2a,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x30,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x69,0x6e,0x70,0x75,0x74,0x30,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x31,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x5f,0x69,0x64,0x78,0x2b,0x69,0x6e,0x70,0x75,0x74,0x31,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x29,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2b,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x41,0x53,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x44,0x41,0x54,0x41,0x34,0x28,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x53,0x55,0x42,0x5f,0x47,0x52,0x4f,0x55,0x50,0x5f,0x52,0x45,0x41,0x44,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x44,0x41,0x54,0x41,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x30,0x29,0x29,0x29,0x29,0x20,0x3a,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x5b,0x30,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x41,0x53,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x44,0x41,0x54,0x41,0x34,0x28,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x53,0x55,0x42,0x5f,0x47,0x52,0x4f,0x55,0x50,0x5f,0x52,0x45,0x41,0x44,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x44,0x41,0x54,0x41,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x31,0x29,0x29,0x29,0x29,0x20,0x3a,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x5b,0x30,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x5f,0x78,0x20,0x3d,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x25,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x3d,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x34,0x20,0x3e,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x3f,0x20,0x28,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x20,0x25,0x20,0x34,0x29,0x20,0x3a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x78,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x6f,0x75,0x74,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa, } }, #endif #endif @@ -108,7 +114,7 @@ extern const std::map> OpenCLProgramMap #ifdef MNN_SUPPORT_INTEL_SUBGROUP { "pooling_subgroup_buf", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x70,0x6f,0x6f,0x6c,0x69,0x6e,0x67,0x5f,0x63,0x34,0x5f,0x63,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x72,0x65,0x64,0x69,0x63,0x65,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x59,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x50,0x4f,0x4f,0x4c,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2b,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2b,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2b,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x68,0x3d,0x30,0x3b,0x20,0x6b,0x68,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x59,0x3b,0x20,0x6b,0x68,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3d,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x77,0x3d,0x30,0x3b,0x20,0x6b,0x77,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x58,0x3b,0x20,0x6b,0x77,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3d,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x70,0x5f,0x64,0x61,0x74,0x61,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x28,0x6b,0x68,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x6b,0x77,0x29,0x2a,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x70,0x5f,0x64,0x61,0x74,0x61,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x2f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x31,0x2e,0x30,0x2a,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x2d,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2b,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2b,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2b,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x68,0x3d,0x30,0x3b,0x20,0x6b,0x68,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x59,0x3b,0x20,0x6b,0x68,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3d,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x77,0x3d,0x30,0x3b,0x20,0x6b,0x77,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x58,0x3b,0x20,0x6b,0x77,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3d,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x70,0x5f,0x64,0x61,0x74,0x61,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x28,0x6b,0x68,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x6b,0x77,0x29,0x2a,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x20,0x3d,0x20,0x69,0x6e,0x70,0x5f,0x64,0x61,0x74,0x61,0x20,0x3e,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3f,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x28,0x28,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x68,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x77,0x29,0x20,0x3a,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x72,0x65,0x73,0x75,0x6c,0x74,0x2c,0x20,0x69,0x6e,0x70,0x5f,0x64,0x61,0x74,0x61,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x72,0x65,0x73,0x75,0x6c,0x74,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x72,0x65,0x64,0x69,0x63,0x65,0x29,0x2c,0x20,0x20,0x30,0x2c,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x4f,0x75,0x74,0x70,0x75,0x74,0x2b,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x70,0x6f,0x6f,0x6c,0x69,0x6e,0x67,0x5f,0x63,0x34,0x5f,0x63,0x31,0x36,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x72,0x65,0x64,0x69,0x63,0x65,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x59,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x50,0x4f,0x4f,0x4c,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2b,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2b,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2b,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x68,0x3d,0x30,0x3b,0x20,0x6b,0x68,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x59,0x3b,0x20,0x6b,0x68,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3d,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x77,0x3d,0x30,0x3b,0x20,0x6b,0x77,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x58,0x3b,0x20,0x6b,0x77,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3d,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x70,0x5f,0x64,0x61,0x74,0x61,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x28,0x6b,0x68,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x6b,0x77,0x29,0x2a,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x70,0x5f,0x64,0x61,0x74,0x61,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x2f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x31,0x2e,0x30,0x2a,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x2d,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2b,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2b,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2b,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x68,0x3d,0x30,0x3b,0x20,0x6b,0x68,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x59,0x3b,0x20,0x6b,0x68,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3d,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x77,0x3d,0x30,0x3b,0x20,0x6b,0x77,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x58,0x3b,0x20,0x6b,0x77,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3d,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x70,0x5f,0x64,0x61,0x74,0x61,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x28,0x6b,0x68,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x6b,0x77,0x29,0x2a,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x20,0x3d,0x20,0x69,0x6e,0x70,0x5f,0x64,0x61,0x74,0x61,0x20,0x3e,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3f,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x28,0x28,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x68,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x77,0x29,0x20,0x3a,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x72,0x65,0x73,0x75,0x6c,0x74,0x2c,0x20,0x69,0x6e,0x70,0x5f,0x64,0x61,0x74,0x61,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x6c,0x65,0x66,0x74,0x20,0x3d,0x20,0x28,0x63,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x63,0x5f,0x69,0x64,0x78,0x2f,0x34,0x29,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x31,0x36,0x20,0x2b,0x20,0x63,0x5f,0x6c,0x65,0x66,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x72,0x65,0x73,0x75,0x6c,0x74,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x72,0x65,0x64,0x69,0x63,0x65,0x29,0x2c,0x20,0x20,0x30,0x2c,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x4f,0x75,0x74,0x70,0x75,0x74,0x2b,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x63,0x5f,0x69,0x64,0x78,0x2f,0x34,0x29,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x30,0x29,0x2a,0x31,0x36,0x20,0x2b,0x20,0x63,0x5f,0x6c,0x65,0x66,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x72,0x65,0x71,0x64,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x28,0x31,0x36,0x29,0x29,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x70,0x6f,0x6f,0x6c,0x69,0x6e,0x67,0x5f,0x63,0x31,0x36,0x5f,0x63,0x31,0x36,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x72,0x65,0x64,0x69,0x63,0x65,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3c,0x3c,0x20,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x59,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x50,0x4f,0x4f,0x4c,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x32,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x33,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x34,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x35,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x36,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x77,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x66,0x6d,0x69,0x6e,0x28,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x58,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x28,0x66,0x6c,0x6f,0x61,0x74,0x29,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x68,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x66,0x6d,0x69,0x6e,0x28,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x59,0x2c,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x29,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x20,0x3d,0x20,0x28,0x77,0x5f,0x65,0x6e,0x64,0x20,0x2d,0x20,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x20,0x2a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x68,0x5f,0x65,0x6e,0x64,0x20,0x2d,0x20,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x2d,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x29,0x3b,0xa,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x38,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x38,0x29,0x30,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x62,0x5f,0x69,0x64,0x78,0x2c,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0x63,0x5f,0x69,0x64,0x78,0x29,0x2c,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2c,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2c,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2b,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2c,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x68,0x3d,0x30,0x3b,0x20,0x6b,0x68,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x59,0x3b,0x20,0x6b,0x68,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3d,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x49,0x4e,0x50,0x55,0x54,0x5f,0x4c,0x49,0x4e,0x45,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x4c,0x49,0x4e,0x45,0x5f,0x53,0x49,0x5a,0x45,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x69,0x29,0x20,0x3e,0x3d,0x20,0x30,0x20,0x26,0x26,0x20,0x28,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x69,0x29,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x68,0x2c,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0x69,0x29,0x2c,0x31,0x36,0x29,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x68,0x2c,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0x69,0x29,0x2c,0x31,0x36,0x29,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x50,0x4f,0x4f,0x4c,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2d,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x77,0x3d,0x30,0x3b,0x20,0x6b,0x77,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x58,0x3b,0x20,0x6b,0x77,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x73,0x72,0x63,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x6f,0x70,0x65,0x6e,0x63,0x6c,0x5f,0x75,0x6e,0x72,0x6f,0x6c,0x6c,0x5f,0x68,0x69,0x6e,0x74,0x28,0x38,0x29,0x29,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x38,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x6b,0x77,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x2a,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x50,0x4f,0x4f,0x4c,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x2b,0x3d,0x20,0x73,0x72,0x63,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x20,0x3d,0x20,0x73,0x72,0x63,0x20,0x3e,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3f,0x20,0x28,0x69,0x6e,0x74,0x38,0x29,0x28,0x28,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x68,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x77,0x29,0x20,0x3a,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x72,0x65,0x73,0x75,0x6c,0x74,0x2c,0x20,0x73,0x72,0x63,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x50,0x4f,0x4f,0x4c,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x2f,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x30,0x29,0x2a,0x31,0x36,0x20,0x2b,0x20,0x73,0x67,0x6c,0x69,0x64,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x69,0x2a,0x31,0x36,0x5d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x69,0x2a,0x31,0x36,0x5d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x31,0x36,0x3b,0xa,0x23,0x69,0x66,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x4c,0x45,0x46,0x54,0x4f,0x56,0x45,0x52,0x53,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x63,0x5f,0x69,0x64,0x78,0x2b,0x31,0x29,0x2a,0x31,0x36,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x38,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x63,0x5f,0x69,0x64,0x78,0x2a,0x31,0x36,0x20,0x2b,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x26,0x26,0x20,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x29,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x73,0x67,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x38,0x20,0x3c,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x75,0x73,0x38,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x2c,0x20,0x61,0x73,0x5f,0x75,0x73,0x68,0x6f,0x72,0x74,0x38,0x28,0x72,0x65,0x73,0x75,0x6c,0x74,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x77,0x72,0x69,0x74,0x65,0x38,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x2c,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x38,0x28,0x72,0x65,0x73,0x75,0x6c,0x74,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x25,0x20,0x38,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x73,0x67,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x5f,0x78,0x20,0x3d,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x25,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x3d,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x34,0x29,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x4c,0x45,0x46,0x54,0x4f,0x56,0x45,0x52,0x53,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x63,0x5f,0x69,0x64,0x78,0x2b,0x31,0x29,0x2a,0x31,0x36,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x38,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x63,0x5f,0x69,0x64,0x78,0x2a,0x31,0x36,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x78,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x26,0x26,0x20,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x29,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x4f,0x75,0x74,0x70,0x75,0x74,0x5b,0x72,0x65,0x64,0x69,0x63,0x65,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x78,0x5d,0x20,0x3d,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x38,0x20,0x26,0x26,0x20,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x29,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x4f,0x75,0x74,0x70,0x75,0x74,0x5b,0x72,0x65,0x64,0x69,0x63,0x65,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x78,0x5d,0x20,0x3d,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x72,0x65,0x71,0x64,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x28,0x31,0x36,0x29,0x29,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x70,0x6f,0x6f,0x6c,0x69,0x6e,0x67,0x5f,0x63,0x31,0x36,0x5f,0x63,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x72,0x65,0x64,0x69,0x63,0x65,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3c,0x3c,0x20,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x59,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x50,0x4f,0x4f,0x4c,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x32,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x33,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x34,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x35,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x36,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x77,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x66,0x6d,0x69,0x6e,0x28,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x58,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x28,0x66,0x6c,0x6f,0x61,0x74,0x29,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x68,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x66,0x6d,0x69,0x6e,0x28,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x59,0x2c,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x29,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x20,0x3d,0x20,0x28,0x77,0x5f,0x65,0x6e,0x64,0x20,0x2d,0x20,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x20,0x2a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x68,0x5f,0x65,0x6e,0x64,0x20,0x2d,0x20,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x2d,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x29,0x3b,0xa,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x38,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x38,0x29,0x30,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x62,0x5f,0x69,0x64,0x78,0x2c,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0x63,0x5f,0x69,0x64,0x78,0x29,0x2c,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2c,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2c,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2b,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2c,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x68,0x3d,0x30,0x3b,0x20,0x6b,0x68,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x59,0x3b,0x20,0x6b,0x68,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3d,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x49,0x4e,0x50,0x55,0x54,0x5f,0x4c,0x49,0x4e,0x45,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x4c,0x49,0x4e,0x45,0x5f,0x53,0x49,0x5a,0x45,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x69,0x29,0x20,0x3e,0x3d,0x20,0x30,0x20,0x26,0x26,0x20,0x28,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x69,0x29,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x68,0x2c,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0x69,0x29,0x2c,0x31,0x36,0x29,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x68,0x2c,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0x69,0x29,0x2c,0x31,0x36,0x29,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x50,0x4f,0x4f,0x4c,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2d,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x77,0x3d,0x30,0x3b,0x20,0x6b,0x77,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x58,0x3b,0x20,0x6b,0x77,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x73,0x72,0x63,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x6f,0x70,0x65,0x6e,0x63,0x6c,0x5f,0x75,0x6e,0x72,0x6f,0x6c,0x6c,0x5f,0x68,0x69,0x6e,0x74,0x28,0x38,0x29,0x29,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x38,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x6b,0x77,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x2a,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x50,0x4f,0x4f,0x4c,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x2b,0x3d,0x20,0x73,0x72,0x63,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x20,0x3d,0x20,0x73,0x72,0x63,0x20,0x3e,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3f,0x20,0x28,0x69,0x6e,0x74,0x38,0x29,0x28,0x28,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x68,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x77,0x29,0x20,0x3a,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x72,0x65,0x73,0x75,0x6c,0x74,0x2c,0x20,0x73,0x72,0x63,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x50,0x4f,0x4f,0x4c,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x2f,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x5f,0x78,0x20,0x3d,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x25,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x3d,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x34,0x29,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x34,0x29,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x4c,0x45,0x46,0x54,0x4f,0x56,0x45,0x52,0x53,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x63,0x5f,0x69,0x64,0x78,0x2b,0x31,0x29,0x2a,0x31,0x36,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x38,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x63,0x5f,0x69,0x64,0x78,0x2a,0x31,0x36,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x78,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x26,0x26,0x20,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x29,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x78,0x5d,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x5b,0x69,0x5d,0x3b,0xa,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x4f,0x75,0x74,0x70,0x75,0x74,0x5b,0x72,0x65,0x64,0x69,0x63,0x65,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x78,0x5d,0x20,0x3d,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x5b,0x69,0x5d,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x38,0x20,0x26,0x26,0x20,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x29,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x78,0x5d,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x5b,0x69,0x5d,0x3b,0xa,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x4f,0x75,0x74,0x70,0x75,0x74,0x5b,0x72,0x65,0x64,0x69,0x63,0x65,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x78,0x5d,0x20,0x3d,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x5b,0x69,0x5d,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x70,0x6f,0x6f,0x6c,0x69,0x6e,0x67,0x5f,0x63,0x34,0x5f,0x63,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x72,0x65,0x64,0x69,0x63,0x65,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x59,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x50,0x4f,0x4f,0x4c,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2b,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2b,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2b,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x4f,0x55,0x4e,0x54,0x5f,0x49,0x4e,0x43,0x4c,0x55,0x44,0x45,0x5f,0x50,0x41,0x44,0x44,0x49,0x4e,0x47,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x20,0x3d,0x20,0x28,0x6d,0x69,0x6e,0x28,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x59,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x2d,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x20,0x2a,0x20,0x28,0x6d,0x69,0x6e,0x28,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x58,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x2d,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x20,0x3d,0x20,0x30,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x68,0x3d,0x30,0x3b,0x20,0x6b,0x68,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x59,0x3b,0x20,0x6b,0x68,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3d,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x77,0x3d,0x30,0x3b,0x20,0x6b,0x77,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x58,0x3b,0x20,0x6b,0x77,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3d,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x70,0x5f,0x64,0x61,0x74,0x61,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x28,0x6b,0x68,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x6b,0x77,0x29,0x2a,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x70,0x5f,0x64,0x61,0x74,0x61,0x3b,0xa,0x23,0x69,0x66,0x6e,0x64,0x65,0x66,0x20,0x43,0x4f,0x55,0x4e,0x54,0x5f,0x49,0x4e,0x43,0x4c,0x55,0x44,0x45,0x5f,0x50,0x41,0x44,0x44,0x49,0x4e,0x47,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x2b,0x2b,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x2f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x31,0x2e,0x30,0x2a,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x2d,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2b,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2b,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2b,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x68,0x3d,0x30,0x3b,0x20,0x6b,0x68,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x59,0x3b,0x20,0x6b,0x68,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3d,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x77,0x3d,0x30,0x3b,0x20,0x6b,0x77,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x58,0x3b,0x20,0x6b,0x77,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3d,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x70,0x5f,0x64,0x61,0x74,0x61,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x28,0x6b,0x68,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x6b,0x77,0x29,0x2a,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x20,0x3d,0x20,0x69,0x6e,0x70,0x5f,0x64,0x61,0x74,0x61,0x20,0x3e,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3f,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x28,0x28,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x68,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x77,0x29,0x20,0x3a,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x72,0x65,0x73,0x75,0x6c,0x74,0x2c,0x20,0x69,0x6e,0x70,0x5f,0x64,0x61,0x74,0x61,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x72,0x65,0x73,0x75,0x6c,0x74,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x72,0x65,0x64,0x69,0x63,0x65,0x29,0x2c,0x20,0x20,0x30,0x2c,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x4f,0x75,0x74,0x70,0x75,0x74,0x2b,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x70,0x6f,0x6f,0x6c,0x69,0x6e,0x67,0x5f,0x63,0x34,0x5f,0x63,0x31,0x36,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x72,0x65,0x64,0x69,0x63,0x65,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x59,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x50,0x4f,0x4f,0x4c,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2b,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2b,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2b,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x34,0x3b,0xa,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x4f,0x55,0x4e,0x54,0x5f,0x49,0x4e,0x43,0x4c,0x55,0x44,0x45,0x5f,0x50,0x41,0x44,0x44,0x49,0x4e,0x47,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x20,0x3d,0x20,0x28,0x6d,0x69,0x6e,0x28,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x59,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x2d,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x20,0x2a,0x20,0x28,0x6d,0x69,0x6e,0x28,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x58,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x2d,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x20,0x3d,0x20,0x30,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x68,0x3d,0x30,0x3b,0x20,0x6b,0x68,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x59,0x3b,0x20,0x6b,0x68,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3d,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x77,0x3d,0x30,0x3b,0x20,0x6b,0x77,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x58,0x3b,0x20,0x6b,0x77,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3d,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x70,0x5f,0x64,0x61,0x74,0x61,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x28,0x6b,0x68,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x6b,0x77,0x29,0x2a,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x70,0x5f,0x64,0x61,0x74,0x61,0x3b,0xa,0x23,0x69,0x66,0x6e,0x64,0x65,0x66,0x20,0x43,0x4f,0x55,0x4e,0x54,0x5f,0x49,0x4e,0x43,0x4c,0x55,0x44,0x45,0x5f,0x50,0x41,0x44,0x44,0x49,0x4e,0x47,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x2b,0x2b,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x2f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x31,0x2e,0x30,0x2a,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x2d,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2b,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2b,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2b,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x68,0x3d,0x30,0x3b,0x20,0x6b,0x68,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x59,0x3b,0x20,0x6b,0x68,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3d,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x77,0x3d,0x30,0x3b,0x20,0x6b,0x77,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x58,0x3b,0x20,0x6b,0x77,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3d,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x77,0x5f,0x63,0x75,0x72,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x70,0x5f,0x64,0x61,0x74,0x61,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x28,0x6b,0x68,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x6b,0x77,0x29,0x2a,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x20,0x3d,0x20,0x69,0x6e,0x70,0x5f,0x64,0x61,0x74,0x61,0x20,0x3e,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3f,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x28,0x28,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x68,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x77,0x29,0x20,0x3a,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x72,0x65,0x73,0x75,0x6c,0x74,0x2c,0x20,0x69,0x6e,0x70,0x5f,0x64,0x61,0x74,0x61,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x6c,0x65,0x66,0x74,0x20,0x3d,0x20,0x28,0x63,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x63,0x5f,0x69,0x64,0x78,0x2f,0x34,0x29,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x31,0x36,0x20,0x2b,0x20,0x63,0x5f,0x6c,0x65,0x66,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x72,0x65,0x73,0x75,0x6c,0x74,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x72,0x65,0x64,0x69,0x63,0x65,0x29,0x2c,0x20,0x20,0x30,0x2c,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x4f,0x75,0x74,0x70,0x75,0x74,0x2b,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x63,0x5f,0x69,0x64,0x78,0x2f,0x34,0x29,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x30,0x29,0x2a,0x31,0x36,0x20,0x2b,0x20,0x63,0x5f,0x6c,0x65,0x66,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x72,0x65,0x71,0x64,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x28,0x31,0x36,0x29,0x29,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x70,0x6f,0x6f,0x6c,0x69,0x6e,0x67,0x5f,0x63,0x31,0x36,0x5f,0x63,0x31,0x36,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x72,0x65,0x64,0x69,0x63,0x65,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3c,0x3c,0x20,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x59,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x50,0x4f,0x4f,0x4c,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x32,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x33,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x34,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x35,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x36,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x37,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x4f,0x55,0x4e,0x54,0x5f,0x49,0x4e,0x43,0x4c,0x55,0x44,0x45,0x5f,0x50,0x41,0x44,0x44,0x49,0x4e,0x47,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x77,0x5f,0x73,0x69,0x7a,0x65,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x66,0x6d,0x69,0x6e,0x28,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x58,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x2d,0x20,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6d,0x69,0x6e,0x28,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x59,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x2d,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x20,0x2a,0x20,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x77,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x66,0x6d,0x69,0x6e,0x28,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x58,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x28,0x66,0x6c,0x6f,0x61,0x74,0x29,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x68,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x66,0x6d,0x69,0x6e,0x28,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x59,0x2c,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x29,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x20,0x3d,0x20,0x28,0x77,0x5f,0x65,0x6e,0x64,0x20,0x2d,0x20,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x20,0x2a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x68,0x5f,0x65,0x6e,0x64,0x20,0x2d,0x20,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x2d,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x29,0x3b,0xa,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x38,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x38,0x29,0x30,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x62,0x5f,0x69,0x64,0x78,0x2c,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0x63,0x5f,0x69,0x64,0x78,0x29,0x2c,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2c,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2c,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2b,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2c,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x68,0x3d,0x30,0x3b,0x20,0x6b,0x68,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x59,0x3b,0x20,0x6b,0x68,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3d,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x49,0x4e,0x50,0x55,0x54,0x5f,0x4c,0x49,0x4e,0x45,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x4c,0x49,0x4e,0x45,0x5f,0x53,0x49,0x5a,0x45,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x69,0x29,0x20,0x3e,0x3d,0x20,0x30,0x20,0x26,0x26,0x20,0x28,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x69,0x29,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x68,0x2c,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0x69,0x29,0x2c,0x31,0x36,0x29,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x68,0x2c,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0x69,0x29,0x2c,0x31,0x36,0x29,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x50,0x4f,0x4f,0x4c,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2d,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x77,0x3d,0x30,0x3b,0x20,0x6b,0x77,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x58,0x3b,0x20,0x6b,0x77,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x73,0x72,0x63,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x6f,0x70,0x65,0x6e,0x63,0x6c,0x5f,0x75,0x6e,0x72,0x6f,0x6c,0x6c,0x5f,0x68,0x69,0x6e,0x74,0x28,0x38,0x29,0x29,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x38,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x6b,0x77,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x2a,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x50,0x4f,0x4f,0x4c,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x2b,0x3d,0x20,0x73,0x72,0x63,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x20,0x3d,0x20,0x73,0x72,0x63,0x20,0x3e,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3f,0x20,0x28,0x69,0x6e,0x74,0x38,0x29,0x28,0x28,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x68,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x77,0x29,0x20,0x3a,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x72,0x65,0x73,0x75,0x6c,0x74,0x2c,0x20,0x73,0x72,0x63,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x50,0x4f,0x4f,0x4c,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x2f,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x30,0x29,0x2a,0x31,0x36,0x20,0x2b,0x20,0x73,0x67,0x6c,0x69,0x64,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x69,0x2a,0x31,0x36,0x5d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x69,0x2a,0x31,0x36,0x5d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x31,0x36,0x3b,0xa,0x23,0x69,0x66,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x4c,0x45,0x46,0x54,0x4f,0x56,0x45,0x52,0x53,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x63,0x5f,0x69,0x64,0x78,0x2b,0x31,0x29,0x2a,0x31,0x36,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x38,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x63,0x5f,0x69,0x64,0x78,0x2a,0x31,0x36,0x20,0x2b,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x26,0x26,0x20,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x29,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x73,0x67,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x38,0x20,0x3c,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x75,0x73,0x38,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x2c,0x20,0x61,0x73,0x5f,0x75,0x73,0x68,0x6f,0x72,0x74,0x38,0x28,0x72,0x65,0x73,0x75,0x6c,0x74,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x77,0x72,0x69,0x74,0x65,0x38,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x2c,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x38,0x28,0x72,0x65,0x73,0x75,0x6c,0x74,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x25,0x20,0x38,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x73,0x67,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x5f,0x78,0x20,0x3d,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x25,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x3d,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x34,0x29,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x4c,0x45,0x46,0x54,0x4f,0x56,0x45,0x52,0x53,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x63,0x5f,0x69,0x64,0x78,0x2b,0x31,0x29,0x2a,0x31,0x36,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x38,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x63,0x5f,0x69,0x64,0x78,0x2a,0x31,0x36,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x78,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x26,0x26,0x20,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x29,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x4f,0x75,0x74,0x70,0x75,0x74,0x5b,0x72,0x65,0x64,0x69,0x63,0x65,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x78,0x5d,0x20,0x3d,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x38,0x20,0x26,0x26,0x20,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x29,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x4f,0x75,0x74,0x70,0x75,0x74,0x5b,0x72,0x65,0x64,0x69,0x63,0x65,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x78,0x5d,0x20,0x3d,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x72,0x65,0x71,0x64,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x28,0x31,0x36,0x29,0x29,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x70,0x6f,0x6f,0x6c,0x69,0x6e,0x67,0x5f,0x63,0x31,0x36,0x5f,0x63,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x72,0x65,0x64,0x69,0x63,0x65,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3c,0x3c,0x20,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x5f,0x6f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x59,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x50,0x4f,0x4f,0x4c,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x32,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x33,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x34,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x35,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x36,0x2c,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x20,0x2a,0x20,0x37,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x4f,0x55,0x4e,0x54,0x5f,0x49,0x4e,0x43,0x4c,0x55,0x44,0x45,0x5f,0x50,0x41,0x44,0x44,0x49,0x4e,0x47,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x77,0x5f,0x73,0x69,0x7a,0x65,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x66,0x6d,0x69,0x6e,0x28,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x58,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x2d,0x20,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6d,0x69,0x6e,0x28,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x59,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x2d,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x20,0x2a,0x20,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x77,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x66,0x6d,0x69,0x6e,0x28,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x58,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x28,0x66,0x6c,0x6f,0x61,0x74,0x29,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x68,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x66,0x6d,0x69,0x6e,0x28,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x59,0x2c,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x29,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x20,0x3d,0x20,0x28,0x77,0x5f,0x65,0x6e,0x64,0x20,0x2d,0x20,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x20,0x2a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x68,0x5f,0x65,0x6e,0x64,0x20,0x2d,0x20,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x2d,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x29,0x3b,0xa,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x38,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x38,0x29,0x30,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x62,0x5f,0x69,0x64,0x78,0x2c,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0x63,0x5f,0x69,0x64,0x78,0x29,0x2c,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x2c,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2c,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2b,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2c,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x68,0x3d,0x30,0x3b,0x20,0x6b,0x68,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x59,0x3b,0x20,0x6b,0x68,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3d,0x20,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x68,0x5f,0x63,0x75,0x72,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x74,0x69,0x6e,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x49,0x4e,0x50,0x55,0x54,0x5f,0x4c,0x49,0x4e,0x45,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x4c,0x49,0x4e,0x45,0x5f,0x53,0x49,0x5a,0x45,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x69,0x29,0x20,0x3e,0x3d,0x20,0x30,0x20,0x26,0x26,0x20,0x28,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x69,0x29,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x68,0x2c,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0x69,0x29,0x2c,0x31,0x36,0x29,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x68,0x2c,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0x69,0x29,0x2c,0x31,0x36,0x29,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x50,0x4f,0x4f,0x4c,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2d,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6b,0x77,0x3d,0x30,0x3b,0x20,0x6b,0x77,0x3c,0x4b,0x45,0x52,0x4e,0x45,0x4c,0x5f,0x58,0x3b,0x20,0x6b,0x77,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x38,0x20,0x73,0x72,0x63,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x6f,0x70,0x65,0x6e,0x63,0x6c,0x5f,0x75,0x6e,0x72,0x6f,0x6c,0x6c,0x5f,0x68,0x69,0x6e,0x74,0x28,0x38,0x29,0x29,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x38,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x6c,0x69,0x6e,0x65,0x5f,0x63,0x61,0x63,0x68,0x65,0x5b,0x6b,0x77,0x20,0x2b,0x20,0x53,0x54,0x52,0x49,0x44,0x45,0x5f,0x58,0x2a,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x50,0x4f,0x4f,0x4c,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x2b,0x3d,0x20,0x73,0x72,0x63,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x20,0x3d,0x20,0x73,0x72,0x63,0x20,0x3e,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3f,0x20,0x28,0x69,0x6e,0x74,0x38,0x29,0x28,0x28,0x69,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x68,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x69,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x6b,0x77,0x29,0x20,0x3a,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x72,0x65,0x73,0x75,0x6c,0x74,0x2c,0x20,0x73,0x72,0x63,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x50,0x4f,0x4f,0x4c,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x2f,0x20,0x74,0x6f,0x74,0x61,0x6c,0x5f,0x63,0x6f,0x75,0x6e,0x74,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x5f,0x78,0x20,0x3d,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x25,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x3d,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x34,0x29,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x34,0x29,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x4c,0x45,0x46,0x54,0x4f,0x56,0x45,0x52,0x53,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x63,0x5f,0x69,0x64,0x78,0x2b,0x31,0x29,0x2a,0x31,0x36,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x38,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x63,0x5f,0x69,0x64,0x78,0x2a,0x31,0x36,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x78,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x26,0x26,0x20,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x29,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x78,0x5d,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x5b,0x69,0x5d,0x3b,0xa,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x4f,0x75,0x74,0x70,0x75,0x74,0x5b,0x72,0x65,0x64,0x69,0x63,0x65,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x78,0x5d,0x20,0x3d,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x5b,0x69,0x5d,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x38,0x20,0x26,0x26,0x20,0x28,0x6f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x29,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x78,0x5d,0x20,0x3d,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x5b,0x69,0x5d,0x3b,0xa,0x23,0x69,0x66,0x20,0x52,0x45,0x54,0x55,0x52,0x4e,0x5f,0x52,0x45,0x44,0x49,0x43,0x45,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x4f,0x75,0x74,0x70,0x75,0x74,0x5b,0x72,0x65,0x64,0x69,0x63,0x65,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x78,0x5d,0x20,0x3d,0x20,0x72,0x65,0x64,0x69,0x63,0x65,0x5b,0x69,0x5d,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa, } }, #endif #endif @@ -125,7 +131,7 @@ extern const std::map> OpenCLProgramMap #ifndef MNN_OPENCL_BUFFER_CLOSED { "unary_buf", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x65,0x6c,0x75,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x30,0x2e,0x37,0x39,0x37,0x38,0x38,0x34,0x35,0x38,0x66,0x20,0x2a,0x20,0x28,0x30,0x2e,0x30,0x34,0x34,0x37,0x31,0x35,0x66,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2b,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x78,0x32,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x64,0x73,0x74,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3e,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x35,0x2e,0x30,0x66,0x20,0x3f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x3a,0x20,0x28,0x76,0x61,0x6c,0x75,0x65,0x20,0x3c,0x3d,0x20,0x2d,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x35,0x2e,0x30,0x66,0x20,0x3f,0x20,0x2d,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x3a,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x28,0x31,0x33,0x35,0x31,0x33,0x35,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x31,0x37,0x33,0x32,0x35,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x33,0x37,0x38,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x29,0x29,0x29,0x29,0x20,0x2f,0x20,0x28,0x31,0x33,0x35,0x31,0x33,0x35,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x36,0x32,0x33,0x37,0x30,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x33,0x31,0x35,0x30,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x32,0x38,0x2e,0x30,0x66,0x29,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x31,0x2e,0x30,0x66,0x20,0x2b,0x20,0x64,0x73,0x74,0x29,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2a,0x20,0x30,0x2e,0x35,0x66,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x75,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x62,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x77,0x2c,0x20,0x68,0x62,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x68,0x62,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x68,0x62,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2b,0x77,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x65,0x6c,0x75,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x30,0x2e,0x37,0x39,0x37,0x38,0x38,0x34,0x35,0x38,0x66,0x20,0x2a,0x20,0x28,0x30,0x2e,0x30,0x34,0x34,0x37,0x31,0x35,0x66,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2b,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x78,0x32,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x64,0x73,0x74,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3e,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x35,0x2e,0x30,0x66,0x20,0x3f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x3a,0x20,0x28,0x76,0x61,0x6c,0x75,0x65,0x20,0x3c,0x3d,0x20,0x2d,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x35,0x2e,0x30,0x66,0x20,0x3f,0x20,0x2d,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x3a,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x28,0x31,0x33,0x35,0x31,0x33,0x35,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x31,0x37,0x33,0x32,0x35,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x33,0x37,0x38,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x29,0x29,0x29,0x29,0x20,0x2f,0x20,0x28,0x31,0x33,0x35,0x31,0x33,0x35,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x36,0x32,0x33,0x37,0x30,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x33,0x31,0x35,0x30,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x32,0x38,0x2e,0x30,0x66,0x29,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x31,0x2e,0x30,0x66,0x20,0x2b,0x20,0x64,0x73,0x74,0x29,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2a,0x20,0x30,0x2e,0x35,0x66,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x75,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x62,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x77,0x2c,0x20,0x68,0x62,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x68,0x62,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x68,0x62,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2b,0x77,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa, } }, #endif #ifndef MNN_OPENCL_BUFFER_CLOSED @@ -151,7 +157,7 @@ extern const std::map> OpenCLProgramMap #ifndef MNN_OPENCL_BUFFER_CLOSED { "select_buf", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x79,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x64,0x78,0x2c,0x20,0x69,0x64,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x69,0x6e,0x74,0x29,0x73,0x65,0x6c,0x65,0x63,0x74,0x5b,0x69,0x64,0x78,0x5d,0x29,0x20,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x49,0x4e,0x53,0x49,0x5a,0x45,0x31,0x5f,0x45,0x55,0x51,0x41,0x4c,0x5f,0x31,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x69,0x64,0x78,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5b,0x30,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x69,0x64,0x78,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5b,0x69,0x64,0x78,0x5d,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x49,0x4e,0x53,0x49,0x5a,0x45,0x32,0x5f,0x45,0x55,0x51,0x41,0x4c,0x5f,0x31,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x69,0x64,0x78,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5b,0x30,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x69,0x64,0x78,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5b,0x69,0x64,0x78,0x5d,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x2a,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x79,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x64,0x78,0x2c,0x20,0x69,0x64,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x73,0x65,0x6c,0x65,0x63,0x74,0x5b,0x69,0x64,0x78,0x5d,0x29,0x20,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x49,0x4e,0x53,0x49,0x5a,0x45,0x31,0x5f,0x45,0x55,0x51,0x41,0x4c,0x5f,0x31,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x69,0x64,0x78,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5b,0x30,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x69,0x64,0x78,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5b,0x69,0x64,0x78,0x5d,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x49,0x4e,0x53,0x49,0x5a,0x45,0x32,0x5f,0x45,0x55,0x51,0x41,0x4c,0x5f,0x31,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x69,0x64,0x78,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5b,0x30,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x69,0x64,0x78,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5b,0x69,0x64,0x78,0x5d,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa, } }, #endif { @@ -161,7 +167,7 @@ extern const std::map> OpenCLProgramMap #ifndef MNN_OPENCL_BUFFER_CLOSED { "gemm_buf", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x44,0x49,0x4d,0x32,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x42,0x4f,0x55,0x4e,0x44,0x52,0x59,0x5f,0x43,0x48,0x45,0x43,0x4b,0x28,0x69,0x6e,0x64,0x65,0x78,0x30,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x31,0x29,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x6e,0x64,0x65,0x78,0x30,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x64,0x65,0x78,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x67,0x65,0x6d,0x6d,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x44,0x49,0x4d,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x2f,0x2f,0x55,0x50,0x5f,0x44,0x49,0x56,0x28,0x77,0x55,0x6e,0x69,0x74,0x2a,0x68,0x55,0x6e,0x69,0x74,0x2c,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x2f,0x2f,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x42,0x4f,0x55,0x4e,0x44,0x52,0x59,0x5f,0x43,0x48,0x45,0x43,0x4b,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x78,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x79,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x7a,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x6f,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6b,0x65,0x6e,0x65,0x72,0x6c,0x59,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x7a,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x59,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x7a,0x2c,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6b,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x3b,0x20,0x2b,0x2b,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6b,0x2c,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x4e,0x48,0x57,0x43,0x20,0x20,0x5b,0x31,0x2c,0x20,0x31,0x2c,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2a,0x34,0x5d,0x20,0x78,0x20,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x5b,0x30,0x2c,0x20,0x30,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x7a,0x2a,0x77,0x69,0x64,0x74,0x68,0x2b,0x70,0x6f,0x73,0x5f,0x79,0x2c,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x2b,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x31,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6b,0x20,0x2a,0x20,0x28,0x61,0x6c,0x70,0x68,0x61,0x32,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x29,0x20,0x2b,0x20,0x6b,0x65,0x6e,0x65,0x72,0x6c,0x59,0x29,0x20,0x2a,0x20,0x28,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2a,0x34,0x29,0x20,0x2b,0x20,0x69,0x6e,0x64,0x65,0x78,0x29,0x2a,0x34,0x20,0x2b,0x20,0x30,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x6b,0x5f,0x76,0x31,0x36,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x6b,0x65,0x6e,0x65,0x72,0x6c,0x59,0x2a,0x28,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x29,0x20,0x2b,0x20,0x6b,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x5b,0x61,0x6c,0x70,0x68,0x61,0x2a,0x61,0x6c,0x70,0x68,0x61,0x2c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x34,0x5d,0x20,0x78,0x20,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x5b,0x70,0x6f,0x73,0x5f,0x7a,0x2c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6b,0x2c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x5f,0x78,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x73,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x28,0x28,0x70,0x6f,0x73,0x5f,0x7a,0x2a,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2b,0x20,0x6b,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x70,0x6f,0x73,0x5f,0x78,0x29,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x38,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x63,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x2c,0x20,0x6f,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x39,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x64,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x2c,0x20,0x6f,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x61,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x65,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x2c,0x20,0x6f,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x62,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x66,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x2c,0x20,0x6f,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x79,0x2c,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x5b,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x2c,0x20,0x34,0x2c,0x20,0x55,0x50,0x5f,0x44,0x49,0x56,0x28,0x77,0x55,0x6e,0x69,0x74,0x2a,0x68,0x55,0x6e,0x69,0x74,0x2c,0x34,0x29,0x5d,0x20,0x78,0x20,0x34,0xa,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x5b,0x70,0x6f,0x73,0x5f,0x79,0x2c,0x20,0x20,0x70,0x6f,0x73,0x5f,0x7a,0x2c,0x20,0x20,0x30,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x78,0x5d,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x70,0x6f,0x73,0x5f,0x79,0x20,0x2a,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x20,0x2b,0x20,0x70,0x6f,0x73,0x5f,0x7a,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x70,0x6f,0x73,0x5f,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x34,0x2a,0x77,0x69,0x64,0x74,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x38,0x2a,0x77,0x69,0x64,0x74,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x31,0x32,0x2a,0x77,0x69,0x64,0x74,0x68,0x29,0x3b,0xa,0x7d,0xa,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x67,0x65,0x6d,0x6d,0x5f,0x62,0x75,0x66,0x32,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x44,0x49,0x4d,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x2f,0x2f,0x55,0x50,0x5f,0x44,0x49,0x56,0x28,0x77,0x55,0x6e,0x69,0x74,0x2a,0x68,0x55,0x6e,0x69,0x74,0x2c,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x2f,0x2f,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x42,0x4f,0x55,0x4e,0x44,0x52,0x59,0x5f,0x43,0x48,0x45,0x43,0x4b,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x3d,0x20,0x28,0x77,0x69,0x64,0x74,0x68,0x2b,0x31,0x29,0x20,0x3e,0x3e,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x78,0x20,0x3d,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x79,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x7a,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x6f,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x6f,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x65,0x6e,0x65,0x72,0x6c,0x59,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x7a,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6b,0x65,0x6e,0x65,0x72,0x6c,0x59,0x2c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x28,0x70,0x6f,0x73,0x5f,0x7a,0x2a,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x70,0x6f,0x73,0x5f,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6b,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x3b,0x20,0x2b,0x2b,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x4e,0x48,0x57,0x43,0x20,0x20,0x5b,0x31,0x2c,0x20,0x31,0x2c,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2a,0x34,0x5d,0x20,0x78,0x20,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x5b,0x30,0x2c,0x20,0x30,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x7a,0x2a,0x77,0x69,0x64,0x74,0x68,0x2b,0x70,0x6f,0x73,0x5f,0x79,0x2c,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x2b,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x31,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6b,0x20,0x2a,0x20,0x28,0x61,0x6c,0x70,0x68,0x61,0x32,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x29,0x20,0x2b,0x20,0x6b,0x65,0x6e,0x65,0x72,0x6c,0x59,0x29,0x20,0x2a,0x20,0x28,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2a,0x34,0x29,0x20,0x2b,0x20,0x69,0x6e,0x64,0x65,0x78,0x29,0x2a,0x34,0x20,0x2b,0x20,0x30,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x6b,0x5f,0x76,0x31,0x36,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x6b,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x5b,0x61,0x6c,0x70,0x68,0x61,0x2a,0x61,0x6c,0x70,0x68,0x61,0x2c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x34,0x5d,0x20,0x78,0x20,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x5b,0x70,0x6f,0x73,0x5f,0x7a,0x2c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6b,0x2c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x5f,0x78,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x2c,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x69,0x6e,0x70,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x73,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x38,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x63,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x39,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x64,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x61,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x65,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x62,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x66,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x38,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x63,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x39,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x64,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x61,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x65,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x62,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x66,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x79,0x2c,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x5b,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x2c,0x20,0x34,0x2c,0x20,0x55,0x50,0x5f,0x44,0x49,0x56,0x28,0x77,0x55,0x6e,0x69,0x74,0x2a,0x68,0x55,0x6e,0x69,0x74,0x2c,0x34,0x29,0x5d,0x20,0x78,0x20,0x34,0xa,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x5b,0x70,0x6f,0x73,0x5f,0x79,0x2c,0x20,0x20,0x70,0x6f,0x73,0x5f,0x7a,0x2c,0x20,0x20,0x30,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x78,0x5d,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x70,0x6f,0x73,0x5f,0x79,0x20,0x2a,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x20,0x2b,0x20,0x70,0x6f,0x73,0x5f,0x7a,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x70,0x6f,0x73,0x5f,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x30,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x30,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x34,0x2a,0x77,0x69,0x64,0x74,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x30,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x38,0x2a,0x77,0x69,0x64,0x74,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x30,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x31,0x32,0x2a,0x77,0x69,0x64,0x74,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x5f,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x31,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x31,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x34,0x2a,0x77,0x69,0x64,0x74,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x31,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x38,0x2a,0x77,0x69,0x64,0x74,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x31,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x31,0x32,0x2a,0x77,0x69,0x64,0x74,0x68,0x29,0x3b,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x67,0x65,0x6d,0x6d,0x5f,0x63,0x6f,0x6e,0x76,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x44,0x49,0x4d,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x6f,0x75,0x74,0x2f,0x34,0x2c,0x20,0x62,0xa,0x20,0x20,0x20,0x20,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x42,0x4f,0x55,0x4e,0x44,0x52,0x59,0x5f,0x43,0x48,0x45,0x43,0x4b,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x78,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x62,0x69,0x61,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x62,0x69,0x61,0x73,0x20,0x2b,0x20,0x70,0x6f,0x73,0x5f,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2a,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x38,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x53,0x63,0x61,0x6c,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6b,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x3b,0x20,0x2b,0x2b,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6b,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x77,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x38,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x38,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x39,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x61,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x62,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x64,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x65,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x66,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x2e,0x78,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x2e,0x79,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x2e,0x7a,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x2e,0x77,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x62,0x69,0x61,0x73,0x30,0x20,0x2b,0x20,0x6d,0x61,0x64,0x28,0x6f,0x75,0x74,0x2c,0x20,0x53,0x63,0x61,0x6c,0x65,0x2c,0x20,0x73,0x75,0x6d,0x20,0x2a,0x20,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x67,0x65,0x6d,0x6d,0x5f,0x63,0x6f,0x6e,0x76,0x5f,0x62,0x32,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x44,0x49,0x4d,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x6f,0x75,0x74,0x2f,0x34,0x2c,0x20,0x62,0xa,0x20,0x20,0x20,0x20,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x42,0x4f,0x55,0x4e,0x44,0x52,0x59,0x5f,0x43,0x48,0x45,0x43,0x4b,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x78,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x79,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x62,0x69,0x61,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x62,0x69,0x61,0x73,0x20,0x2b,0x20,0x70,0x6f,0x73,0x5f,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x73,0x75,0x6d,0x30,0x20,0x3d,0x20,0x30,0x2c,0x20,0x73,0x75,0x6d,0x31,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x5f,0x79,0x20,0x2a,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x5f,0x79,0x20,0x2a,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2a,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x38,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x53,0x63,0x61,0x6c,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6b,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x3b,0x20,0x2b,0x2b,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6b,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6b,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x30,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x30,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x30,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x30,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x30,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x31,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x31,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x31,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x31,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x31,0x2e,0x77,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x38,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x38,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x39,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x61,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x62,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x64,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x65,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x66,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x30,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x30,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x30,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x30,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x30,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x31,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x31,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x31,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x31,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x31,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x62,0x69,0x61,0x73,0x30,0x20,0x2b,0x20,0x6d,0x61,0x64,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x53,0x63,0x61,0x6c,0x65,0x2c,0x20,0x73,0x75,0x6d,0x30,0x20,0x2a,0x20,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x62,0x69,0x61,0x73,0x30,0x20,0x2b,0x20,0x6d,0x61,0x64,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x53,0x63,0x61,0x6c,0x65,0x2c,0x20,0x73,0x75,0x6d,0x31,0x20,0x2a,0x20,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x5f,0x79,0x20,0x2b,0x20,0x31,0x20,0x3c,0x20,0x62,0x61,0x74,0x63,0x68,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x7d,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x44,0x49,0x4d,0x32,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x42,0x4f,0x55,0x4e,0x44,0x52,0x59,0x5f,0x43,0x48,0x45,0x43,0x4b,0x28,0x69,0x6e,0x64,0x65,0x78,0x30,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x31,0x29,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x6e,0x64,0x65,0x78,0x30,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x64,0x65,0x78,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x67,0x65,0x6d,0x6d,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x44,0x49,0x4d,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x2f,0x2f,0x55,0x50,0x5f,0x44,0x49,0x56,0x28,0x77,0x55,0x6e,0x69,0x74,0x2a,0x68,0x55,0x6e,0x69,0x74,0x2c,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x2f,0x2f,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x42,0x4f,0x55,0x4e,0x44,0x52,0x59,0x5f,0x43,0x48,0x45,0x43,0x4b,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x78,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x79,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x7a,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x6f,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6b,0x65,0x6e,0x65,0x72,0x6c,0x59,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x7a,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x59,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x7a,0x2c,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6b,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x3b,0x20,0x2b,0x2b,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6b,0x2c,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x4e,0x48,0x57,0x43,0x20,0x20,0x5b,0x31,0x2c,0x20,0x31,0x2c,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2a,0x34,0x5d,0x20,0x78,0x20,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x5b,0x30,0x2c,0x20,0x30,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x7a,0x2a,0x77,0x69,0x64,0x74,0x68,0x2b,0x70,0x6f,0x73,0x5f,0x79,0x2c,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x2b,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x31,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6b,0x20,0x2a,0x20,0x28,0x61,0x6c,0x70,0x68,0x61,0x32,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x29,0x20,0x2b,0x20,0x6b,0x65,0x6e,0x65,0x72,0x6c,0x59,0x29,0x20,0x2a,0x20,0x28,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2a,0x34,0x29,0x20,0x2b,0x20,0x69,0x6e,0x64,0x65,0x78,0x29,0x2a,0x34,0x20,0x2b,0x20,0x30,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x6b,0x5f,0x76,0x31,0x36,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x6b,0x65,0x6e,0x65,0x72,0x6c,0x59,0x2a,0x28,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x29,0x20,0x2b,0x20,0x6b,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x5b,0x61,0x6c,0x70,0x68,0x61,0x2a,0x61,0x6c,0x70,0x68,0x61,0x2c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x34,0x5d,0x20,0x78,0x20,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x5b,0x70,0x6f,0x73,0x5f,0x7a,0x2c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6b,0x2c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x5f,0x78,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x73,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x28,0x28,0x70,0x6f,0x73,0x5f,0x7a,0x2a,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2b,0x20,0x6b,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x70,0x6f,0x73,0x5f,0x78,0x29,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x38,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x63,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x2c,0x20,0x6f,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x39,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x64,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x2c,0x20,0x6f,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x61,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x65,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x2c,0x20,0x6f,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x62,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x66,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x2c,0x20,0x6f,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x79,0x2c,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x5b,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x2c,0x20,0x34,0x2c,0x20,0x55,0x50,0x5f,0x44,0x49,0x56,0x28,0x77,0x55,0x6e,0x69,0x74,0x2a,0x68,0x55,0x6e,0x69,0x74,0x2c,0x34,0x29,0x5d,0x20,0x78,0x20,0x34,0xa,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x5b,0x70,0x6f,0x73,0x5f,0x79,0x2c,0x20,0x20,0x70,0x6f,0x73,0x5f,0x7a,0x2c,0x20,0x20,0x30,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x78,0x5d,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x70,0x6f,0x73,0x5f,0x79,0x20,0x2a,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x20,0x2b,0x20,0x70,0x6f,0x73,0x5f,0x7a,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x70,0x6f,0x73,0x5f,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x34,0x2a,0x77,0x69,0x64,0x74,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x38,0x2a,0x77,0x69,0x64,0x74,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x31,0x32,0x2a,0x77,0x69,0x64,0x74,0x68,0x29,0x3b,0xa,0x7d,0xa,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x67,0x65,0x6d,0x6d,0x5f,0x62,0x75,0x66,0x32,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x44,0x49,0x4d,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x2f,0x2f,0x55,0x50,0x5f,0x44,0x49,0x56,0x28,0x77,0x55,0x6e,0x69,0x74,0x2a,0x68,0x55,0x6e,0x69,0x74,0x2c,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x2f,0x2f,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x42,0x4f,0x55,0x4e,0x44,0x52,0x59,0x5f,0x43,0x48,0x45,0x43,0x4b,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x3d,0x20,0x28,0x77,0x69,0x64,0x74,0x68,0x2b,0x31,0x29,0x20,0x3e,0x3e,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x78,0x20,0x3d,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x79,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x7a,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x6f,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x6f,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x65,0x6e,0x65,0x72,0x6c,0x59,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x7a,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6b,0x65,0x6e,0x65,0x72,0x6c,0x59,0x2c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x28,0x70,0x6f,0x73,0x5f,0x7a,0x2a,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x70,0x6f,0x73,0x5f,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6b,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x3b,0x20,0x2b,0x2b,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x4e,0x48,0x57,0x43,0x20,0x20,0x5b,0x31,0x2c,0x20,0x31,0x2c,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2a,0x34,0x5d,0x20,0x78,0x20,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x5b,0x30,0x2c,0x20,0x30,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x7a,0x2a,0x77,0x69,0x64,0x74,0x68,0x2b,0x70,0x6f,0x73,0x5f,0x79,0x2c,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x2b,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x31,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6b,0x20,0x2a,0x20,0x28,0x61,0x6c,0x70,0x68,0x61,0x32,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x29,0x20,0x2b,0x20,0x6b,0x65,0x6e,0x65,0x72,0x6c,0x59,0x29,0x20,0x2a,0x20,0x28,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2a,0x34,0x29,0x20,0x2b,0x20,0x69,0x6e,0x64,0x65,0x78,0x29,0x2a,0x34,0x20,0x2b,0x20,0x30,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x6b,0x5f,0x76,0x31,0x36,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x6b,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x5b,0x61,0x6c,0x70,0x68,0x61,0x2a,0x61,0x6c,0x70,0x68,0x61,0x2c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x34,0x5d,0x20,0x78,0x20,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x5b,0x70,0x6f,0x73,0x5f,0x7a,0x2c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6b,0x2c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x5f,0x78,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x2c,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x69,0x6e,0x70,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x73,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x38,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x63,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x39,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x64,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x61,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x65,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x62,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x66,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x38,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x63,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x39,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x64,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x61,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x65,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x62,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x2e,0x73,0x66,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6b,0x5f,0x76,0x31,0x36,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x79,0x2c,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x5b,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x2c,0x20,0x34,0x2c,0x20,0x55,0x50,0x5f,0x44,0x49,0x56,0x28,0x77,0x55,0x6e,0x69,0x74,0x2a,0x68,0x55,0x6e,0x69,0x74,0x2c,0x34,0x29,0x5d,0x20,0x78,0x20,0x34,0xa,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x5b,0x70,0x6f,0x73,0x5f,0x79,0x2c,0x20,0x20,0x70,0x6f,0x73,0x5f,0x7a,0x2c,0x20,0x20,0x30,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x78,0x5d,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x70,0x6f,0x73,0x5f,0x79,0x20,0x2a,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x20,0x2b,0x20,0x70,0x6f,0x73,0x5f,0x7a,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x70,0x6f,0x73,0x5f,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x30,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x30,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x34,0x2a,0x77,0x69,0x64,0x74,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x30,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x38,0x2a,0x77,0x69,0x64,0x74,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x30,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x31,0x32,0x2a,0x77,0x69,0x64,0x74,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x5f,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x31,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x31,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x34,0x2a,0x77,0x69,0x64,0x74,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x31,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x38,0x2a,0x77,0x69,0x64,0x74,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x31,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x31,0x32,0x2a,0x77,0x69,0x64,0x74,0x68,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x67,0x65,0x6d,0x6d,0x5f,0x63,0x6f,0x6e,0x76,0x5f,0x63,0x34,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x44,0x49,0x4d,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x42,0x4f,0x55,0x4e,0x44,0x52,0x59,0x5f,0x43,0x48,0x45,0x43,0x4b,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x62,0x69,0x61,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x68,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x34,0x20,0x2a,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x33,0x32,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x34,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x36,0x34,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x53,0x63,0x61,0x6c,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6b,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2f,0x34,0x20,0x2d,0x20,0x31,0x3b,0x20,0x2b,0x2b,0x6b,0x29,0x20,0x7b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6b,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2f,0x34,0x3b,0x20,0x2b,0x2b,0x6b,0x29,0x20,0x7b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x57,0x49,0x44,0x54,0x48,0x5f,0x48,0x45,0x49,0x47,0x48,0x54,0x5f,0x31,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x6b,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6b,0x34,0x20,0x3d,0x20,0x6b,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x30,0x31,0x32,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x34,0x20,0x2a,0x20,0x77,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x34,0x35,0x36,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x6b,0x34,0x20,0x2b,0x20,0x31,0x29,0x20,0x2a,0x20,0x77,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x38,0x39,0x61,0x62,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x6b,0x34,0x20,0x2b,0x20,0x32,0x29,0x20,0x2a,0x20,0x77,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x63,0x64,0x65,0x66,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x6b,0x34,0x20,0x2b,0x20,0x33,0x29,0x20,0x2a,0x20,0x77,0x68,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x36,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x34,0x38,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x2e,0x73,0x30,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x31,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x32,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x33,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x34,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x35,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x36,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x37,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x38,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x39,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x61,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x62,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x63,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x64,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x66,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x32,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x32,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x33,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x33,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x38,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x34,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x39,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x34,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x61,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x35,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x62,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x35,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x63,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x36,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x64,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x36,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x65,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x37,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x66,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x37,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x38,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x38,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x39,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x39,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x61,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x61,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x62,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x62,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x38,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x63,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x39,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x63,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x61,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x64,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x62,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x64,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x63,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x65,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x64,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x65,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x65,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x66,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x66,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x66,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x32,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x32,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x33,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x33,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x38,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x34,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x39,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x34,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x61,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x35,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x62,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x35,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x63,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x36,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x64,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x36,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x65,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x37,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x66,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x37,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x38,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x38,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x39,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x39,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x61,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x61,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x62,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x62,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x38,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x63,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x39,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x63,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x61,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x64,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x62,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x64,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x63,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x65,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x64,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x65,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x65,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x66,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x66,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x66,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x2e,0x73,0x30,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x31,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x32,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x33,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x34,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x35,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x36,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x37,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x38,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x39,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x61,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x62,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x63,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x64,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x66,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x34,0x38,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x30,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x30,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x30,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x30,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x31,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x31,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x31,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x31,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x32,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x32,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x32,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x32,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x33,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x33,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x33,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x33,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2f,0x34,0x20,0x2d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6b,0x34,0x20,0x3d,0x20,0x6b,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x30,0x31,0x32,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x34,0x20,0x2a,0x20,0x77,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x34,0x35,0x36,0x37,0x20,0x3d,0x20,0x6b,0x34,0x20,0x2b,0x20,0x31,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x3f,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x6b,0x34,0x20,0x2b,0x20,0x31,0x29,0x20,0x2a,0x20,0x77,0x68,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x38,0x39,0x61,0x62,0x20,0x3d,0x20,0x6b,0x34,0x20,0x2b,0x20,0x32,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x3f,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x6b,0x34,0x20,0x2b,0x20,0x32,0x29,0x20,0x2a,0x20,0x77,0x68,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x63,0x64,0x65,0x66,0x20,0x3d,0x20,0x6b,0x34,0x20,0x2b,0x20,0x33,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x3f,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x6b,0x34,0x20,0x2b,0x20,0x33,0x29,0x20,0x2a,0x20,0x77,0x68,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x36,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x34,0x38,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x2e,0x73,0x30,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x31,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x32,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x33,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x34,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x35,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x36,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x37,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x38,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x39,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x61,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x62,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x63,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x64,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x66,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x32,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x32,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x33,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x33,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x38,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x34,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x39,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x34,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x61,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x35,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x62,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x35,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x63,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x36,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x64,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x36,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x65,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x37,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x66,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x37,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x38,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x38,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x39,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x39,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x61,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x61,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x62,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x62,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x38,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x63,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x39,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x63,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x61,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x64,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x62,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x64,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x63,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x65,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x64,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x65,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x65,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x66,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x66,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x66,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x32,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x32,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x33,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x33,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x38,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x34,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x39,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x34,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x61,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x35,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x62,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x35,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x63,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x36,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x64,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x36,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x65,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x37,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x66,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x37,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x38,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x38,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x39,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x39,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x61,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x61,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x62,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x62,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x38,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x63,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x39,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x63,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x61,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x64,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x62,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x64,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x63,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x65,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x64,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x65,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x65,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x66,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x66,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x66,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x2e,0x73,0x30,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x31,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x32,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x33,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x34,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x35,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x36,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x37,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x38,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x39,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x61,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x62,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x63,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x64,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x66,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x34,0x38,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x30,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x30,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x30,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x30,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x31,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x31,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x31,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x31,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x32,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x32,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x32,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x32,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x33,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x33,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x33,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x33,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x62,0x69,0x61,0x73,0x30,0x20,0x2b,0x20,0x6d,0x61,0x64,0x28,0x6f,0x75,0x74,0x2c,0x20,0x53,0x63,0x61,0x6c,0x65,0x2c,0x20,0x73,0x75,0x6d,0x20,0x2a,0x20,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x67,0x65,0x6d,0x6d,0x5f,0x63,0x6f,0x6e,0x76,0x5f,0x63,0x32,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x44,0x49,0x4d,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x42,0x4f,0x55,0x4e,0x44,0x52,0x59,0x5f,0x43,0x48,0x45,0x43,0x4b,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x32,0x20,0x62,0x69,0x61,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x32,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x68,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x32,0x20,0x2a,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x33,0x32,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x32,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x36,0x34,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x32,0x20,0x53,0x63,0x61,0x6c,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x32,0x20,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6b,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2f,0x34,0x20,0x2d,0x20,0x31,0x3b,0x20,0x2b,0x2b,0x6b,0x29,0x20,0x7b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6b,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2f,0x34,0x3b,0x20,0x2b,0x2b,0x6b,0x29,0x20,0x7b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x57,0x49,0x44,0x54,0x48,0x5f,0x48,0x45,0x49,0x47,0x48,0x54,0x5f,0x31,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x6b,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6b,0x34,0x20,0x3d,0x20,0x6b,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x30,0x31,0x32,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x34,0x20,0x2a,0x20,0x77,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x34,0x35,0x36,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x6b,0x34,0x20,0x2b,0x20,0x31,0x29,0x20,0x2a,0x20,0x77,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x38,0x39,0x61,0x62,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x6b,0x34,0x20,0x2b,0x20,0x32,0x29,0x20,0x2a,0x20,0x77,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x63,0x64,0x65,0x66,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x6b,0x34,0x20,0x2b,0x20,0x33,0x29,0x20,0x2a,0x20,0x77,0x68,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x36,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x2e,0x73,0x30,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x31,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x32,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x33,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x34,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x35,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x36,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x37,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x38,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x39,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x61,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x62,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x63,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x64,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x66,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x38,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x39,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x61,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x62,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x63,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x64,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x65,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x66,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x38,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x38,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x39,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x39,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x61,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x61,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x62,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x62,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x38,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x63,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x39,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x63,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x61,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x64,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x62,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x64,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x63,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x65,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x64,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x65,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x65,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x66,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x66,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x66,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x2e,0x73,0x30,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x31,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x32,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x33,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x34,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x35,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x36,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x37,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x38,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x39,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x61,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x62,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x63,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x64,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x66,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x30,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x30,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x30,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x30,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x31,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x31,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x31,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x31,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2f,0x34,0x20,0x2d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x69,0x6e,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6b,0x34,0x20,0x3d,0x20,0x6b,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x30,0x31,0x32,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x34,0x20,0x2a,0x20,0x77,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x34,0x35,0x36,0x37,0x20,0x3d,0x20,0x6b,0x34,0x20,0x2b,0x20,0x31,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x3f,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x6b,0x34,0x20,0x2b,0x20,0x31,0x29,0x20,0x2a,0x20,0x77,0x68,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x38,0x39,0x61,0x62,0x20,0x3d,0x20,0x6b,0x34,0x20,0x2b,0x20,0x32,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x3f,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x6b,0x34,0x20,0x2b,0x20,0x32,0x29,0x20,0x2a,0x20,0x77,0x68,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x63,0x64,0x65,0x66,0x20,0x3d,0x20,0x6b,0x34,0x20,0x2b,0x20,0x33,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x3f,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x6b,0x34,0x20,0x2b,0x20,0x33,0x29,0x20,0x2a,0x20,0x77,0x68,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x36,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x2e,0x73,0x30,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x31,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x32,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x33,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x34,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x35,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x36,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x37,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x38,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x39,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x61,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x62,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x63,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x64,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x66,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x38,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x39,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x61,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x62,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x63,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x64,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x65,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x66,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x38,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x38,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x39,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x39,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x61,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x61,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x62,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x62,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x38,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x63,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x39,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x63,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x61,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x64,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x62,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x64,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x63,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x65,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x64,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x65,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x65,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x66,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x66,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x66,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x2e,0x73,0x30,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x31,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x32,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x33,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x34,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x35,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x36,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x37,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x38,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x39,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x61,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x62,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x63,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x64,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x66,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x30,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x30,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x30,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x30,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x31,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x31,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x31,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x73,0x31,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x62,0x69,0x61,0x73,0x30,0x20,0x2b,0x20,0x6d,0x61,0x64,0x28,0x6f,0x75,0x74,0x2c,0x20,0x53,0x63,0x61,0x6c,0x65,0x2c,0x20,0x73,0x75,0x6d,0x20,0x2a,0x20,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x32,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x32,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x32,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x32,0x28,0x6f,0x75,0x74,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x67,0x65,0x6d,0x6d,0x5f,0x63,0x6f,0x6e,0x76,0x5f,0x63,0x31,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x44,0x49,0x4d,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x42,0x4f,0x55,0x4e,0x44,0x52,0x59,0x5f,0x43,0x48,0x45,0x43,0x4b,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x62,0x69,0x61,0x73,0x30,0x20,0x3d,0x20,0x62,0x69,0x61,0x73,0x5b,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x68,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x33,0x32,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x36,0x34,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x53,0x63,0x61,0x6c,0x65,0x20,0x3d,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x5b,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x5b,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x5d,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6b,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2f,0x34,0x20,0x2d,0x20,0x31,0x3b,0x20,0x2b,0x2b,0x6b,0x29,0x20,0x7b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6b,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2f,0x34,0x3b,0x20,0x2b,0x2b,0x6b,0x29,0x20,0x7b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x57,0x49,0x44,0x54,0x48,0x5f,0x48,0x45,0x49,0x47,0x48,0x54,0x5f,0x31,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x6b,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6b,0x34,0x20,0x3d,0x20,0x6b,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x30,0x31,0x32,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x34,0x20,0x2a,0x20,0x77,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x34,0x35,0x36,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x6b,0x34,0x20,0x2b,0x20,0x31,0x29,0x20,0x2a,0x20,0x77,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x38,0x39,0x61,0x62,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x6b,0x34,0x20,0x2b,0x20,0x32,0x29,0x20,0x2a,0x20,0x77,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x63,0x64,0x65,0x66,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x6b,0x34,0x20,0x2b,0x20,0x33,0x29,0x20,0x2a,0x20,0x77,0x68,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x2e,0x73,0x30,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x31,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x32,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x33,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x34,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x35,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x36,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x37,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x38,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x39,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x61,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x62,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x63,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x64,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x66,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x38,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x38,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x39,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x61,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x62,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x64,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x65,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x66,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x2e,0x73,0x30,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x31,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x32,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x33,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x34,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x35,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x36,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x37,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x38,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x39,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x61,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x62,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x63,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x64,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x66,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2f,0x34,0x20,0x2d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x69,0x6e,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6b,0x34,0x20,0x3d,0x20,0x6b,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x30,0x31,0x32,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x34,0x20,0x2a,0x20,0x77,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x34,0x35,0x36,0x37,0x20,0x3d,0x20,0x6b,0x34,0x20,0x2b,0x20,0x31,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x3f,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x6b,0x34,0x20,0x2b,0x20,0x31,0x29,0x20,0x2a,0x20,0x77,0x68,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x38,0x39,0x61,0x62,0x20,0x3d,0x20,0x6b,0x34,0x20,0x2b,0x20,0x32,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x3f,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x6b,0x34,0x20,0x2b,0x20,0x32,0x29,0x20,0x2a,0x20,0x77,0x68,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x2e,0x73,0x63,0x64,0x65,0x66,0x20,0x3d,0x20,0x6b,0x34,0x20,0x2b,0x20,0x33,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x3f,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x6b,0x34,0x20,0x2b,0x20,0x33,0x29,0x20,0x2a,0x20,0x77,0x68,0x29,0x20,0x3a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x2e,0x73,0x30,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x31,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x32,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x33,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x34,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x35,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x36,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x37,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x38,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x39,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x61,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x62,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x63,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x64,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x66,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x38,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x38,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x39,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x61,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x62,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x64,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x65,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x66,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x2e,0x73,0x30,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x31,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x32,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x33,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x34,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x35,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x36,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x37,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x38,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x39,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x61,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x62,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x63,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x64,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x65,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x73,0x66,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x69,0x6e,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x62,0x69,0x61,0x73,0x30,0x20,0x2b,0x20,0x6d,0x61,0x64,0x28,0x6f,0x75,0x74,0x2c,0x20,0x53,0x63,0x61,0x6c,0x65,0x2c,0x20,0x73,0x75,0x6d,0x20,0x2a,0x20,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x2c,0x20,0x30,0x2c,0x20,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x3b,0xa,0x7d,0xa, } }, #endif { @@ -170,19 +176,19 @@ extern const std::map> OpenCLProgramMap }, { "loop", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x50,0x49,0x20,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x36,0x35,0x33,0x35,0x38,0x39,0x66,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x6d,0x61,0x74,0x6d,0x75,0x6c,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x41,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x42,0x2c,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x49,0x41,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x43,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x4f,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x41,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x42,0x2c,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x49,0x41,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x43,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x69,0x74,0x65,0x72,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x74,0x65,0x70,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x3c,0x3d,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x3c,0x3d,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x28,0x70,0x6f,0x73,0x2e,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x74,0x65,0x72,0x73,0x2e,0x78,0x20,0x3e,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x2e,0x78,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x29,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x4f,0x5b,0x70,0x6f,0x73,0x2e,0x7a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x74,0x65,0x72,0x73,0x2e,0x79,0x20,0x3e,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x2e,0x79,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x29,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x41,0x5b,0x70,0x6f,0x73,0x2e,0x7a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x74,0x65,0x72,0x73,0x2e,0x7a,0x20,0x3e,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x29,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x42,0x5b,0x70,0x6f,0x73,0x2e,0x7a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x49,0x41,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x74,0x65,0x72,0x73,0x2e,0x77,0x20,0x3e,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x2e,0x77,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x29,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x43,0x5b,0x70,0x6f,0x73,0x2e,0x7a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x2a,0x20,0x73,0x74,0x65,0x70,0x73,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x54,0x52,0x41,0x4e,0x53,0x50,0x4f,0x53,0x45,0x5f,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x41,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x41,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x79,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x41,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x41,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x6c,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x20,0x54,0x52,0x41,0x4e,0x53,0x50,0x4f,0x53,0x45,0x5f,0x42,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x42,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x42,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x7a,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2a,0x20,0x6c,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x42,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x42,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x7a,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x78,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x49,0x41,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x43,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x77,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x5f,0x70,0x61,0x63,0x6b,0x20,0x3d,0x20,0x28,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x3e,0x3e,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6c,0x5f,0x70,0x61,0x63,0x6b,0x20,0x2d,0x20,0x31,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x69,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x30,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x31,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x32,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x30,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x31,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x32,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x33,0x3b,0xa,0x23,0x69,0x66,0x20,0x54,0x52,0x41,0x4e,0x53,0x50,0x4f,0x53,0x45,0x5f,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x41,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2a,0x20,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x41,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x28,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x29,0x20,0x2a,0x20,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x41,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x28,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x29,0x20,0x2a,0x20,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x41,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x28,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x29,0x20,0x2a,0x20,0x65,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x41,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x41,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6c,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x41,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x20,0x2a,0x20,0x6c,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x41,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x20,0x2a,0x20,0x6c,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x20,0x54,0x52,0x41,0x4e,0x53,0x50,0x4f,0x53,0x45,0x5f,0x42,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x42,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x42,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6c,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x42,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x20,0x2a,0x20,0x6c,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x42,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x20,0x2a,0x20,0x6c,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x30,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x31,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x32,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x33,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x30,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x31,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x32,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x33,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x32,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x30,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x31,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x32,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x33,0x2e,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x33,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x30,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x31,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x32,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x33,0x2e,0x77,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x42,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x42,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x28,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x29,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x42,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x28,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x29,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x42,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x28,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x29,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x54,0x52,0x41,0x4e,0x53,0x50,0x4f,0x53,0x45,0x5f,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x30,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x30,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x31,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x31,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x32,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x32,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x33,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x30,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x30,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x31,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x31,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x32,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x32,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x33,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x30,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x30,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x31,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x31,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x32,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x32,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x33,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x30,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x30,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x31,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x31,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x32,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x32,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x33,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x30,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x30,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x30,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x31,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x30,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x32,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x30,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x31,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x30,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x31,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x31,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x31,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x32,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x31,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x32,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x30,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x32,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x31,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x32,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x32,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x32,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x33,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x30,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x33,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x31,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x33,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x32,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x33,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x28,0x28,0x6c,0x5f,0x70,0x61,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x3c,0x3c,0x20,0x32,0x29,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6c,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x23,0x69,0x66,0x20,0x54,0x52,0x41,0x4e,0x53,0x50,0x4f,0x53,0x45,0x5f,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x41,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x65,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x2e,0x78,0x20,0x3d,0x20,0x41,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x2e,0x79,0x20,0x3d,0x20,0x41,0x5f,0x70,0x74,0x72,0x5b,0x69,0x20,0x2b,0x20,0x6c,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x2e,0x7a,0x20,0x3d,0x20,0x41,0x5f,0x70,0x74,0x72,0x5b,0x69,0x20,0x2b,0x20,0x32,0x20,0x2a,0x20,0x6c,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x2e,0x77,0x20,0x3d,0x20,0x41,0x5f,0x70,0x74,0x72,0x5b,0x69,0x20,0x2b,0x20,0x33,0x20,0x2a,0x20,0x6c,0x5d,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x20,0x54,0x52,0x41,0x4e,0x53,0x50,0x4f,0x53,0x45,0x5f,0x42,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x2e,0x78,0x20,0x3d,0x20,0x42,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x2e,0x79,0x20,0x3d,0x20,0x42,0x5f,0x70,0x74,0x72,0x5b,0x69,0x20,0x2b,0x20,0x6c,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x2e,0x7a,0x20,0x3d,0x20,0x42,0x5f,0x70,0x74,0x72,0x5b,0x69,0x20,0x2b,0x20,0x32,0x20,0x2a,0x20,0x6c,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x2e,0x77,0x20,0x3d,0x20,0x42,0x5f,0x70,0x74,0x72,0x5b,0x69,0x20,0x2b,0x20,0x33,0x20,0x2a,0x20,0x6c,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x42,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x68,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x78,0x3b,0xa,0x23,0x69,0x66,0x20,0x48,0x5f,0x4c,0x45,0x41,0x56,0x45,0x53,0x20,0x3d,0x3d,0x20,0x30,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x31,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x32,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x32,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x33,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x33,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2b,0x20,0x33,0x20,0x3c,0x20,0x68,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x31,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x32,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x32,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x33,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x33,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x7b,0xa,0x23,0x69,0x66,0x20,0x48,0x5f,0x4c,0x45,0x41,0x56,0x45,0x53,0x20,0x3d,0x3d,0x20,0x31,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x68,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x32,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x20,0x2a,0x20,0x68,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x33,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x20,0x2a,0x20,0x68,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x2e,0x78,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x48,0x5f,0x4c,0x45,0x41,0x56,0x45,0x53,0x20,0x3d,0x3d,0x20,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x32,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x32,0x29,0x76,0x61,0x6c,0x75,0x65,0x30,0x2e,0x78,0x79,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x32,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x32,0x29,0x76,0x61,0x6c,0x75,0x65,0x31,0x2e,0x78,0x79,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x32,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x32,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x32,0x29,0x76,0x61,0x6c,0x75,0x65,0x32,0x2e,0x78,0x79,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x33,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x32,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x32,0x29,0x76,0x61,0x6c,0x75,0x65,0x33,0x2e,0x78,0x79,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x48,0x5f,0x4c,0x45,0x41,0x56,0x45,0x53,0x20,0x3d,0x3d,0x20,0x33,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x33,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x33,0x29,0x76,0x61,0x6c,0x75,0x65,0x30,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x33,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x33,0x29,0x76,0x61,0x6c,0x75,0x65,0x31,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x32,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x33,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x33,0x29,0x76,0x61,0x6c,0x75,0x65,0x32,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x33,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x33,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x33,0x29,0x76,0x61,0x6c,0x75,0x65,0x33,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x74,0x69,0x6c,0x65,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x4e,0x48,0x57,0x43,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x64,0x73,0x74,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x2a,0x20,0x62,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x63,0x20,0x2a,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x68,0x20,0x2a,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x77,0x20,0x2a,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x73,0x74,0x5f,0x70,0x74,0x72,0x5b,0x30,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x63,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x73,0x74,0x5f,0x70,0x74,0x72,0x5b,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x63,0x20,0x2b,0x20,0x32,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x73,0x74,0x5f,0x70,0x74,0x72,0x5b,0x32,0x20,0x2a,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x63,0x20,0x2b,0x20,0x33,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x73,0x74,0x5f,0x70,0x74,0x72,0x5b,0x33,0x20,0x2a,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x70,0x61,0x63,0x6b,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x4e,0x48,0x57,0x43,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x73,0x72,0x63,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x2a,0x20,0x62,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x63,0x20,0x2a,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x68,0x20,0x2a,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x77,0x20,0x2a,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x76,0x61,0x6c,0x75,0x65,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x26,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x34,0x20,0x26,0x26,0x20,0x28,0x69,0x20,0x2b,0x20,0x63,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x73,0x72,0x63,0x5f,0x70,0x74,0x72,0x5b,0x69,0x20,0x2a,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x67,0x61,0x74,0x68,0x65,0x72,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x64,0x73,0x74,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x73,0x72,0x63,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x72,0x63,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x64,0x73,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x65,0x70,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x74,0x65,0x72,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x78,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x79,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2f,0x20,0x78,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x70,0x6f,0x73,0x2e,0x7a,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x74,0x65,0x72,0x73,0x2e,0x78,0x20,0x3e,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x2e,0x78,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x29,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x64,0x73,0x74,0x5b,0x70,0x6f,0x73,0x2e,0x7a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x74,0x65,0x72,0x73,0x2e,0x79,0x20,0x3e,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x2e,0x79,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x29,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x73,0x72,0x63,0x5b,0x70,0x6f,0x73,0x2e,0x7a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x2a,0x20,0x73,0x74,0x65,0x70,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x64,0x73,0x74,0x2e,0x77,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x64,0x73,0x74,0x2e,0x78,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x64,0x73,0x74,0x2e,0x79,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x64,0x73,0x74,0x2e,0x7a,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x72,0x63,0x2e,0x77,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x72,0x63,0x2e,0x78,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x72,0x63,0x2e,0x79,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x72,0x63,0x2e,0x7a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4c,0x4f,0x4f,0x50,0x5f,0x42,0x49,0x4e,0x41,0x52,0x59,0x5f,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x72,0x6f,0x61,0x64,0x63,0x61,0x73,0x74,0x5f,0x62,0x69,0x6e,0x61,0x72,0x79,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x38,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x2f,0x2f,0x28,0x62,0x61,0x74,0x63,0x68,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x2f,0x2f,0x20,0x6e,0x63,0x34,0x68,0x77,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x38,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x38,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x6f,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x6f,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x6f,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x25,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6e,0x6f,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x2f,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x6f,0x34,0x20,0x3d,0x20,0x63,0x6f,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x63,0x6f,0x76,0x65,0x63,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x28,0x63,0x6f,0x34,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x20,0x28,0x63,0x6f,0x34,0x20,0x2b,0x20,0x31,0x29,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x20,0x28,0x63,0x6f,0x34,0x20,0x2b,0x20,0x32,0x29,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x20,0x28,0x63,0x6f,0x34,0x20,0x2b,0x20,0x33,0x29,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x6e,0x6f,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x63,0x6f,0x76,0x65,0x63,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x6f,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x6f,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x77,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x28,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x29,0x3b,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x28,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x68,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x3b,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x63,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x3b,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x2c,0x20,0x69,0x6e,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x26,0x69,0x6e,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x31,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x26,0x69,0x6e,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x77,0x30,0x20,0x3d,0x20,0x77,0x20,0x25,0x20,0x28,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x68,0x30,0x20,0x3d,0x20,0x68,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x63,0x30,0x20,0x3d,0x20,0x63,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6e,0x30,0x20,0x3d,0x20,0x6e,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x77,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x77,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x68,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x68,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x63,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x63,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x6e,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x6e,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x34,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x6e,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x20,0x2b,0x20,0x63,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x20,0x2b,0x20,0x68,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x20,0x2b,0x20,0x77,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6e,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x63,0x63,0x34,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x63,0x63,0x34,0x20,0x25,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x74,0x6d,0x70,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x63,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x20,0x2b,0x20,0x77,0x63,0x34,0x2c,0x20,0x6e,0x63,0x34,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x20,0x2b,0x20,0x68,0x63,0x34,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x74,0x6d,0x70,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x26,0x74,0x6d,0x70,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x74,0x6d,0x70,0x5f,0x70,0x74,0x72,0x5b,0x63,0x63,0x34,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x77,0x30,0x20,0x3d,0x20,0x77,0x20,0x25,0x20,0x28,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x68,0x30,0x20,0x3d,0x20,0x68,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x63,0x30,0x20,0x3d,0x20,0x63,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6e,0x30,0x20,0x3d,0x20,0x6e,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x77,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x77,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x68,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x68,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x63,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x63,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x6e,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x6e,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x34,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x6e,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x20,0x2b,0x20,0x63,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x20,0x2b,0x20,0x68,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x20,0x2b,0x20,0x77,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6e,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x63,0x63,0x34,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x63,0x63,0x34,0x20,0x25,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x74,0x6d,0x70,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x63,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x20,0x2b,0x20,0x77,0x63,0x34,0x2c,0x20,0x6e,0x63,0x34,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x20,0x2b,0x20,0x68,0x63,0x34,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x74,0x6d,0x70,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x26,0x74,0x6d,0x70,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x74,0x6d,0x70,0x5f,0x70,0x74,0x72,0x5b,0x63,0x63,0x34,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4c,0x4f,0x4f,0x50,0x5f,0x42,0x49,0x4e,0x41,0x52,0x59,0x5f,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x6f,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x6f,0x2c,0x20,0x6e,0x6f,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x6f,0x29,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x50,0x49,0x20,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x36,0x35,0x33,0x35,0x38,0x39,0x66,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x6d,0x61,0x74,0x6d,0x75,0x6c,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x41,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x42,0x2c,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x49,0x41,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x43,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x69,0x6e,0x74,0x2a,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x4f,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x69,0x6e,0x74,0x2a,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x41,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x69,0x6e,0x74,0x2a,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x42,0x2c,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x49,0x41,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x69,0x6e,0x74,0x2a,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x43,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x69,0x74,0x65,0x72,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x74,0x65,0x70,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x3c,0x3d,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x3c,0x3d,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x28,0x70,0x6f,0x73,0x2e,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x74,0x65,0x72,0x73,0x2e,0x78,0x20,0x3e,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x2e,0x78,0x20,0x3d,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x4f,0x5b,0x70,0x6f,0x73,0x2e,0x7a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x74,0x65,0x72,0x73,0x2e,0x79,0x20,0x3e,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x2e,0x79,0x20,0x3d,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x41,0x5b,0x70,0x6f,0x73,0x2e,0x7a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x74,0x65,0x72,0x73,0x2e,0x7a,0x20,0x3e,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x2e,0x7a,0x20,0x3d,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x42,0x5b,0x70,0x6f,0x73,0x2e,0x7a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x49,0x41,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x74,0x65,0x72,0x73,0x2e,0x77,0x20,0x3e,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x2e,0x77,0x20,0x3d,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x43,0x5b,0x70,0x6f,0x73,0x2e,0x7a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x2a,0x20,0x73,0x74,0x65,0x70,0x73,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x54,0x52,0x41,0x4e,0x53,0x50,0x4f,0x53,0x45,0x5f,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x41,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x41,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x79,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x41,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x41,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x6c,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x20,0x54,0x52,0x41,0x4e,0x53,0x50,0x4f,0x53,0x45,0x5f,0x42,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x42,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x42,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x7a,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2a,0x20,0x6c,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x42,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x42,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x7a,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x78,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x49,0x41,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x43,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x77,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x5f,0x70,0x61,0x63,0x6b,0x20,0x3d,0x20,0x28,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x3e,0x3e,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6c,0x5f,0x70,0x61,0x63,0x6b,0x20,0x2d,0x20,0x31,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x69,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x30,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x31,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x32,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x30,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x31,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x32,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x33,0x3b,0xa,0x23,0x69,0x66,0x20,0x54,0x52,0x41,0x4e,0x53,0x50,0x4f,0x53,0x45,0x5f,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x41,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2a,0x20,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x41,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x28,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x29,0x20,0x2a,0x20,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x41,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x28,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x29,0x20,0x2a,0x20,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x41,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x28,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x29,0x20,0x2a,0x20,0x65,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x41,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x41,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6c,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x41,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x20,0x2a,0x20,0x6c,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x41,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x20,0x2a,0x20,0x6c,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x20,0x54,0x52,0x41,0x4e,0x53,0x50,0x4f,0x53,0x45,0x5f,0x42,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x42,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x42,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6c,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x42,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x20,0x2a,0x20,0x6c,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x42,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x20,0x2a,0x20,0x6c,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x30,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x31,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x32,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x33,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x30,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x31,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x32,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x33,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x32,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x30,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x31,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x32,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x33,0x2e,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x33,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x30,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x31,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x32,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x74,0x6d,0x70,0x33,0x2e,0x77,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x42,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x42,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x28,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x29,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x42,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x28,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x29,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x42,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x28,0x6c,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x29,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x54,0x52,0x41,0x4e,0x53,0x50,0x4f,0x53,0x45,0x5f,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x30,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x30,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x31,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x31,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x32,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x32,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x33,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x30,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x30,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x31,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x31,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x32,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x32,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x33,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x30,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x30,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x31,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x31,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x32,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x32,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x33,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x30,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x30,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x31,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x31,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x32,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x32,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x33,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x30,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x30,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x30,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x31,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x30,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x32,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x30,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x31,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x30,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x31,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x31,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x31,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x32,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x31,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x32,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x30,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x32,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x31,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x32,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x32,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x32,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x33,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x30,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x33,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x31,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x33,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x32,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x33,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x28,0x28,0x6c,0x5f,0x70,0x61,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x3c,0x3c,0x20,0x32,0x29,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6c,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x23,0x69,0x66,0x20,0x54,0x52,0x41,0x4e,0x53,0x50,0x4f,0x53,0x45,0x5f,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x41,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x65,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x2e,0x78,0x20,0x3d,0x20,0x41,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x2e,0x79,0x20,0x3d,0x20,0x41,0x5f,0x70,0x74,0x72,0x5b,0x69,0x20,0x2b,0x20,0x6c,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x2e,0x7a,0x20,0x3d,0x20,0x41,0x5f,0x70,0x74,0x72,0x5b,0x69,0x20,0x2b,0x20,0x32,0x20,0x2a,0x20,0x6c,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x2e,0x77,0x20,0x3d,0x20,0x41,0x5f,0x70,0x74,0x72,0x5b,0x69,0x20,0x2b,0x20,0x33,0x20,0x2a,0x20,0x6c,0x5d,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x20,0x54,0x52,0x41,0x4e,0x53,0x50,0x4f,0x53,0x45,0x5f,0x42,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x2e,0x78,0x20,0x3d,0x20,0x42,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x2e,0x79,0x20,0x3d,0x20,0x42,0x5f,0x70,0x74,0x72,0x5b,0x69,0x20,0x2b,0x20,0x6c,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x2e,0x7a,0x20,0x3d,0x20,0x42,0x5f,0x70,0x74,0x72,0x5b,0x69,0x20,0x2b,0x20,0x32,0x20,0x2a,0x20,0x6c,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x2e,0x77,0x20,0x3d,0x20,0x42,0x5f,0x70,0x74,0x72,0x5b,0x69,0x20,0x2b,0x20,0x33,0x20,0x2a,0x20,0x6c,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x42,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x2e,0x78,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x2e,0x79,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x2e,0x7a,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x76,0x61,0x6c,0x75,0x65,0x5f,0x61,0x2e,0x77,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x62,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x68,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x78,0x3b,0xa,0x23,0x69,0x66,0x20,0x48,0x5f,0x4c,0x45,0x41,0x56,0x45,0x53,0x20,0x3d,0x3d,0x20,0x30,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x31,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x32,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x32,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x33,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x33,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2b,0x20,0x33,0x20,0x3c,0x20,0x68,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x31,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x32,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x32,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x33,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x33,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x7b,0xa,0x23,0x69,0x66,0x20,0x48,0x5f,0x4c,0x45,0x41,0x56,0x45,0x53,0x20,0x3d,0x3d,0x20,0x31,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x30,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x68,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x31,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x32,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x20,0x2a,0x20,0x68,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x32,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x33,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x20,0x2a,0x20,0x68,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x33,0x2e,0x78,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x48,0x5f,0x4c,0x45,0x41,0x56,0x45,0x53,0x20,0x3d,0x3d,0x20,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x32,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x32,0x29,0x76,0x61,0x6c,0x75,0x65,0x30,0x2e,0x78,0x79,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x32,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x32,0x29,0x76,0x61,0x6c,0x75,0x65,0x31,0x2e,0x78,0x79,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x32,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x32,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x32,0x29,0x76,0x61,0x6c,0x75,0x65,0x32,0x2e,0x78,0x79,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x33,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x32,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x32,0x29,0x76,0x61,0x6c,0x75,0x65,0x33,0x2e,0x78,0x79,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x48,0x5f,0x4c,0x45,0x41,0x56,0x45,0x53,0x20,0x3d,0x3d,0x20,0x33,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x33,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x33,0x29,0x76,0x61,0x6c,0x75,0x65,0x30,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x33,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x33,0x29,0x76,0x61,0x6c,0x75,0x65,0x31,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x32,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x33,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x33,0x29,0x76,0x61,0x6c,0x75,0x65,0x32,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2b,0x20,0x33,0x20,0x3e,0x3d,0x20,0x65,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x33,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x33,0x29,0x76,0x61,0x6c,0x75,0x65,0x33,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x20,0x2a,0x20,0x68,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x74,0x69,0x6c,0x65,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x4e,0x48,0x57,0x43,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x64,0x73,0x74,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x2a,0x20,0x62,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x63,0x20,0x2a,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x68,0x20,0x2a,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x77,0x20,0x2a,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x73,0x74,0x5f,0x70,0x74,0x72,0x5b,0x30,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x63,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x73,0x74,0x5f,0x70,0x74,0x72,0x5b,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x63,0x20,0x2b,0x20,0x32,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x73,0x74,0x5f,0x70,0x74,0x72,0x5b,0x32,0x20,0x2a,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x63,0x20,0x2b,0x20,0x33,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x73,0x74,0x5f,0x70,0x74,0x72,0x5b,0x33,0x20,0x2a,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x70,0x61,0x63,0x6b,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x4e,0x48,0x57,0x43,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x73,0x72,0x63,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x2a,0x20,0x62,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x63,0x20,0x2a,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x68,0x20,0x2a,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x77,0x20,0x2a,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x20,0x2a,0x76,0x61,0x6c,0x75,0x65,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x2a,0x29,0x26,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x34,0x20,0x26,0x26,0x20,0x28,0x69,0x20,0x2b,0x20,0x63,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x29,0x73,0x72,0x63,0x5f,0x70,0x74,0x72,0x5b,0x69,0x20,0x2a,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x67,0x61,0x74,0x68,0x65,0x72,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x69,0x6e,0x74,0x2a,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x64,0x73,0x74,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x69,0x6e,0x74,0x2a,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x73,0x72,0x63,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x72,0x63,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x64,0x73,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x65,0x70,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x74,0x65,0x72,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x69,0x7a,0x65,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x78,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x79,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2f,0x20,0x78,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x70,0x6f,0x73,0x2e,0x7a,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x74,0x65,0x72,0x73,0x2e,0x78,0x20,0x3e,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x2e,0x78,0x20,0x3d,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x64,0x73,0x74,0x5b,0x70,0x6f,0x73,0x2e,0x7a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x74,0x65,0x72,0x73,0x2e,0x79,0x20,0x3e,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x2e,0x79,0x20,0x3d,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x73,0x72,0x63,0x5b,0x70,0x6f,0x73,0x2e,0x7a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x2a,0x20,0x73,0x74,0x65,0x70,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x3e,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x20,0x3e,0x3d,0x20,0x30,0x20,0x26,0x26,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x69,0x7a,0x65,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x64,0x73,0x74,0x2e,0x77,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x64,0x73,0x74,0x2e,0x78,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x64,0x73,0x74,0x2e,0x79,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x64,0x73,0x74,0x2e,0x7a,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x69,0x6e,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x72,0x63,0x2e,0x77,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x72,0x63,0x2e,0x78,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x72,0x63,0x2e,0x79,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x72,0x63,0x2e,0x7a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x64,0x73,0x74,0x2e,0x77,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x64,0x73,0x74,0x2e,0x78,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x64,0x73,0x74,0x2e,0x79,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x64,0x73,0x74,0x2e,0x7a,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4c,0x4f,0x4f,0x50,0x5f,0x42,0x49,0x4e,0x41,0x52,0x59,0x5f,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x72,0x6f,0x61,0x64,0x63,0x61,0x73,0x74,0x5f,0x62,0x69,0x6e,0x61,0x72,0x79,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x38,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x2f,0x2f,0x28,0x62,0x61,0x74,0x63,0x68,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x2f,0x2f,0x20,0x6e,0x63,0x34,0x68,0x77,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x38,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x38,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x6f,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x6f,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x6f,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x25,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6e,0x6f,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x2f,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x6f,0x34,0x20,0x3d,0x20,0x63,0x6f,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x63,0x6f,0x76,0x65,0x63,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x28,0x63,0x6f,0x34,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x20,0x28,0x63,0x6f,0x34,0x20,0x2b,0x20,0x31,0x29,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x20,0x28,0x63,0x6f,0x34,0x20,0x2b,0x20,0x32,0x29,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x20,0x28,0x63,0x6f,0x34,0x20,0x2b,0x20,0x33,0x29,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x6e,0x6f,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x63,0x6f,0x76,0x65,0x63,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x6f,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x6f,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x77,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x28,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x29,0x3b,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x28,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x68,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x3b,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x63,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x3b,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x30,0x2c,0x20,0x69,0x6e,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x2a,0x20,0x69,0x6e,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x2a,0x29,0x26,0x69,0x6e,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x2a,0x20,0x69,0x6e,0x31,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x2a,0x29,0x26,0x69,0x6e,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x77,0x30,0x20,0x3d,0x20,0x77,0x20,0x25,0x20,0x28,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x68,0x30,0x20,0x3d,0x20,0x68,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x63,0x30,0x20,0x3d,0x20,0x63,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6e,0x30,0x20,0x3d,0x20,0x6e,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x77,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x77,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x68,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x68,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x63,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x63,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x6e,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x6e,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x34,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x6e,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x20,0x2b,0x20,0x63,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x20,0x2b,0x20,0x68,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x20,0x2b,0x20,0x77,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6e,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x63,0x63,0x34,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x63,0x63,0x34,0x20,0x25,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x74,0x6d,0x70,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x63,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x20,0x2b,0x20,0x77,0x63,0x34,0x2c,0x20,0x6e,0x63,0x34,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x20,0x2b,0x20,0x68,0x63,0x34,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x74,0x6d,0x70,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x2a,0x29,0x26,0x74,0x6d,0x70,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x74,0x6d,0x70,0x5f,0x70,0x74,0x72,0x5b,0x63,0x63,0x34,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x77,0x30,0x20,0x3d,0x20,0x77,0x20,0x25,0x20,0x28,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x68,0x30,0x20,0x3d,0x20,0x68,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x63,0x30,0x20,0x3d,0x20,0x63,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6e,0x30,0x20,0x3d,0x20,0x6e,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x77,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x77,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x68,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x68,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x63,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x63,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x6e,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x6e,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x34,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x6e,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x20,0x2b,0x20,0x63,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x20,0x2b,0x20,0x68,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x20,0x2b,0x20,0x77,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6e,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x63,0x63,0x34,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x63,0x63,0x34,0x20,0x25,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x74,0x6d,0x70,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x63,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x20,0x2b,0x20,0x77,0x63,0x34,0x2c,0x20,0x6e,0x63,0x34,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x20,0x2b,0x20,0x68,0x63,0x34,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x74,0x6d,0x70,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x2a,0x29,0x26,0x74,0x6d,0x70,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x74,0x6d,0x70,0x5f,0x70,0x74,0x72,0x5b,0x63,0x63,0x34,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4c,0x4f,0x4f,0x50,0x5f,0x42,0x49,0x4e,0x41,0x52,0x59,0x5f,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x6f,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x6f,0x2c,0x20,0x6e,0x6f,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x6f,0x29,0x2c,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x49,0x34,0x28,0x6f,0x75,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa, } }, #ifndef MNN_OPENCL_BUFFER_CLOSED { "argmax_buf", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x53,0x45,0x4c,0x45,0x43,0x54,0x28,0x61,0x2c,0x20,0x62,0x2c,0x20,0x63,0x2c,0x20,0x64,0x29,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x61,0x2e,0x78,0x20,0x3d,0x20,0x62,0x2e,0x78,0x20,0x3c,0x20,0x63,0x2e,0x78,0x20,0x3f,0x20,0x64,0x20,0x3a,0x20,0x61,0x2e,0x78,0x3b,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x61,0x2e,0x79,0x20,0x3d,0x20,0x62,0x2e,0x79,0x20,0x3c,0x20,0x63,0x2e,0x79,0x20,0x3f,0x20,0x64,0x20,0x3a,0x20,0x61,0x2e,0x79,0x3b,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x61,0x2e,0x7a,0x20,0x3d,0x20,0x62,0x2e,0x7a,0x20,0x3c,0x20,0x63,0x2e,0x7a,0x20,0x3f,0x20,0x64,0x20,0x3a,0x20,0x61,0x2e,0x7a,0x3b,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x61,0x2e,0x77,0x20,0x3d,0x20,0x62,0x2e,0x77,0x20,0x3c,0x20,0x63,0x2e,0x77,0x20,0x3f,0x20,0x64,0x20,0x3a,0x20,0x61,0x2e,0x77,0x3b,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x41,0x52,0x47,0x4d,0x49,0x4e,0x5f,0x53,0x45,0x4c,0x45,0x43,0x54,0x28,0x61,0x2c,0x20,0x62,0x2c,0x20,0x63,0x2c,0x20,0x64,0x29,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x61,0x2e,0x78,0x20,0x3d,0x20,0x62,0x2e,0x78,0x20,0x3e,0x20,0x63,0x2e,0x78,0x20,0x3f,0x20,0x64,0x20,0x3a,0x20,0x61,0x2e,0x78,0x3b,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x61,0x2e,0x79,0x20,0x3d,0x20,0x62,0x2e,0x79,0x20,0x3e,0x20,0x63,0x2e,0x79,0x20,0x3f,0x20,0x64,0x20,0x3a,0x20,0x61,0x2e,0x79,0x3b,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x61,0x2e,0x7a,0x20,0x3d,0x20,0x62,0x2e,0x7a,0x20,0x3e,0x20,0x63,0x2e,0x7a,0x20,0x3f,0x20,0x64,0x20,0x3a,0x20,0x61,0x2e,0x7a,0x3b,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x61,0x2e,0x77,0x20,0x3d,0x20,0x62,0x2e,0x77,0x20,0x3e,0x20,0x63,0x2e,0x77,0x20,0x3f,0x20,0x64,0x20,0x3a,0x20,0x61,0x2e,0x77,0x3b,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x61,0x72,0x67,0x6d,0x61,0x78,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x30,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x30,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x31,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x53,0x45,0x4c,0x45,0x43,0x54,0x28,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x41,0x52,0x47,0x4d,0x49,0x4e,0x5f,0x53,0x45,0x4c,0x45,0x43,0x54,0x28,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x66,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x69,0x6e,0x64,0x65,0x78,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x61,0x72,0x67,0x6d,0x61,0x78,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x31,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x53,0x45,0x4c,0x45,0x43,0x54,0x28,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x41,0x52,0x47,0x4d,0x49,0x4e,0x5f,0x53,0x45,0x4c,0x45,0x43,0x54,0x28,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x66,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x69,0x6e,0x64,0x65,0x78,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x61,0x72,0x67,0x6d,0x61,0x78,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2d,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x26,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x34,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3c,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3e,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3c,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3e,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x69,0x6e,0x64,0x65,0x78,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x61,0x72,0x67,0x6d,0x61,0x78,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2d,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x26,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x34,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3c,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3e,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3c,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3e,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x69,0x6e,0x64,0x65,0x78,0x3b,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x61,0x72,0x67,0x6d,0x61,0x78,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x30,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x30,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x31,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x62,0x61,0x74,0x63,0x68,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x53,0x45,0x4c,0x45,0x43,0x54,0x28,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x41,0x52,0x47,0x4d,0x49,0x4e,0x5f,0x53,0x45,0x4c,0x45,0x43,0x54,0x28,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x66,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x69,0x6e,0x64,0x65,0x78,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x53,0x45,0x4c,0x45,0x43,0x54,0x28,0x41,0x2c,0x20,0x42,0x2c,0x20,0x43,0x2c,0x20,0x44,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x41,0x2e,0x78,0x20,0x3c,0x20,0x42,0x2e,0x78,0x29,0x7b,0x20,0x41,0x2e,0x78,0x20,0x3d,0x20,0x42,0x2e,0x78,0x3b,0x20,0x43,0x2e,0x78,0x20,0x3d,0x20,0x44,0x3b,0x20,0x7d,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x41,0x2e,0x79,0x20,0x3c,0x20,0x42,0x2e,0x79,0x29,0x7b,0x20,0x41,0x2e,0x79,0x20,0x3d,0x20,0x42,0x2e,0x79,0x3b,0x20,0x43,0x2e,0x79,0x20,0x3d,0x20,0x44,0x3b,0x20,0x7d,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x41,0x2e,0x7a,0x20,0x3c,0x20,0x42,0x2e,0x7a,0x29,0x7b,0x20,0x41,0x2e,0x7a,0x20,0x3d,0x20,0x42,0x2e,0x7a,0x3b,0x20,0x43,0x2e,0x7a,0x20,0x3d,0x20,0x44,0x3b,0x20,0x7d,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x41,0x2e,0x77,0x20,0x3c,0x20,0x42,0x2e,0x77,0x29,0x7b,0x20,0x41,0x2e,0x77,0x20,0x3d,0x20,0x42,0x2e,0x77,0x3b,0x20,0x43,0x2e,0x77,0x20,0x3d,0x20,0x44,0x3b,0x20,0x7d,0x20,0x20,0x20,0x20,0x5c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x41,0x52,0x47,0x4d,0x49,0x4e,0x5f,0x53,0x45,0x4c,0x45,0x43,0x54,0x28,0x41,0x2c,0x20,0x42,0x2c,0x20,0x43,0x2c,0x20,0x44,0x29,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x41,0x2e,0x78,0x20,0x3e,0x20,0x42,0x2e,0x78,0x29,0x7b,0x20,0x41,0x2e,0x78,0x20,0x3d,0x20,0x42,0x2e,0x78,0x3b,0x20,0x43,0x2e,0x78,0x20,0x3d,0x20,0x44,0x3b,0x20,0x7d,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x41,0x2e,0x79,0x20,0x3e,0x20,0x42,0x2e,0x79,0x29,0x7b,0x20,0x41,0x2e,0x79,0x20,0x3d,0x20,0x42,0x2e,0x79,0x3b,0x20,0x43,0x2e,0x79,0x20,0x3d,0x20,0x44,0x3b,0x20,0x7d,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x41,0x2e,0x7a,0x20,0x3e,0x20,0x42,0x2e,0x7a,0x29,0x7b,0x20,0x41,0x2e,0x7a,0x20,0x3d,0x20,0x42,0x2e,0x7a,0x3b,0x20,0x43,0x2e,0x7a,0x20,0x3d,0x20,0x44,0x3b,0x20,0x7d,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x41,0x2e,0x77,0x20,0x3e,0x20,0x42,0x2e,0x77,0x29,0x7b,0x20,0x41,0x2e,0x77,0x20,0x3d,0x20,0x42,0x2e,0x77,0x3b,0x20,0x43,0x2e,0x77,0x20,0x3d,0x20,0x44,0x3b,0x20,0x7d,0x20,0x20,0x20,0x20,0x5c,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x61,0x72,0x67,0x6d,0x61,0x78,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x69,0x6e,0x74,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x30,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x30,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x30,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x2d,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x20,0x3e,0x3d,0x20,0x34,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x3d,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x53,0x45,0x4c,0x45,0x43,0x54,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x69,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x41,0x52,0x47,0x4d,0x49,0x4e,0x5f,0x53,0x45,0x4c,0x45,0x43,0x54,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x69,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x78,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x78,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x78,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x78,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x78,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x78,0x3b,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x79,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x79,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x79,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x79,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x79,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x79,0x3b,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x7a,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x7a,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x7a,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x7a,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x7a,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x7a,0x3b,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x77,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x77,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x77,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x77,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x77,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x77,0x3b,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x78,0x20,0x3e,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x78,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x78,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x78,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x78,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x78,0x3b,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x79,0x20,0x3e,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x79,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x79,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x79,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x79,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x79,0x3b,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x7a,0x20,0x3e,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x7a,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x7a,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x7a,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x7a,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x7a,0x3b,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x77,0x20,0x3e,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x77,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x77,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x77,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x77,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x77,0x3b,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6c,0x69,0x64,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x30,0x5d,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x53,0x45,0x4c,0x45,0x43,0x54,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x69,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x41,0x52,0x47,0x4d,0x49,0x4e,0x5f,0x53,0x45,0x4c,0x45,0x43,0x54,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x69,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x61,0x72,0x67,0x6d,0x61,0x78,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x69,0x6e,0x74,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x78,0x2c,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x30,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x2d,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x20,0x3e,0x3d,0x20,0x34,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x3d,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x20,0x69,0x2b,0x3d,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x53,0x45,0x4c,0x45,0x43,0x54,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x69,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x41,0x52,0x47,0x4d,0x49,0x4e,0x5f,0x53,0x45,0x4c,0x45,0x43,0x54,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x69,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x78,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x78,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x78,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x78,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x78,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x78,0x3b,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x79,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x79,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x79,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x79,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x79,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x79,0x3b,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x7a,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x7a,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x7a,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x7a,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x7a,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x7a,0x3b,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x77,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x77,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x77,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x77,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x77,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x77,0x3b,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x78,0x20,0x3e,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x78,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x78,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x78,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x78,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x78,0x3b,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x79,0x20,0x3e,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x79,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x79,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x79,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x79,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x79,0x3b,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x7a,0x20,0x3e,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x7a,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x7a,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x7a,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x7a,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x7a,0x3b,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x77,0x20,0x3e,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x77,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x77,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x77,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x77,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x77,0x3b,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6c,0x69,0x64,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x30,0x5d,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x53,0x45,0x4c,0x45,0x43,0x54,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x69,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x41,0x52,0x47,0x4d,0x49,0x4e,0x5f,0x53,0x45,0x4c,0x45,0x43,0x54,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x69,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x61,0x72,0x67,0x6d,0x61,0x78,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x69,0x6e,0x74,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x68,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x78,0x2c,0x20,0x77,0x68,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x77,0x68,0x20,0x25,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x77,0x68,0x20,0x2f,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x44,0x49,0x4d,0x31,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2d,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x26,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x23,0x69,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x20,0x3e,0x3d,0x20,0x34,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x3d,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x3b,0x20,0x69,0x2b,0x3d,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x34,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3c,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3e,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3e,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6c,0x69,0x64,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3c,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3e,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x34,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3c,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3e,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3c,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3e,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x61,0x72,0x67,0x6d,0x61,0x78,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x69,0x6e,0x74,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x68,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x78,0x2c,0x20,0x77,0x68,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x77,0x68,0x20,0x25,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x77,0x68,0x20,0x2f,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x30,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x30,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x2d,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x46,0x4c,0x54,0x5f,0x4d,0x41,0x58,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x20,0x3e,0x3d,0x20,0x34,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x3d,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x62,0x61,0x74,0x63,0x68,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x53,0x45,0x4c,0x45,0x43,0x54,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x69,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x41,0x52,0x47,0x4d,0x49,0x4e,0x5f,0x53,0x45,0x4c,0x45,0x43,0x54,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x69,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x78,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x78,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x78,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x78,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x78,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x78,0x3b,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x79,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x79,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x79,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x79,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x79,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x79,0x3b,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x7a,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x7a,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x7a,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x7a,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x7a,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x7a,0x3b,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x77,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x77,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x77,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x77,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x77,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x77,0x3b,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x78,0x20,0x3e,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x78,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x78,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x78,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x78,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x78,0x3b,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x79,0x20,0x3e,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x79,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x79,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x79,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x79,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x79,0x3b,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x7a,0x20,0x3e,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x7a,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x7a,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x7a,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x7a,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x7a,0x3b,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x77,0x20,0x3e,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x77,0x29,0x7b,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x77,0x20,0x3d,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x77,0x3b,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x5d,0x2e,0x77,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x2e,0x77,0x3b,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6c,0x69,0x64,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x69,0x6e,0x64,0x65,0x78,0x5f,0x72,0x65,0x64,0x75,0x63,0x65,0x5b,0x30,0x5d,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x62,0x61,0x74,0x63,0x68,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x41,0x52,0x47,0x4d,0x41,0x58,0x5f,0x53,0x45,0x4c,0x45,0x43,0x54,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x69,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x41,0x52,0x47,0x4d,0x49,0x4e,0x5f,0x53,0x45,0x4c,0x45,0x43,0x54,0x28,0x6d,0x61,0x78,0x56,0x61,0x6c,0x75,0x65,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x69,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa, } }, #endif #ifndef MNN_OPENCL_BUFFER_CLOSED #ifdef MNN_SUPPORT_INTEL_SUBGROUP { "buffer_convert_subgroup_buf", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x68,0x77,0x63,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x29,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x68,0x77,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x69,0x6e,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x3c,0x3c,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2c,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x28,0x26,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x31,0x35,0x29,0x2f,0x31,0x36,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2f,0x31,0x36,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x31,0x35,0x29,0x2f,0x31,0x36,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2f,0x31,0x36,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x29,0x2a,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x69,0x2a,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x69,0x2a,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x68,0x77,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x3c,0x3c,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2c,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x28,0x26,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x31,0x35,0x29,0x2f,0x31,0x36,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2f,0x31,0x36,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x31,0x35,0x29,0x2f,0x31,0x36,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2f,0x31,0x36,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x29,0x2a,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x69,0x2a,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x69,0x2a,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x68,0x77,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x69,0x6e,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x3c,0x3c,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2c,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x28,0x26,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2a,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x31,0x35,0x29,0x2f,0x31,0x36,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2f,0x31,0x36,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x30,0x29,0x2a,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x36,0x20,0x2a,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x31,0x36,0x20,0x2a,0x20,0x28,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x36,0x20,0x2a,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x31,0x35,0x29,0x2f,0x31,0x36,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2f,0x31,0x36,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x3c,0x3c,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2c,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x28,0x26,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2a,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x31,0x35,0x29,0x2f,0x31,0x36,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2f,0x31,0x36,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x30,0x29,0x2a,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x36,0x20,0x2a,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x31,0x36,0x20,0x2a,0x20,0x28,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x36,0x20,0x2a,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x31,0x35,0x29,0x2f,0x31,0x36,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2f,0x31,0x36,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x62,0x20,0x68,0x2c,0x20,0x69,0x63,0x2f,0x31,0x36,0x20,0x77,0x20,0x69,0x63,0x31,0x36,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x68,0x77,0x63,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x68,0x77,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x6f,0x75,0x74,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x3c,0x3c,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x31,0x35,0x29,0x2f,0x31,0x36,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2f,0x31,0x36,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x31,0x36,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x31,0x36,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2b,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x2a,0x29,0x28,0x26,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2c,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x62,0x20,0x68,0x2c,0x20,0x69,0x63,0x2f,0x31,0x36,0x20,0x77,0x20,0x69,0x63,0x31,0x36,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x68,0x77,0x63,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x68,0x77,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x3c,0x3c,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x31,0x35,0x29,0x2f,0x31,0x36,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2f,0x31,0x36,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x31,0x36,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2b,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x28,0x26,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2c,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x68,0x77,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x6f,0x75,0x74,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x3c,0x3c,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x31,0x35,0x29,0x2f,0x31,0x36,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2f,0x31,0x36,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x31,0x36,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2b,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x2a,0x29,0x28,0x26,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2c,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x68,0x77,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x3c,0x3c,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x31,0x35,0x29,0x2f,0x31,0x36,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2f,0x31,0x36,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2b,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x28,0x26,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2c,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x69,0x6e,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x72,0x63,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x73,0x74,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x63,0x34,0xa,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x73,0x72,0x63,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x20,0x2a,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x20,0x2a,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x31,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x32,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x20,0x3e,0x3d,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x20,0x2a,0x20,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x33,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x20,0x3e,0x3d,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x20,0x2a,0x20,0x33,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x30,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x31,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x32,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x33,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x36,0x20,0x2a,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x31,0x36,0x20,0x2a,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x36,0x20,0x2a,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x72,0x63,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x73,0x74,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x63,0x34,0xa,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x73,0x72,0x63,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x20,0x2a,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x20,0x2a,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x31,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x32,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x20,0x3e,0x3d,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x20,0x2a,0x20,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x33,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x20,0x3e,0x3d,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x20,0x2a,0x20,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x30,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x31,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x32,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x33,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x36,0x20,0x2a,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x31,0x36,0x20,0x2a,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x36,0x20,0x2a,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x6f,0x75,0x74,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x72,0x63,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x73,0x74,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x63,0x34,0xa,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x73,0x72,0x63,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x20,0x2a,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x20,0x2a,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x63,0x34,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x63,0x34,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x63,0x34,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x72,0x63,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x73,0x74,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x63,0x34,0xa,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x73,0x72,0x63,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x20,0x2a,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x20,0x2a,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x63,0x34,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x63,0x34,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x63,0x34,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x29,0x3b,0xa,0x7d,0xa,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x68,0x77,0x63,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x29,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x68,0x77,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x3c,0x3c,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2c,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x31,0x36,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x29,0x28,0x26,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x31,0x35,0x29,0x2f,0x31,0x36,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2f,0x31,0x36,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x31,0x36,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x31,0x35,0x29,0x2f,0x31,0x36,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2f,0x31,0x36,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x29,0x2a,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x31,0x36,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x69,0x2a,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x31,0x36,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x69,0x2a,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x68,0x77,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x3c,0x3c,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2c,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x31,0x36,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x29,0x28,0x26,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2a,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x31,0x35,0x29,0x2f,0x31,0x36,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2f,0x31,0x36,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x30,0x29,0x2a,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x31,0x36,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x36,0x20,0x2a,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x31,0x36,0x20,0x2a,0x20,0x28,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x31,0x36,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x36,0x20,0x2a,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x31,0x35,0x29,0x2f,0x31,0x36,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2f,0x31,0x36,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x31,0x36,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x62,0x20,0x68,0x2c,0x20,0x69,0x63,0x2f,0x31,0x36,0x20,0x77,0x20,0x69,0x63,0x31,0x36,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x68,0x77,0x63,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x68,0x77,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x3c,0x3c,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x31,0x35,0x29,0x2f,0x31,0x36,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2f,0x31,0x36,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x31,0x36,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x31,0x36,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2b,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x29,0x28,0x26,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2c,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x68,0x77,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x3c,0x3c,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x31,0x35,0x29,0x2f,0x31,0x36,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2f,0x31,0x36,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x2a,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x31,0x36,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2b,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x29,0x28,0x26,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x31,0x36,0x5f,0x69,0x64,0x78,0x2c,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x72,0x63,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x73,0x74,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x63,0x34,0xa,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x73,0x72,0x63,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x20,0x2a,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x20,0x2a,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x31,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x3f,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x32,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x20,0x3e,0x3d,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x3f,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x20,0x2a,0x20,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x33,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x20,0x3e,0x3d,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x3f,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x20,0x2a,0x20,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x31,0x36,0x28,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x31,0x36,0x29,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x30,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x31,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x32,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x33,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x31,0x36,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x36,0x20,0x2a,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x31,0x36,0x20,0x2a,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x31,0x36,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x36,0x20,0x2a,0x20,0x69,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x31,0x36,0x68,0x77,0x31,0x36,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x72,0x63,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x73,0x74,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x63,0x34,0xa,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x73,0x72,0x63,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x20,0x2a,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x20,0x2a,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x31,0x36,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x63,0x34,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x63,0x34,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x63,0x34,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x73,0x69,0x7a,0x65,0x34,0x29,0x3b,0xa,0x7d,0xa, } }, #endif #endif @@ -190,13 +196,13 @@ extern const std::map> OpenCLProgramMap #ifdef MNN_SUPPORT_INTEL_SUBGROUP { "unary_subgroup_buf", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x65,0x6c,0x75,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x30,0x2e,0x37,0x39,0x37,0x38,0x38,0x34,0x35,0x38,0x66,0x20,0x2a,0x20,0x28,0x30,0x2e,0x30,0x34,0x34,0x37,0x31,0x35,0x66,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2b,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x78,0x32,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x64,0x73,0x74,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3e,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x35,0x2e,0x30,0x66,0x20,0x3f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x3a,0x20,0x28,0x76,0x61,0x6c,0x75,0x65,0x20,0x3c,0x3d,0x20,0x2d,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x35,0x2e,0x30,0x66,0x20,0x3f,0x20,0x2d,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x3a,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x28,0x31,0x33,0x35,0x31,0x33,0x35,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x31,0x37,0x33,0x32,0x35,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x33,0x37,0x38,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x29,0x29,0x29,0x29,0x20,0x2f,0x20,0x28,0x31,0x33,0x35,0x31,0x33,0x35,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x36,0x32,0x33,0x37,0x30,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x33,0x31,0x35,0x30,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x32,0x38,0x2e,0x30,0x66,0x29,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x31,0x2e,0x30,0x66,0x20,0x2b,0x20,0x64,0x73,0x74,0x29,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2a,0x20,0x30,0x2e,0x35,0x66,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x75,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x34,0x5f,0x63,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x62,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x77,0x2c,0x20,0x68,0x62,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x68,0x62,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x68,0x62,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x75,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x34,0x5f,0x63,0x31,0x36,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x62,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x77,0x2c,0x20,0x68,0x62,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x68,0x62,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x68,0x62,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2b,0x77,0x69,0x64,0x74,0x68,0x2b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3e,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x2b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x28,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x72,0x65,0x71,0x64,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x28,0x31,0x36,0x29,0x29,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x75,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x31,0x36,0x5f,0x63,0x31,0x36,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x62,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x68,0x62,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x68,0x62,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x2b,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x2b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x77,0x20,0x2b,0x20,0x34,0x20,0x3e,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x25,0x20,0x34,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x73,0x67,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x75,0x73,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x2c,0x20,0x61,0x73,0x5f,0x75,0x73,0x68,0x6f,0x72,0x74,0x34,0x28,0x6f,0x75,0x74,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x77,0x72,0x69,0x74,0x65,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x2c,0x20,0x61,0x73,0x5f,0x75,0x69,0x6e,0x74,0x34,0x28,0x6f,0x75,0x74,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x73,0x67,0x6c,0x69,0x64,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x5d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x28,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x5d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x72,0x65,0x71,0x64,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x28,0x31,0x36,0x29,0x29,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x75,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x31,0x36,0x5f,0x63,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x62,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x68,0x62,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x68,0x62,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x2b,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x3c,0x3c,0x32,0x29,0x29,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x61,0x73,0x5f,0x68,0x61,0x6c,0x66,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x5f,0x75,0x73,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x73,0x68,0x6f,0x72,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x61,0x73,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x72,0x65,0x61,0x64,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x69,0x6e,0x74,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x5f,0x78,0x20,0x3d,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x25,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x3d,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x77,0x20,0x2b,0x20,0x34,0x20,0x3e,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x3f,0x20,0x28,0x77,0x69,0x64,0x74,0x68,0x20,0x25,0x20,0x34,0x29,0x20,0x3a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x78,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x65,0x6c,0x75,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x30,0x2e,0x37,0x39,0x37,0x38,0x38,0x34,0x35,0x38,0x66,0x20,0x2a,0x20,0x28,0x30,0x2e,0x30,0x34,0x34,0x37,0x31,0x35,0x66,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2b,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x78,0x32,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x64,0x73,0x74,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3e,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x35,0x2e,0x30,0x66,0x20,0x3f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x3a,0x20,0x28,0x76,0x61,0x6c,0x75,0x65,0x20,0x3c,0x3d,0x20,0x2d,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x35,0x2e,0x30,0x66,0x20,0x3f,0x20,0x2d,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x3a,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x28,0x31,0x33,0x35,0x31,0x33,0x35,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x31,0x37,0x33,0x32,0x35,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x33,0x37,0x38,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x29,0x29,0x29,0x29,0x20,0x2f,0x20,0x28,0x31,0x33,0x35,0x31,0x33,0x35,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x36,0x32,0x33,0x37,0x30,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x28,0x33,0x31,0x35,0x30,0x2e,0x30,0x66,0x20,0x2b,0x20,0x78,0x32,0x20,0x2a,0x20,0x32,0x38,0x2e,0x30,0x66,0x29,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x31,0x2e,0x30,0x66,0x20,0x2b,0x20,0x64,0x73,0x74,0x29,0x20,0x2a,0x20,0x69,0x6e,0x20,0x2a,0x20,0x30,0x2e,0x35,0x66,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x75,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x34,0x5f,0x63,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x62,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x77,0x2c,0x20,0x68,0x62,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x68,0x62,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x68,0x62,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x75,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x34,0x5f,0x63,0x31,0x36,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x62,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x77,0x2c,0x20,0x68,0x62,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x68,0x62,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x68,0x62,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2b,0x77,0x69,0x64,0x74,0x68,0x2b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3e,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x2b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x5f,0x6f,0x75,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x34,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x28,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x29,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x72,0x65,0x71,0x64,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x28,0x31,0x36,0x29,0x29,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x75,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x31,0x36,0x5f,0x63,0x31,0x36,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x62,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x68,0x62,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x68,0x62,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x2b,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x2b,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x41,0x53,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x44,0x41,0x54,0x41,0x34,0x28,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x53,0x55,0x42,0x5f,0x47,0x52,0x4f,0x55,0x50,0x5f,0x52,0x45,0x41,0x44,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x44,0x41,0x54,0x41,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x77,0x20,0x2b,0x20,0x34,0x20,0x3e,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x25,0x20,0x34,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x73,0x67,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x6f,0x75,0x74,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x53,0x55,0x42,0x5f,0x47,0x52,0x4f,0x55,0x50,0x5f,0x57,0x52,0x49,0x54,0x45,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x44,0x41,0x54,0x41,0x2a,0x29,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x2c,0x20,0x41,0x53,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x44,0x41,0x54,0x41,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x77,0x20,0x3d,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x73,0x67,0x6c,0x69,0x64,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x28,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x70,0x61,0x64,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x31,0x36,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x69,0x6e,0x74,0x65,0x6c,0x5f,0x72,0x65,0x71,0x64,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x73,0x69,0x7a,0x65,0x28,0x31,0x36,0x29,0x29,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x75,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x5f,0x63,0x31,0x36,0x5f,0x63,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x62,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x73,0x75,0x62,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x68,0x62,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x68,0x62,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x31,0x35,0x29,0x20,0x2f,0x20,0x31,0x36,0x3b,0xa,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x31,0x36,0x2b,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x2b,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x29,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x2b,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x3c,0x3c,0x32,0x29,0x29,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x77,0x69,0x64,0x74,0x68,0x2b,0x77,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x41,0x53,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x44,0x41,0x54,0x41,0x34,0x28,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x53,0x55,0x42,0x5f,0x47,0x52,0x4f,0x55,0x50,0x5f,0x52,0x45,0x41,0x44,0x34,0x28,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x54,0x45,0x4c,0x5f,0x44,0x41,0x54,0x41,0x2a,0x29,0x28,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x5f,0x78,0x20,0x3d,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x25,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x3d,0x20,0x73,0x67,0x6c,0x69,0x64,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x77,0x20,0x2b,0x20,0x34,0x20,0x3e,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x3f,0x20,0x28,0x77,0x69,0x64,0x74,0x68,0x20,0x25,0x20,0x34,0x29,0x20,0x3a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x79,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6c,0x69,0x64,0x5f,0x78,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x6f,0x75,0x74,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa, } }, #endif #endif { "gemm", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x44,0x49,0x4d,0x32,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x42,0x4f,0x55,0x4e,0x44,0x52,0x59,0x5f,0x43,0x48,0x45,0x43,0x4b,0x28,0x69,0x6e,0x64,0x65,0x78,0x30,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x31,0x29,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x6e,0x64,0x65,0x78,0x30,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x64,0x65,0x78,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x67,0x65,0x6d,0x6d,0x28,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6d,0x75,0x6c,0x74,0x69,0x4c,0x65,0x6e,0x67,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x77,0x69,0x64,0x74,0x68,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x78,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x79,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x7a,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x32,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x33,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6b,0x65,0x6e,0x65,0x72,0x6c,0x59,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x7a,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x59,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x7a,0x2c,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6b,0x20,0x3c,0x20,0x6d,0x75,0x6c,0x74,0x69,0x4c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x20,0x2b,0x2b,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6b,0x2c,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x6b,0x65,0x6e,0x65,0x72,0x6c,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2b,0x31,0x2c,0x20,0x6b,0x65,0x6e,0x65,0x72,0x6c,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2b,0x32,0x2c,0x20,0x6b,0x65,0x6e,0x65,0x72,0x6c,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2b,0x33,0x2c,0x20,0x6b,0x65,0x6e,0x65,0x72,0x6c,0x59,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2b,0x31,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2b,0x32,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2b,0x33,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x79,0x2c,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x59,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x59,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x59,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x29,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x59,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x29,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x67,0x65,0x6d,0x6d,0x57,0x69,0x6e,0x6f,0x67,0x72,0x61,0x64,0x28,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x75,0x6e,0x69,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6d,0x75,0x6c,0x74,0x69,0x4c,0x65,0x6e,0x67,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x34,0x20,0x3d,0x20,0x28,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x34,0x20,0x2a,0x20,0x75,0x6e,0x69,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x20,0x2a,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x78,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x79,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2f,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x7a,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x25,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x77,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2f,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x32,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x33,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x59,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x77,0x2c,0x20,0x75,0x6e,0x69,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x58,0x20,0x3d,0x20,0x70,0x6f,0x73,0x5f,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6b,0x20,0x3c,0x20,0x6d,0x75,0x6c,0x74,0x69,0x4c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x20,0x2b,0x2b,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6b,0x2c,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6b,0x2c,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x7a,0x2c,0x20,0x75,0x6e,0x69,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x77,0x2c,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0x20,0x73,0x72,0x63,0x58,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2d,0x20,0x73,0x72,0x63,0x58,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x67,0x65,0x6d,0x6d,0x57,0x69,0x6e,0x6f,0x67,0x72,0x61,0x64,0x57,0x32,0x28,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x75,0x6e,0x69,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6d,0x75,0x6c,0x74,0x69,0x4c,0x65,0x6e,0x67,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x38,0x20,0x3d,0x20,0x28,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x37,0x29,0x20,0x2f,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x38,0x20,0x2a,0x20,0x75,0x6e,0x69,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x20,0x2a,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x78,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x79,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2f,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x7a,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x25,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x77,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2f,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x32,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x33,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x34,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x35,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x36,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x37,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x59,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x77,0x2c,0x20,0x75,0x6e,0x69,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x58,0x20,0x3d,0x20,0x70,0x6f,0x73,0x5f,0x78,0x20,0x3c,0x3c,0x20,0x33,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6b,0x20,0x3c,0x20,0x6d,0x75,0x6c,0x74,0x69,0x4c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x20,0x2b,0x2b,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6b,0x2c,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6b,0x2c,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x34,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x34,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x35,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x35,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x36,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x36,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x37,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x37,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x34,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x34,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x34,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x34,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x34,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x35,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x35,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x35,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x35,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x35,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x36,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x36,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x36,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x36,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x36,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x37,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x37,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x37,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x37,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x7a,0x2c,0x20,0x75,0x6e,0x69,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x77,0x2c,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0x20,0x73,0x72,0x63,0x58,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2d,0x20,0x73,0x72,0x63,0x58,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x38,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x34,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x35,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x36,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x37,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x37,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x34,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x35,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x36,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x36,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x34,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x35,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x35,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x34,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x67,0x65,0x6d,0x6d,0x5f,0x63,0x6f,0x6e,0x76,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x44,0x49,0x4d,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x6f,0x75,0x74,0x2f,0x34,0x2c,0x20,0x62,0xa,0x20,0x20,0x20,0x20,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x42,0x4f,0x55,0x4e,0x44,0x52,0x59,0x5f,0x43,0x48,0x45,0x43,0x4b,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x78,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x62,0x69,0x61,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x62,0x69,0x61,0x73,0x20,0x2b,0x20,0x70,0x6f,0x73,0x5f,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x30,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2a,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x38,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x53,0x63,0x61,0x6c,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6b,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x3b,0x20,0x2b,0x2b,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6b,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x77,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x38,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x38,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x39,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x61,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x62,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x64,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x65,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x66,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x2e,0x78,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x2e,0x79,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x2e,0x7a,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x2e,0x77,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x62,0x69,0x61,0x73,0x30,0x20,0x2b,0x20,0x6d,0x61,0x64,0x28,0x6f,0x75,0x74,0x2c,0x20,0x53,0x63,0x61,0x6c,0x65,0x2c,0x20,0x73,0x75,0x6d,0x20,0x2a,0x20,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x67,0x65,0x6d,0x6d,0x5f,0x63,0x6f,0x6e,0x76,0x5f,0x62,0x32,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x44,0x49,0x4d,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x6f,0x75,0x74,0x2f,0x34,0x2c,0x20,0x62,0xa,0x20,0x20,0x20,0x20,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x42,0x4f,0x55,0x4e,0x44,0x52,0x59,0x5f,0x43,0x48,0x45,0x43,0x4b,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x78,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x79,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x62,0x69,0x61,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x62,0x69,0x61,0x73,0x20,0x2b,0x20,0x70,0x6f,0x73,0x5f,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x73,0x75,0x6d,0x30,0x20,0x3d,0x20,0x30,0x2c,0x20,0x73,0x75,0x6d,0x31,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2a,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x38,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x53,0x63,0x61,0x6c,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6b,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x3b,0x20,0x2b,0x2b,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6b,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6b,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x79,0x20,0x2b,0x20,0x31,0x29,0x29,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x30,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x30,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x30,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x30,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x30,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x31,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x31,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x31,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x31,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x31,0x2e,0x77,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x38,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x38,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x39,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x61,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x62,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x64,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x65,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x66,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x30,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x30,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x30,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x30,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x30,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x31,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x31,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x31,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x31,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x31,0x2e,0x77,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x62,0x69,0x61,0x73,0x30,0x20,0x2b,0x20,0x6d,0x61,0x64,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x53,0x63,0x61,0x6c,0x65,0x2c,0x20,0x73,0x75,0x6d,0x30,0x20,0x2a,0x20,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x62,0x69,0x61,0x73,0x30,0x20,0x2b,0x20,0x6d,0x61,0x64,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x53,0x63,0x61,0x6c,0x65,0x2c,0x20,0x73,0x75,0x6d,0x31,0x20,0x2a,0x20,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x5f,0x79,0x20,0x2b,0x20,0x31,0x20,0x3c,0x20,0x62,0x61,0x74,0x63,0x68,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x79,0x20,0x2b,0x20,0x31,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x7d,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x44,0x49,0x4d,0x32,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x42,0x4f,0x55,0x4e,0x44,0x52,0x59,0x5f,0x43,0x48,0x45,0x43,0x4b,0x28,0x69,0x6e,0x64,0x65,0x78,0x30,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x31,0x29,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x6e,0x64,0x65,0x78,0x30,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x64,0x65,0x78,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x67,0x65,0x6d,0x6d,0x28,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6d,0x75,0x6c,0x74,0x69,0x4c,0x65,0x6e,0x67,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x77,0x69,0x64,0x74,0x68,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x78,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x79,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x7a,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x32,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x33,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6b,0x65,0x6e,0x65,0x72,0x6c,0x59,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x7a,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x59,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x7a,0x2c,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6b,0x20,0x3c,0x20,0x6d,0x75,0x6c,0x74,0x69,0x4c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x20,0x2b,0x2b,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6b,0x2c,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x6b,0x65,0x6e,0x65,0x72,0x6c,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2b,0x31,0x2c,0x20,0x6b,0x65,0x6e,0x65,0x72,0x6c,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2b,0x32,0x2c,0x20,0x6b,0x65,0x6e,0x65,0x72,0x6c,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2b,0x33,0x2c,0x20,0x6b,0x65,0x6e,0x65,0x72,0x6c,0x59,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2b,0x31,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2b,0x32,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2b,0x33,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x79,0x2c,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x59,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x59,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x59,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x29,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x59,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x29,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x67,0x65,0x6d,0x6d,0x57,0x69,0x6e,0x6f,0x67,0x72,0x61,0x64,0x28,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x75,0x6e,0x69,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6d,0x75,0x6c,0x74,0x69,0x4c,0x65,0x6e,0x67,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x34,0x20,0x3d,0x20,0x28,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x34,0x20,0x2a,0x20,0x75,0x6e,0x69,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x20,0x2a,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x78,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x79,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2f,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x7a,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x25,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x77,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2f,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x32,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x33,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x59,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x77,0x2c,0x20,0x75,0x6e,0x69,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x58,0x20,0x3d,0x20,0x70,0x6f,0x73,0x5f,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6b,0x20,0x3c,0x20,0x6d,0x75,0x6c,0x74,0x69,0x4c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x20,0x2b,0x2b,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6b,0x2c,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6b,0x2c,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x7a,0x2c,0x20,0x75,0x6e,0x69,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x77,0x2c,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0x20,0x73,0x72,0x63,0x58,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2d,0x20,0x73,0x72,0x63,0x58,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x67,0x65,0x6d,0x6d,0x57,0x69,0x6e,0x6f,0x67,0x72,0x61,0x64,0x57,0x32,0x28,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x75,0x6e,0x69,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6d,0x75,0x6c,0x74,0x69,0x4c,0x65,0x6e,0x67,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x38,0x20,0x3d,0x20,0x28,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x37,0x29,0x20,0x2f,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x38,0x20,0x2a,0x20,0x75,0x6e,0x69,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x61,0x6c,0x70,0x68,0x61,0x32,0x20,0x2a,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x78,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x79,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2f,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x7a,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x25,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x77,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2f,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x32,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x33,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x34,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x35,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x36,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x37,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x59,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x77,0x2c,0x20,0x75,0x6e,0x69,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x58,0x20,0x3d,0x20,0x70,0x6f,0x73,0x5f,0x78,0x20,0x3c,0x3c,0x20,0x33,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6b,0x20,0x3c,0x20,0x6d,0x75,0x6c,0x74,0x69,0x4c,0x65,0x6e,0x67,0x74,0x68,0x3b,0x20,0x2b,0x2b,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6b,0x2c,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6b,0x2c,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6b,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x4b,0x65,0x72,0x6e,0x65,0x6c,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x32,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x33,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x34,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x34,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x35,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x35,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x36,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x36,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x37,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x75,0x49,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x73,0x72,0x63,0x58,0x20,0x2b,0x20,0x78,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x37,0x2c,0x20,0x73,0x72,0x63,0x59,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x30,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x31,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x32,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x33,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x34,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x34,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x34,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x34,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x34,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x35,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x35,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x35,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x35,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x35,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x36,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x36,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x36,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x36,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x36,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x37,0x2e,0x78,0x2c,0x20,0x6b,0x30,0x2c,0x20,0x6f,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x37,0x2e,0x79,0x2c,0x20,0x6b,0x31,0x2c,0x20,0x6f,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x37,0x2e,0x7a,0x2c,0x20,0x6b,0x32,0x2c,0x20,0x6f,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x73,0x37,0x2e,0x77,0x2c,0x20,0x6b,0x33,0x2c,0x20,0x6f,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x7a,0x2c,0x20,0x75,0x6e,0x69,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x70,0x6f,0x73,0x5f,0x77,0x2c,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0x20,0x73,0x72,0x63,0x58,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x75,0x6e,0x69,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2d,0x20,0x73,0x72,0x63,0x58,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x38,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x34,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x35,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x36,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x37,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x37,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x34,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x35,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x36,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x36,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x34,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x35,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x35,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x34,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x75,0x4f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6f,0x75,0x74,0x5f,0x78,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x79,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x67,0x65,0x6d,0x6d,0x5f,0x63,0x6f,0x6e,0x76,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x44,0x49,0x4d,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x6f,0x75,0x74,0x2f,0x34,0x2c,0x20,0x62,0xa,0x20,0x20,0x20,0x20,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x42,0x4f,0x55,0x4e,0x44,0x52,0x59,0x5f,0x43,0x48,0x45,0x43,0x4b,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x62,0x69,0x61,0x73,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x62,0x69,0x61,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x30,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2a,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x38,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x53,0x63,0x61,0x6c,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6b,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x3b,0x20,0x2b,0x2b,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6b,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x77,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x38,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x38,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x39,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x61,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x62,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x64,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x65,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x66,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x2e,0x78,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x2e,0x79,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x2e,0x7a,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x2e,0x77,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x62,0x69,0x61,0x73,0x30,0x20,0x2b,0x20,0x6d,0x61,0x64,0x28,0x6f,0x75,0x74,0x2c,0x20,0x53,0x63,0x61,0x6c,0x65,0x2c,0x20,0x73,0x75,0x6d,0x20,0x2a,0x20,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x67,0x65,0x6d,0x6d,0x5f,0x63,0x6f,0x6e,0x76,0x5f,0x62,0x32,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x44,0x49,0x4d,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x6f,0x75,0x74,0x2f,0x34,0x2c,0x20,0x62,0xa,0x20,0x20,0x20,0x20,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x42,0x4f,0x55,0x4e,0x44,0x52,0x59,0x5f,0x43,0x48,0x45,0x43,0x4b,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x78,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x6f,0x73,0x5f,0x79,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x62,0x69,0x61,0x73,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x62,0x69,0x61,0x73,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x73,0x75,0x6d,0x30,0x20,0x3d,0x20,0x30,0x2c,0x20,0x73,0x75,0x6d,0x31,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2a,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x38,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x53,0x63,0x61,0x6c,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x6b,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6b,0x20,0x3c,0x20,0x73,0x72,0x63,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x43,0x34,0x3b,0x20,0x2b,0x2b,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6b,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x79,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6b,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x79,0x20,0x2b,0x20,0x31,0x29,0x29,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x30,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x30,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x30,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x30,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x30,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x31,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x31,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x31,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x31,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x31,0x2e,0x77,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x38,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x38,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x39,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x61,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x62,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x64,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x65,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x66,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x26,0x20,0x31,0x35,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x30,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x30,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x30,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x30,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x30,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x31,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x31,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x31,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x31,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x31,0x2e,0x77,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x6b,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x31,0x32,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x35,0x36,0x37,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x39,0x61,0x62,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x64,0x65,0x66,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x62,0x69,0x61,0x73,0x30,0x20,0x2b,0x20,0x6d,0x61,0x64,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x53,0x63,0x61,0x6c,0x65,0x2c,0x20,0x73,0x75,0x6d,0x30,0x20,0x2a,0x20,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x62,0x69,0x61,0x73,0x30,0x20,0x2b,0x20,0x6d,0x61,0x64,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x53,0x63,0x61,0x6c,0x65,0x2c,0x20,0x73,0x75,0x6d,0x31,0x20,0x2a,0x20,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x79,0x29,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x70,0x6f,0x73,0x5f,0x79,0x20,0x2b,0x20,0x31,0x20,0x3c,0x20,0x62,0x61,0x74,0x63,0x68,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x70,0x6f,0x73,0x2e,0x78,0x2c,0x20,0x70,0x6f,0x73,0x5f,0x79,0x20,0x2b,0x20,0x31,0x29,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x7d,0xa, } }, { "depthwise_deconv2d", @@ -204,7 +210,7 @@ extern const std::map> OpenCLProgramMap }, { "range", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x61,0x6e,0x67,0x65,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x68,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x77,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x69,0x6e,0x64,0x65,0x78,0x34,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x73,0x69,0x7a,0x65,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x73,0x69,0x7a,0x65,0x20,0x2a,0x20,0x32,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x73,0x69,0x7a,0x65,0x20,0x2a,0x20,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x30,0x2c,0x20,0x30,0x29,0x29,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x73,0x74,0x65,0x70,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x30,0x2c,0x20,0x30,0x29,0x29,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x69,0x6e,0x64,0x65,0x78,0x34,0x29,0x20,0x2a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x74,0x65,0x70,0x3b,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x77,0x2c,0x20,0x62,0x68,0x29,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x29,0x3b,0xa,0x7d,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x61,0x6e,0x67,0x65,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x68,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x77,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x69,0x6e,0x64,0x65,0x78,0x34,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x28,0x69,0x6e,0x64,0x65,0x78,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x73,0x69,0x7a,0x65,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x73,0x69,0x7a,0x65,0x20,0x2a,0x20,0x32,0x2c,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x2b,0x20,0x73,0x69,0x7a,0x65,0x20,0x2a,0x20,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x20,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x30,0x2c,0x20,0x30,0x29,0x29,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x20,0x73,0x74,0x65,0x70,0x20,0x3d,0x20,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x30,0x2c,0x20,0x30,0x29,0x29,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x29,0x73,0x74,0x61,0x72,0x74,0x20,0x2b,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x49,0x34,0x28,0x69,0x6e,0x64,0x65,0x78,0x34,0x29,0x20,0x2a,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x29,0x73,0x74,0x65,0x70,0x3b,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x77,0x2c,0x20,0x62,0x68,0x29,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x29,0x3b,0xa,0x7d,0xa, } }, #ifndef MNN_OPENCL_BUFFER_CLOSED { @@ -225,12 +231,12 @@ extern const std::map> OpenCLProgramMap #ifndef MNN_OPENCL_BUFFER_CLOSED { "conv_2d_buf", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x52,0x45,0x41,0x44,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4d,0x41,0x47,0x45,0x28,0x69,0x2c,0x20,0x62,0x61,0x73,0x65,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x23,0x23,0x69,0x20,0x2b,0x20,0x62,0x61,0x73,0x65,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x20,0x3d,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x20,0x25,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x6c,0x65,0x6e,0x67,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x23,0x23,0x69,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x29,0x3d,0x3d,0x2d,0x31,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x69,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x69,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x69,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x69,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x69,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x20,0x31,0x35,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x31,0x78,0x31,0x5f,0x63,0x34,0x68,0x31,0x77,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x3b,0x20,0x2f,0x2f,0x20,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x3b,0x20,0x2f,0x2f,0x20,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x38,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x61,0x64,0x64,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x2a,0x6f,0x75,0x74,0x5f,0x77,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x75,0x73,0x68,0x6f,0x72,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0x20,0x2b,0x2b,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x33,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x38,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x38,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x32,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x32,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x32,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x32,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x33,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x33,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x33,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x33,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x70,0x5f,0x61,0x64,0x64,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x31,0x78,0x31,0x5f,0x63,0x38,0x68,0x31,0x77,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x38,0x20,0x77,0x2f,0x34,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x38,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x33,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x31,0x29,0x20,0x2b,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x31,0x29,0x20,0x2b,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x3c,0x3c,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x3c,0x3c,0x31,0x29,0x2b,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0x20,0x2b,0x2b,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x77,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x33,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x31,0x36,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x30,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x30,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x30,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x30,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x31,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x31,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x31,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x31,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x38,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x38,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x39,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x39,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x61,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x61,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x62,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x62,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x63,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x63,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x64,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x64,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x65,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x65,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x66,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x66,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x34,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x35,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x36,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x37,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x32,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x32,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x32,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x32,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x33,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x33,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x33,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x33,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x32,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x32,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x32,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x32,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x33,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x33,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x33,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x33,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x32,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x31,0x20,0x3d,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x34,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x2a,0x6f,0x75,0x74,0x5f,0x77,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x32,0x2b,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x2c,0x20,0x6f,0x75,0x74,0x36,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x32,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x32,0x2b,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x2c,0x20,0x6f,0x75,0x74,0x36,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x31,0x78,0x31,0x5f,0x63,0x38,0x68,0x31,0x77,0x32,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x7b,0x20,0x2f,0x2f,0x20,0x6f,0x63,0x20,0x2f,0x20,0x34,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x38,0x20,0x77,0x2f,0x34,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x38,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x33,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x31,0x29,0x20,0x2b,0x20,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x31,0x29,0x20,0x2b,0x20,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x3c,0x3c,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x3c,0x3c,0x31,0x29,0x2b,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0x20,0x2b,0x2b,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x77,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x31,0x36,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x30,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x30,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x30,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x30,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x31,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x31,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x31,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x38,0x31,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x31,0x36,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x38,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x38,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x39,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x39,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x61,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x61,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x62,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x62,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x63,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x63,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x64,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x64,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x65,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x65,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x66,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x66,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x34,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x35,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x36,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x37,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x32,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0xa,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x31,0x20,0x3d,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x34,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x2a,0x6f,0x75,0x74,0x5f,0x77,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x32,0x2b,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x32,0x2b,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x31,0x78,0x31,0x5f,0x63,0x34,0x68,0x31,0x77,0x31,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x38,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0x20,0x2b,0x2b,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x77,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x38,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x38,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x31,0x78,0x31,0x5f,0x63,0x34,0x68,0x31,0x77,0x32,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x38,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x31,0x36,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0x20,0x2b,0x2b,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x77,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x28,0x76,0x6c,0x6f,0x61,0x64,0x31,0x36,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x30,0x31,0x32,0x33,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x34,0x35,0x36,0x37,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x38,0x39,0x61,0x62,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x2e,0x73,0x63,0x64,0x65,0x66,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x38,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x38,0x28,0x30,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x32,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x33,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x34,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x35,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x36,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x49,0x6e,0x74,0x34,0x2e,0x73,0x37,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x29,0x20,0x2a,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x2b,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x63,0x34,0x68,0x31,0x77,0x31,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x75,0x73,0x68,0x6f,0x72,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x20,0x5b,0x31,0x2c,0x20,0x20,0x34,0x2a,0x69,0x63,0x43,0x34,0x2c,0x20,0x20,0x6f,0x63,0x43,0x34,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x2c,0x20,0x20,0x31,0x5d,0x20,0x78,0x69,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x69,0x79,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x78,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x69,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x69,0x78,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x79,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x20,0x3d,0x20,0x28,0x69,0x78,0x2d,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2f,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x63,0x34,0x68,0x31,0x77,0x32,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0x2f,0x2f,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x20,0x77,0x69,0x64,0x74,0x68,0x27,0x73,0x20,0x6e,0x75,0x6d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x75,0x73,0x68,0x6f,0x72,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x20,0x5b,0x31,0x2c,0x20,0x20,0x34,0x2a,0x69,0x63,0x43,0x34,0x2c,0x20,0x20,0x6f,0x63,0x43,0x34,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x2c,0x20,0x20,0x31,0x5d,0x20,0x78,0x69,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x69,0x79,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x79,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x66,0x77,0x20,0x3d,0x20,0x30,0x3b,0x20,0x66,0x77,0x20,0x3c,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x3b,0x20,0x66,0x77,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x63,0x34,0x68,0x31,0x77,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x75,0x73,0x68,0x6f,0x72,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x20,0x5b,0x31,0x2c,0x20,0x20,0x34,0x2a,0x69,0x63,0x43,0x34,0x2c,0x20,0x20,0x6f,0x63,0x43,0x34,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x2c,0x20,0x20,0x31,0x5d,0x20,0x78,0x69,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x69,0x79,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x79,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x66,0x77,0x20,0x3d,0x20,0x30,0x3b,0x20,0x66,0x77,0x20,0x3c,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x3b,0x20,0x66,0x77,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x63,0x34,0x68,0x34,0x77,0x31,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x75,0x73,0x68,0x6f,0x72,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x20,0x5b,0x31,0x2c,0x20,0x20,0x34,0x2a,0x69,0x63,0x43,0x34,0x2c,0x20,0x20,0x6f,0x63,0x43,0x34,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x2c,0x20,0x20,0x31,0x5d,0x20,0x78,0x69,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x3b,0x20,0x69,0x79,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x79,0x29,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x66,0x77,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x66,0x77,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x66,0x77,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x33,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x33,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x63,0x38,0x68,0x34,0x77,0x31,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x75,0x73,0x68,0x6f,0x72,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x20,0x5b,0x31,0x2c,0x20,0x20,0x34,0x2a,0x69,0x63,0x43,0x34,0x2c,0x20,0x20,0x6f,0x63,0x43,0x34,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x2c,0x20,0x20,0x31,0x5d,0x20,0x78,0x69,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x3b,0x20,0x69,0x79,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x79,0x29,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x66,0x77,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x66,0x77,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x66,0x77,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x33,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x33,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x33,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x33,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x63,0x38,0x68,0x32,0x77,0x31,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x3a,0x20,0x5b,0x69,0x63,0x2f,0x34,0x2c,0x20,0x6f,0x63,0x2c,0x20,0x34,0x5d,0x2c,0x20,0x6c,0x6f,0x6f,0x70,0x3a,0x20,0x69,0x63,0x2f,0x34,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x75,0x73,0x68,0x6f,0x72,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x20,0x5b,0x31,0x2c,0x20,0x20,0x34,0x2a,0x69,0x63,0x43,0x34,0x2c,0x20,0x20,0x6f,0x63,0x43,0x34,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x2c,0x20,0x20,0x31,0x5d,0x20,0x78,0x69,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x3b,0x20,0x69,0x79,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x79,0x29,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x66,0x77,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x66,0x77,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x66,0x77,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x63,0x38,0x68,0x31,0x77,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0x20,0x7c,0x7c,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x75,0x73,0x68,0x6f,0x72,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x20,0x5b,0x31,0x2c,0x20,0x20,0x34,0x2a,0x69,0x63,0x43,0x34,0x2c,0x20,0x20,0x6f,0x63,0x43,0x34,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x2c,0x20,0x20,0x31,0x5d,0x20,0x78,0x69,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x69,0x79,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x79,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x66,0x77,0x20,0x3d,0x20,0x30,0x3b,0x20,0x66,0x77,0x20,0x3c,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x3b,0x20,0x66,0x77,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x30,0x33,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x30,0x33,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x23,0x65,0x6c,0x69,0x66,0x20,0x28,0x64,0x65,0x66,0x69,0x6e,0x65,0x64,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x32,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2f,0x32,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x2f,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x34,0x29,0x28,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x30,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x31,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x32,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x30,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x3e,0x3e,0x20,0x34,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x49,0x6e,0x74,0x34,0x33,0x2e,0x73,0x31,0x20,0x26,0x20,0x4d,0x4f,0x44,0x5f,0x4e,0x55,0x4d,0x29,0x20,0x2d,0x20,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x30,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x31,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x32,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x68,0x61,0x72,0x57,0x65,0x69,0x67,0x68,0x74,0x33,0x29,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x53,0x63,0x61,0x6c,0x65,0x43,0x34,0x37,0x2c,0x20,0x64,0x65,0x71,0x75,0x61,0x6e,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x37,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x2c,0x20,0x6f,0x75,0x74,0x36,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x2c,0x20,0x6f,0x75,0x74,0x36,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x52,0x45,0x41,0x44,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4d,0x41,0x47,0x45,0x28,0x69,0x2c,0x20,0x62,0x61,0x73,0x65,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x23,0x23,0x69,0x20,0x2b,0x20,0x62,0x61,0x73,0x65,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x20,0x3d,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x69,0x6e,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x2c,0x20,0x2d,0x31,0x2c,0x20,0x28,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x20,0x25,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x6c,0x65,0x6e,0x67,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x23,0x23,0x69,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x76,0x61,0x6c,0x75,0x65,0x23,0x23,0x69,0x29,0x3d,0x3d,0x2d,0x31,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x43,0x41,0x4c,0x43,0x55,0x4c,0x41,0x54,0x45,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x28,0x69,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x69,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x69,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x69,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x23,0x23,0x69,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x6f,0x75,0x74,0x23,0x23,0x69,0x29,0x3b,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x31,0x78,0x31,0x5f,0x63,0x34,0x68,0x31,0x77,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x3b,0x20,0x2f,0x2f,0x20,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x3b,0x20,0x2f,0x2f,0x20,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x61,0x64,0x64,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x2a,0x6f,0x75,0x74,0x5f,0x77,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x75,0x73,0x68,0x6f,0x72,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0x20,0x2b,0x2b,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x33,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x70,0x5f,0x61,0x64,0x64,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x31,0x78,0x31,0x5f,0x63,0x38,0x68,0x31,0x77,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x38,0x20,0x77,0x2f,0x34,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x3c,0x3c,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x3c,0x3c,0x31,0x29,0x2b,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0x20,0x2b,0x2b,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x77,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x33,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x34,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x35,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x36,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x37,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2c,0x20,0x69,0x6e,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2c,0x20,0x69,0x6e,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x32,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x31,0x20,0x3d,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x34,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x2a,0x6f,0x75,0x74,0x5f,0x77,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x32,0x2b,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x2c,0x20,0x6f,0x75,0x74,0x36,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x32,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x32,0x2b,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x2c,0x20,0x6f,0x75,0x74,0x36,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x31,0x78,0x31,0x5f,0x63,0x38,0x68,0x31,0x77,0x32,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x7b,0x20,0x2f,0x2f,0x20,0x6f,0x63,0x20,0x2f,0x20,0x34,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x38,0x20,0x77,0x2f,0x34,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x3c,0x3c,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x3c,0x3c,0x31,0x29,0x2b,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0x20,0x2b,0x2b,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x77,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x38,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x34,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x35,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x36,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x37,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x34,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x35,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x36,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x37,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x32,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0xa,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x31,0x20,0x3d,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x34,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x2a,0x6f,0x75,0x74,0x5f,0x77,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x32,0x2b,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x32,0x2b,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x2c,0x20,0x30,0x2c,0x20,0x5f,0x74,0x65,0x6d,0x70,0x6f,0x75,0x74,0x70,0x75,0x74,0x31,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x31,0x78,0x31,0x5f,0x63,0x34,0x68,0x31,0x77,0x31,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0x20,0x2b,0x2b,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x77,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x31,0x78,0x31,0x5f,0x63,0x34,0x68,0x31,0x77,0x32,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x62,0x69,0x61,0x73,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x20,0x28,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0x20,0x2b,0x2b,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x61,0x73,0x65,0x20,0x20,0x3d,0x20,0x6d,0x75,0x6c,0x32,0x34,0x28,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x77,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x2c,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2b,0x20,0x69,0x6e,0x74,0x70,0x75,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x30,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x2c,0x20,0x28,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x29,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x78,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x30,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x79,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x31,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x7a,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x32,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x2e,0x77,0x20,0x2b,0x3d,0x20,0x64,0x6f,0x74,0x28,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x33,0x2c,0x20,0x69,0x6e,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x63,0x34,0x68,0x31,0x77,0x31,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x75,0x73,0x68,0x6f,0x72,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x20,0x5b,0x31,0x2c,0x20,0x20,0x34,0x2a,0x69,0x63,0x43,0x34,0x2c,0x20,0x20,0x6f,0x63,0x43,0x34,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x2c,0x20,0x20,0x31,0x5d,0x20,0x78,0x69,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x69,0x79,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x78,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x69,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x69,0x78,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x79,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x20,0x3d,0x20,0x28,0x69,0x78,0x2d,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2f,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x77,0x5f,0x69,0x6e,0x63,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x63,0x34,0x68,0x31,0x77,0x32,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0x2f,0x2f,0x67,0x65,0x6e,0x65,0x72,0x61,0x74,0x65,0x20,0x77,0x69,0x64,0x74,0x68,0x27,0x73,0x20,0x6e,0x75,0x6d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x75,0x73,0x68,0x6f,0x72,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x20,0x5b,0x31,0x2c,0x20,0x20,0x34,0x2a,0x69,0x63,0x43,0x34,0x2c,0x20,0x20,0x6f,0x63,0x43,0x34,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x2c,0x20,0x20,0x31,0x5d,0x20,0x78,0x69,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x69,0x79,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x79,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x66,0x77,0x20,0x3d,0x20,0x30,0x3b,0x20,0x66,0x77,0x20,0x3c,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x3b,0x20,0x66,0x77,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x31,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x63,0x34,0x68,0x31,0x77,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x75,0x73,0x68,0x6f,0x72,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x20,0x5b,0x31,0x2c,0x20,0x20,0x34,0x2a,0x69,0x63,0x43,0x34,0x2c,0x20,0x20,0x6f,0x63,0x43,0x34,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x2c,0x20,0x20,0x31,0x5d,0x20,0x78,0x69,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x69,0x79,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x79,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x66,0x77,0x20,0x3d,0x20,0x30,0x3b,0x20,0x66,0x77,0x20,0x3c,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x3b,0x20,0x66,0x77,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x63,0x34,0x68,0x34,0x77,0x31,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x75,0x73,0x68,0x6f,0x72,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x20,0x5b,0x31,0x2c,0x20,0x20,0x34,0x2a,0x69,0x63,0x43,0x34,0x2c,0x20,0x20,0x6f,0x63,0x43,0x34,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x2c,0x20,0x20,0x31,0x5d,0x20,0x78,0x69,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x3b,0x20,0x69,0x79,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x79,0x29,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x66,0x77,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x66,0x77,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x66,0x77,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x33,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x33,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x63,0x38,0x68,0x34,0x77,0x31,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x75,0x73,0x68,0x6f,0x72,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x20,0x5b,0x31,0x2c,0x20,0x20,0x34,0x2a,0x69,0x63,0x43,0x34,0x2c,0x20,0x20,0x6f,0x63,0x43,0x34,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x2c,0x20,0x20,0x31,0x5d,0x20,0x78,0x69,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x3b,0x20,0x69,0x79,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x79,0x29,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x66,0x77,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x66,0x77,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x66,0x77,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x32,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x33,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x33,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x33,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x33,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x32,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x33,0x20,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x63,0x38,0x68,0x32,0x77,0x31,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x3a,0x20,0x5b,0x69,0x63,0x2f,0x34,0x2c,0x20,0x6f,0x63,0x2c,0x20,0x34,0x5d,0x2c,0x20,0x6c,0x6f,0x6f,0x70,0x3a,0x20,0x69,0x63,0x2f,0x34,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x75,0x73,0x68,0x6f,0x72,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x20,0x5b,0x31,0x2c,0x20,0x20,0x34,0x2a,0x69,0x63,0x43,0x34,0x2c,0x20,0x20,0x6f,0x63,0x43,0x34,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x2c,0x20,0x20,0x31,0x5d,0x20,0x78,0x69,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x3b,0x20,0x69,0x79,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x79,0x29,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x79,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x66,0x77,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x66,0x77,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x77,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x66,0x77,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x30,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x68,0x31,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x66,0x77,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0xa,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x5f,0x32,0x64,0x5f,0x63,0x38,0x68,0x31,0x77,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x77,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x69,0x61,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x61,0x64,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x63,0x2f,0x34,0x20,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x62,0x20,0x68,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x77,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0x2f,0x2f,0x65,0x71,0x75,0x61,0x6c,0x20,0x74,0x6f,0x20,0x69,0x6e,0x5f,0x62,0x5f,0x69,0x64,0x78,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x2c,0x20,0x62,0x69,0x61,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6f,0x75,0x74,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x2d,0x70,0x61,0x64,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x73,0x65,0x6c,0x65,0x63,0x74,0x28,0x30,0x2c,0x20,0x28,0x2d,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x2b,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2d,0x20,0x31,0x29,0x20,0x2f,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x20,0x3c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x20,0x3d,0x20,0x6d,0x69,0x6e,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x29,0x2c,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2a,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2a,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x75,0x73,0x68,0x6f,0x72,0x74,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x3b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x77,0x65,0x69,0x67,0x68,0x74,0x73,0x20,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x20,0x5b,0x31,0x2c,0x20,0x20,0x34,0x2a,0x69,0x63,0x43,0x34,0x2c,0x20,0x20,0x6f,0x63,0x43,0x34,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x2c,0x20,0x20,0x31,0x5d,0x20,0x78,0x69,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2a,0x6b,0x68,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x2a,0x6b,0x77,0x20,0x2b,0x20,0x6b,0x77,0x5f,0x73,0x74,0x61,0x72,0x74,0x2c,0x20,0x30,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x34,0x2a,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x2b,0x30,0x29,0x2a,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6b,0x68,0x5f,0x73,0x74,0x61,0x72,0x74,0x29,0x2a,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x79,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x73,0x74,0x61,0x72,0x74,0x3b,0x20,0x69,0x79,0x20,0x3c,0x20,0x69,0x6e,0x5f,0x68,0x5f,0x69,0x64,0x78,0x5f,0x65,0x6e,0x64,0x3b,0x20,0x69,0x79,0x20,0x2b,0x3d,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x78,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x69,0x79,0x29,0x20,0x2a,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x66,0x77,0x20,0x3d,0x20,0x30,0x3b,0x20,0x66,0x77,0x20,0x3c,0x20,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x68,0x77,0x2e,0x79,0x3b,0x20,0x66,0x77,0x2b,0x2b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x66,0x77,0x20,0x2a,0x20,0x64,0x69,0x6c,0x61,0x74,0x65,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x5f,0x62,0x61,0x73,0x65,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x30,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x31,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x32,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x32,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x33,0x20,0x3d,0x20,0x28,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x20,0x3e,0x3d,0x20,0x69,0x6e,0x5f,0x68,0x77,0x2e,0x79,0x29,0x20,0x3f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x20,0x3a,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x6e,0x5f,0x77,0x33,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x2b,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x62,0x61,0x73,0x65,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2a,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x30,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x31,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x32,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x78,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x79,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x7a,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x6d,0x61,0x64,0x28,0x69,0x6e,0x33,0x2e,0x77,0x2c,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x33,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x77,0x65,0x69,0x67,0x68,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x45,0x4c,0x55,0x36,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x30,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x31,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x31,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x32,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x33,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x33,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x34,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x35,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x35,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x36,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x37,0x20,0x3d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x6f,0x75,0x74,0x37,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x36,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x4c,0x4f,0x43,0x4b,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2d,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x32,0x2c,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x2c,0x20,0x6f,0x75,0x74,0x36,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x36,0x2c,0x20,0x32,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x38,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x38,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x30,0x2c,0x20,0x6f,0x75,0x74,0x31,0x2c,0x20,0x6f,0x75,0x74,0x32,0x2c,0x20,0x6f,0x75,0x74,0x33,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x4c,0x45,0x41,0x56,0x45,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x6f,0x75,0x74,0x5f,0x62,0x5f,0x69,0x64,0x78,0x2a,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x73,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x31,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x6f,0x75,0x74,0x5f,0x68,0x77,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x75,0x74,0x5f,0x77,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x31,0x36,0x28,0x28,0x46,0x4c,0x4f,0x41,0x54,0x31,0x36,0x29,0x28,0x6f,0x75,0x74,0x34,0x2c,0x20,0x6f,0x75,0x74,0x35,0x2c,0x20,0x6f,0x75,0x74,0x36,0x2c,0x20,0x6f,0x75,0x74,0x37,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa, } }, #endif { "buffer_to_image", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x69,0x6d,0x61,0x67,0x65,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x55,0x46,0x46,0x45,0x52,0x5f,0x49,0x4d,0x41,0x47,0x45,0x5f,0x49,0x4f,0x5f,0x54,0x52,0x41,0x4e,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x55,0x46,0x46,0x45,0x52,0x5f,0x49,0x4d,0x41,0x47,0x45,0x5f,0x49,0x4f,0x5f,0x54,0x52,0x41,0x4e,0x53,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x63,0x6f,0x6f,0x72,0x64,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x63,0x6f,0x6f,0x72,0x64,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x55,0x46,0x46,0x45,0x52,0x5f,0x49,0x4d,0x41,0x47,0x45,0x5f,0x49,0x4f,0x5f,0x54,0x52,0x41,0x4e,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x2f,0x2a,0x20,0x6e,0x63,0x34,0x68,0x77,0x34,0x20,0x2a,0x2f,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x2f,0x2a,0x20,0x6e,0x63,0x34,0x68,0x77,0x34,0x20,0x2a,0x2f,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x63,0x6f,0x6f,0x72,0x64,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x55,0x46,0x46,0x45,0x52,0x5f,0x49,0x4d,0x41,0x47,0x45,0x5f,0x49,0x4f,0x5f,0x54,0x52,0x41,0x4e,0x53,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x63,0x6f,0x6f,0x72,0x64,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x63,0x6f,0x6f,0x72,0x64,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x3a,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6f,0x69,0x20,0x29,0x20,0x74,0x6f,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x6f,0x63,0x2c,0x20,0x69,0x63,0x2f,0x34,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x32,0x64,0x31,0x78,0x31,0x5f,0x6f,0x70,0x74,0x5f,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x69,0x6d,0x61,0x67,0x65,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x63,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x69,0x63,0x2f,0x34,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x6f,0x63,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x63,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x63,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x63,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x63,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x69,0x63,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x69,0x63,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x63,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x3b,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x3a,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6f,0x69,0x68,0x77,0x29,0x20,0x74,0x6f,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x6f,0x63,0x2f,0x34,0x20,0x68,0x20,0x77,0x20,0x2c,0x20,0x69,0x63,0x20,0x6f,0x63,0x34,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x69,0x6d,0x61,0x67,0x65,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x55,0x46,0x46,0x45,0x52,0x5f,0x49,0x4e,0x50,0x5f,0x46,0x50,0x33,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x69,0x63,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x6f,0x63,0x2f,0x34,0x20,0x68,0x20,0x77,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x3b,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x66,0x6f,0x72,0x20,0x64,0x65,0x62,0x75,0x67,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x3a,0x20,0x66,0x72,0x6f,0x6d,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x6f,0x63,0x2f,0x34,0x20,0x68,0x20,0x77,0x20,0x2c,0x20,0x69,0x63,0x20,0x6f,0x63,0x34,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6f,0x69,0x68,0x77,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x69,0x6d,0x61,0x67,0x65,0x5f,0x74,0x6f,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x63,0x6f,0x6f,0x72,0x64,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x63,0x6f,0x6f,0x72,0x64,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6d,0x69,0x68,0x77,0x29,0x20,0x74,0x6f,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x69,0x63,0x2f,0x34,0x2c,0x20,0x69,0x63,0x34,0x20,0x68,0x20,0x77,0x20,0x6d,0x29,0xa,0x2f,0x2f,0x20,0x62,0x75,0x74,0x20,0x6e,0x6f,0x77,0x20,0x64,0x77,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x20,0x6d,0x20,0x3d,0x3d,0x20,0x31,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x64,0x77,0x5f,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x69,0x6d,0x61,0x67,0x65,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x55,0x46,0x46,0x45,0x52,0x5f,0x49,0x4e,0x50,0x5f,0x46,0x50,0x33,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2c,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x2c,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x3b,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x68,0x77,0x63,0x29,0x20,0x74,0x6f,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x62,0x20,0x68,0x2c,0x20,0x69,0x63,0x2f,0x34,0x20,0x77,0x20,0x69,0x63,0x34,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x68,0x77,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x69,0x6d,0x61,0x67,0x65,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x55,0x46,0x46,0x45,0x52,0x5f,0x49,0x4d,0x41,0x47,0x45,0x5f,0x49,0x4f,0x5f,0x54,0x52,0x41,0x4e,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x55,0x46,0x46,0x45,0x52,0x5f,0x49,0x4d,0x41,0x47,0x45,0x5f,0x49,0x4f,0x5f,0x54,0x52,0x41,0x4e,0x53,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x5f,0x70,0x74,0x72,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x3b,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x68,0x77,0x29,0x20,0x74,0x6f,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x62,0x20,0x68,0x2c,0x20,0x69,0x63,0x2f,0x34,0x20,0x77,0x20,0x69,0x63,0x34,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x69,0x6d,0x61,0x67,0x65,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x55,0x46,0x46,0x45,0x52,0x5f,0x49,0x4d,0x41,0x47,0x45,0x5f,0x49,0x4f,0x5f,0x54,0x52,0x41,0x4e,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x20,0x20,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x3d,0x20,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x3b,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x66,0x6f,0x72,0x20,0x64,0x65,0x62,0x75,0x67,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x62,0x20,0x68,0x2c,0x20,0x69,0x63,0x2f,0x34,0x20,0x77,0x20,0x69,0x63,0x34,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x68,0x77,0x63,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x74,0x6f,0x5f,0x6e,0x68,0x77,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x55,0x46,0x46,0x45,0x52,0x5f,0x49,0x4d,0x41,0x47,0x45,0x5f,0x49,0x4f,0x5f,0x54,0x52,0x41,0x4e,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x2f,0x2a,0x20,0x6e,0x68,0x77,0x63,0x20,0x2a,0x2f,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x2f,0x2a,0x20,0x6e,0x68,0x77,0x63,0x20,0x2a,0x2f,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x63,0x6f,0x6f,0x72,0x64,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x55,0x46,0x46,0x45,0x52,0x5f,0x49,0x4d,0x41,0x47,0x45,0x5f,0x49,0x4f,0x5f,0x54,0x52,0x41,0x4e,0x53,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x63,0x6f,0x6f,0x72,0x64,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x63,0x6f,0x6f,0x72,0x64,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x66,0x6f,0x72,0x20,0x64,0x65,0x62,0x75,0x67,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x62,0x20,0x68,0x2c,0x20,0x69,0x63,0x2f,0x34,0x20,0x77,0x20,0x69,0x63,0x34,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x68,0x77,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x55,0x46,0x46,0x45,0x52,0x5f,0x49,0x4d,0x41,0x47,0x45,0x5f,0x49,0x4f,0x5f,0x54,0x52,0x41,0x4e,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x2f,0x2a,0x20,0x6e,0x63,0x68,0x77,0x20,0x2a,0x2f,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x2f,0x2a,0x20,0x6e,0x63,0x68,0x77,0x20,0x2a,0x2f,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x55,0x46,0x46,0x45,0x52,0x5f,0x49,0x4d,0x41,0x47,0x45,0x5f,0x49,0x4f,0x5f,0x54,0x52,0x41,0x4e,0x53,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x61,0x72,0x67,0x20,0x61,0x73,0x20,0x34,0x20,0x61,0x6c,0x69,0x67,0x6e,0x6d,0x65,0x6e,0x74,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x61,0x72,0x67,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x69,0x6d,0x61,0x67,0x65,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x6f,0x75,0x6e,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x63,0x6f,0x75,0x6e,0x74,0x20,0x2d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x3b,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x66,0x6f,0x72,0x20,0x64,0x65,0x62,0x75,0x67,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x61,0x72,0x67,0x5f,0x69,0x6d,0x61,0x67,0x65,0x5f,0x74,0x6f,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x6f,0x75,0x6e,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x63,0x6f,0x6f,0x72,0x64,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x63,0x6f,0x6f,0x72,0x64,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x20,0x3d,0x20,0x63,0x6f,0x75,0x6e,0x74,0x20,0x2d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3c,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x77,0x69,0x74,0x63,0x68,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x73,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x73,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x73,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x3a,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6f,0x69,0x20,0x29,0x20,0x74,0x6f,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x6f,0x63,0x2c,0x20,0x69,0x63,0x2f,0x34,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x32,0x64,0x31,0x78,0x31,0x5f,0x6f,0x70,0x74,0x5f,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x69,0x6d,0x61,0x67,0x65,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x63,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x69,0x63,0x2f,0x34,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x63,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x6f,0x63,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x63,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x63,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x63,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x63,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x63,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x69,0x63,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x63,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x69,0x63,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x33,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x63,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6f,0x63,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x3b,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x3a,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6f,0x69,0x68,0x77,0x29,0x20,0x74,0x6f,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x6f,0x63,0x2f,0x34,0x20,0x68,0x20,0x77,0x20,0x2c,0x20,0x69,0x63,0x20,0x6f,0x63,0x34,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x69,0x6d,0x61,0x67,0x65,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x55,0x46,0x46,0x45,0x52,0x5f,0x49,0x4e,0x50,0x5f,0x46,0x50,0x33,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x69,0x63,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x6f,0x63,0x2f,0x34,0x20,0x68,0x20,0x77,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x3b,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x66,0x6f,0x72,0x20,0x64,0x65,0x62,0x75,0x67,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x3a,0x20,0x66,0x72,0x6f,0x6d,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x6f,0x63,0x2f,0x34,0x20,0x68,0x20,0x77,0x20,0x2c,0x20,0x69,0x63,0x20,0x6f,0x63,0x34,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6f,0x69,0x68,0x77,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x69,0x6d,0x61,0x67,0x65,0x5f,0x74,0x6f,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x63,0x6f,0x6f,0x72,0x64,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x63,0x6f,0x6f,0x72,0x64,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6d,0x69,0x68,0x77,0x29,0x20,0x74,0x6f,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x69,0x63,0x2f,0x34,0x2c,0x20,0x69,0x63,0x34,0x20,0x68,0x20,0x77,0x20,0x6d,0x29,0xa,0x2f,0x2f,0x20,0x62,0x75,0x74,0x20,0x6e,0x6f,0x77,0x20,0x64,0x77,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x20,0x6d,0x20,0x3d,0x3d,0x20,0x31,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x64,0x77,0x5f,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x69,0x6d,0x61,0x67,0x65,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x42,0x55,0x46,0x46,0x45,0x52,0x5f,0x49,0x4e,0x50,0x5f,0x46,0x50,0x33,0x32,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2c,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x2c,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x69,0x6d,0x61,0x67,0x65,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x63,0x6f,0x6f,0x72,0x64,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x63,0x6f,0x6f,0x72,0x64,0x2c,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x49,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x63,0x6f,0x6f,0x72,0x64,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x63,0x6f,0x6f,0x72,0x64,0x29,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x68,0x77,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x69,0x6d,0x61,0x67,0x65,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x49,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x69,0x6d,0x61,0x67,0x65,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x20,0x20,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x3d,0x20,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x49,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x74,0x6f,0x5f,0x6e,0x68,0x77,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x63,0x6f,0x6f,0x72,0x64,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x63,0x6f,0x6f,0x72,0x64,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x3d,0x20,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x61,0x72,0x67,0x20,0x61,0x73,0x20,0x34,0x20,0x61,0x6c,0x69,0x67,0x6e,0x6d,0x65,0x6e,0x74,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x61,0x72,0x67,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x69,0x6d,0x61,0x67,0x65,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x6f,0x75,0x6e,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x63,0x6f,0x75,0x6e,0x74,0x20,0x2d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x49,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x29,0x3b,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x66,0x6f,0x72,0x20,0x64,0x65,0x62,0x75,0x67,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x61,0x72,0x67,0x5f,0x69,0x6d,0x61,0x67,0x65,0x5f,0x74,0x6f,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x6f,0x75,0x6e,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x63,0x6f,0x6f,0x72,0x64,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x63,0x6f,0x6f,0x72,0x64,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x20,0x3d,0x20,0x63,0x6f,0x75,0x6e,0x74,0x20,0x2d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3c,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x77,0x69,0x74,0x63,0x68,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x61,0x73,0x65,0x20,0x33,0x3a,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x32,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x73,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x61,0x73,0x65,0x20,0x32,0x3a,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x31,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x73,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x61,0x73,0x65,0x20,0x31,0x3a,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x73,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa, } }, { "winogradTransformDest2_3_1", @@ -239,7 +245,7 @@ extern const std::map> OpenCLProgramMap #ifndef MNN_OPENCL_BUFFER_CLOSED { "layernorm_buf", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6c,0x61,0x79,0x65,0x72,0x6e,0x6f,0x72,0x6d,0x5f,0x77,0x5f,0x62,0x75,0x66,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x67,0x61,0x6d,0x6d,0x61,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x65,0x74,0x61,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2b,0x20,0x63,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6d,0x65,0x61,0x6e,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x2f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x71,0x72,0x74,0x28,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x67,0x61,0x6d,0x6d,0x61,0x5b,0x69,0x5d,0x20,0x2b,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x62,0x65,0x74,0x61,0x5b,0x69,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6c,0x61,0x79,0x65,0x72,0x6e,0x6f,0x72,0x6d,0x5f,0x68,0x77,0x5f,0x62,0x75,0x66,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x67,0x61,0x6d,0x6d,0x61,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x65,0x74,0x61,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2b,0x20,0x63,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6d,0x65,0x61,0x6e,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x2f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x71,0x72,0x74,0x28,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x67,0x61,0x6d,0x6d,0x61,0x5b,0x69,0x5d,0x20,0x2b,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x62,0x65,0x74,0x61,0x5b,0x69,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6c,0x61,0x79,0x65,0x72,0x6e,0x6f,0x72,0x6d,0x5f,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x67,0x61,0x6d,0x6d,0x61,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x65,0x74,0x61,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x75,0x6d,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x30,0x3b,0x20,0x63,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2d,0x20,0x31,0x3b,0x20,0x2b,0x2b,0x63,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x63,0x20,0x2a,0x20,0x77,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x77,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x28,0x26,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x31,0x3b,0x20,0x69,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x5f,0x70,0x74,0x72,0x5b,0x30,0x5d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6d,0x65,0x61,0x6e,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x75,0x6d,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x30,0x3b,0x20,0x63,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2d,0x20,0x31,0x3b,0x20,0x2b,0x2b,0x63,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x63,0x20,0x2a,0x20,0x77,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x77,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x31,0x3b,0x20,0x69,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x5f,0x70,0x74,0x72,0x5b,0x30,0x5d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x75,0x6d,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x2f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x71,0x72,0x74,0x28,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x30,0x3b,0x20,0x63,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x3b,0x20,0x2b,0x2b,0x63,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x63,0x20,0x2a,0x20,0x77,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x67,0x61,0x6d,0x6d,0x61,0x5b,0x63,0x20,0x2a,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x69,0x5d,0x20,0x2b,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x62,0x65,0x74,0x61,0x5b,0x63,0x20,0x2a,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x63,0x20,0x2a,0x20,0x77,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6c,0x61,0x79,0x65,0x72,0x6e,0x6f,0x72,0x6d,0x5f,0x77,0x5f,0x62,0x75,0x66,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x67,0x61,0x6d,0x6d,0x61,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x65,0x74,0x61,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2b,0x20,0x63,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x4d,0x53,0x4e,0x4f,0x52,0x4d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6d,0x65,0x61,0x6e,0x20,0x3d,0x20,0x30,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6d,0x65,0x61,0x6e,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x2f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x73,0x71,0x72,0x74,0x28,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x67,0x61,0x6d,0x6d,0x61,0x5b,0x69,0x5d,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x62,0x65,0x74,0x61,0x5b,0x69,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x2c,0x20,0x69,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6c,0x61,0x79,0x65,0x72,0x6e,0x6f,0x72,0x6d,0x5f,0x68,0x77,0x5f,0x62,0x75,0x66,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x67,0x61,0x6d,0x6d,0x61,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x65,0x74,0x61,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2b,0x20,0x63,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x4d,0x53,0x4e,0x4f,0x52,0x4d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6d,0x65,0x61,0x6e,0x20,0x3d,0x20,0x30,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6d,0x65,0x61,0x6e,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x2f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x73,0x71,0x72,0x74,0x28,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x67,0x61,0x6d,0x6d,0x61,0x5b,0x69,0x5d,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x62,0x65,0x74,0x61,0x5b,0x69,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x2c,0x20,0x69,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6c,0x61,0x79,0x65,0x72,0x6e,0x6f,0x72,0x6d,0x5f,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x67,0x61,0x6d,0x6d,0x61,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x65,0x74,0x61,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x75,0x6d,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x2a,0x29,0x28,0x26,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x4d,0x53,0x4e,0x4f,0x52,0x4d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6d,0x65,0x61,0x6e,0x20,0x3d,0x20,0x30,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x30,0x3b,0x20,0x63,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2d,0x20,0x31,0x3b,0x20,0x2b,0x2b,0x63,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x63,0x20,0x2a,0x20,0x77,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x77,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x31,0x3b,0x20,0x69,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x5f,0x70,0x74,0x72,0x5b,0x30,0x5d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6d,0x65,0x61,0x6e,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x73,0x75,0x6d,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x30,0x3b,0x20,0x63,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2d,0x20,0x31,0x3b,0x20,0x2b,0x2b,0x63,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x63,0x20,0x2a,0x20,0x77,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x77,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x31,0x3b,0x20,0x69,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x5f,0x70,0x74,0x72,0x5b,0x30,0x5d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x73,0x75,0x6d,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x2f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x73,0x71,0x72,0x74,0x28,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x30,0x3b,0x20,0x63,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x3b,0x20,0x2b,0x2b,0x63,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x63,0x20,0x2a,0x20,0x77,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x67,0x61,0x6d,0x6d,0x61,0x5b,0x63,0x20,0x2a,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x69,0x5d,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x62,0x65,0x74,0x61,0x5b,0x63,0x20,0x2a,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x2c,0x20,0x69,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x20,0x63,0x20,0x2a,0x20,0x77,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa, } }, #endif #ifndef MNN_OPENCL_BUFFER_CLOSED @@ -249,6 +255,12 @@ extern const std::map> OpenCLProgramMap }, #endif #ifndef MNN_OPENCL_BUFFER_CLOSED +{ + "gather_buf", + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x67,0x61,0x74,0x68,0x65,0x72,0x5f,0x62,0x75,0x66,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x69,0x6e,0x74,0x2a,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x64,0x73,0x74,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x69,0x6e,0x74,0x2a,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x73,0x72,0x63,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x72,0x63,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x64,0x73,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x74,0x65,0x70,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x74,0x65,0x72,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x64,0x73,0x74,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x72,0x63,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x69,0x7a,0x65,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x78,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x78,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x79,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2f,0x20,0x78,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x70,0x6f,0x73,0x2e,0x7a,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x74,0x65,0x72,0x73,0x2e,0x78,0x20,0x3e,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x46,0x46,0x53,0x45,0x54,0x5f,0x44,0x53,0x54,0x5f,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x53,0x54,0x52,0x49,0x44,0x45,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x2e,0x78,0x20,0x3d,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x64,0x73,0x74,0x5b,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x2a,0x20,0x34,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x2e,0x78,0x20,0x3d,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x64,0x73,0x74,0x5b,0x70,0x6f,0x73,0x2e,0x7a,0x5d,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x74,0x65,0x72,0x73,0x2e,0x79,0x20,0x3e,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x46,0x46,0x53,0x45,0x54,0x5f,0x53,0x52,0x43,0x5f,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x5f,0x53,0x54,0x52,0x49,0x44,0x45,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x2e,0x79,0x20,0x3d,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x73,0x72,0x63,0x5b,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x2a,0x20,0x34,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x64,0x65,0x78,0x2e,0x79,0x20,0x3d,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x5f,0x73,0x72,0x63,0x5b,0x70,0x6f,0x73,0x2e,0x7a,0x5d,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x69,0x6e,0x64,0x65,0x78,0x20,0x2a,0x20,0x73,0x74,0x65,0x70,0x73,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x72,0x63,0x2e,0x77,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x72,0x63,0x2e,0x78,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x72,0x63,0x2e,0x79,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x73,0x72,0x63,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x64,0x73,0x74,0x2e,0x77,0x20,0x2b,0x20,0x78,0x20,0x2a,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x64,0x73,0x74,0x2e,0x78,0x20,0x2b,0x20,0x79,0x20,0x2a,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x64,0x73,0x74,0x2e,0x79,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x73,0x74,0x72,0x69,0x64,0x65,0x5f,0x64,0x73,0x74,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x2c,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x54,0x48,0x45,0x52,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x4e,0x48,0x57,0x43,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x20,0x3d,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x20,0x73,0x72,0x63,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x34,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x28,0x73,0x72,0x63,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x20,0x2a,0x20,0x63,0x34,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x28,0x63,0x20,0x2f,0x20,0x34,0x29,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x79,0x20,0x2b,0x20,0x68,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x78,0x20,0x2b,0x20,0x77,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x28,0x63,0x20,0x25,0x20,0x34,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x20,0x3d,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x20,0x73,0x72,0x63,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x34,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x28,0x73,0x72,0x63,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x20,0x2a,0x20,0x63,0x34,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x28,0x63,0x20,0x2f,0x20,0x34,0x29,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x79,0x20,0x2b,0x20,0x68,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x78,0x20,0x2b,0x20,0x77,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x28,0x63,0x20,0x25,0x20,0x34,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x54,0x48,0x45,0x52,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x4e,0x48,0x57,0x43,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x64,0x73,0x74,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x64,0x73,0x74,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x20,0x3d,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x20,0x64,0x73,0x74,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x34,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x28,0x64,0x73,0x74,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x20,0x2a,0x20,0x63,0x34,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x28,0x63,0x20,0x2f,0x20,0x34,0x29,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x79,0x20,0x2b,0x20,0x68,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x78,0x20,0x2b,0x20,0x77,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x28,0x63,0x20,0x25,0x20,0x34,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x64,0x73,0x74,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x64,0x73,0x74,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x20,0x3d,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x20,0x64,0x73,0x74,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x34,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x28,0x64,0x73,0x74,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x20,0x2a,0x20,0x63,0x34,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x28,0x63,0x20,0x2f,0x20,0x34,0x29,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x79,0x20,0x2b,0x20,0x68,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x63,0x34,0x73,0x69,0x7a,0x65,0x2e,0x78,0x20,0x2b,0x20,0x77,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x28,0x63,0x20,0x25,0x20,0x34,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x3e,0x3d,0x20,0x30,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x20,0x3e,0x3d,0x20,0x30,0x20,0x26,0x26,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x53,0x69,0x7a,0x65,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x69,0x6e,0x70,0x75,0x74,0x5b,0x73,0x72,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x65,0x6c,0x73,0x65,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x64,0x73,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x43,0x34,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa, } + }, +#endif +#ifndef MNN_OPENCL_BUFFER_CLOSED #ifdef MNN_SUPPORT_INTEL_SUBGROUP { "conv_2d_c16_subgroup_buf", @@ -265,17 +277,17 @@ extern const std::map> OpenCLProgramMap #ifndef MNN_OPENCL_BUFFER_CLOSED { "reduction_buf", - { 0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x75,0x73,0x65,0x20,0x49,0x4e,0x49,0x54,0x5f,0x53,0x43,0x41,0x4c,0x41,0x52,0x5f,0x56,0x41,0x4c,0x55,0x45,0x2c,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x2c,0x20,0x46,0x49,0x4e,0x41,0x4c,0x5f,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x5f,0x4f,0x4e,0x5f,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x20,0x6d,0x61,0x63,0x72,0x6f,0x20,0x61,0x62,0x73,0x74,0x72,0x61,0x63,0x74,0x20,0x61,0x6e,0x64,0x20,0x73,0x69,0x6d,0x70,0x6c,0x69,0x66,0x79,0x20,0x63,0x6f,0x64,0x65,0xa,0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x20,0x64,0x69,0x6d,0x73,0x20,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x62,0x61,0x74,0x63,0x68,0xa,0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x20,0x6b,0x65,0x65,0x70,0x5f,0x64,0x69,0x6d,0x3d,0x46,0x61,0x6c,0x73,0x65,0xa,0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x66,0x69,0x78,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x72,0x65,0x2d,0x70,0x61,0x63,0x6b,0x20,0x70,0x72,0x6f,0x62,0x6c,0x65,0x6d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x65,0x64,0x75,0x63,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x30,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x30,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x20,0x3e,0x20,0x30,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x2c,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x65,0x64,0x75,0x63,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x23,0x69,0x66,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x20,0x3e,0x20,0x30,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x2c,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x65,0x64,0x75,0x63,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x23,0x69,0x66,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x20,0x3e,0x20,0x30,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x50,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x26,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x3b,0x20,0x69,0x20,0x2b,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x6f,0x75,0x74,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x6f,0x75,0x74,0x2e,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x6f,0x75,0x74,0x2e,0x77,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x2c,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x50,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x26,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x34,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x65,0x64,0x75,0x63,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x23,0x69,0x66,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x20,0x3e,0x20,0x30,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x50,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x26,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x3b,0x20,0x69,0x20,0x2b,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x6f,0x75,0x74,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x6f,0x75,0x74,0x2e,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x6f,0x75,0x74,0x2e,0x77,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x2c,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x50,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x26,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x34,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x65,0x64,0x75,0x63,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x23,0x69,0x66,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x20,0x3e,0x20,0x30,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x30,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x30,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x62,0x61,0x74,0x63,0x68,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x2c,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x30,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x30,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x62,0x61,0x74,0x63,0x68,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa, } + { 0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x75,0x73,0x65,0x20,0x49,0x4e,0x49,0x54,0x5f,0x53,0x43,0x41,0x4c,0x41,0x52,0x5f,0x56,0x41,0x4c,0x55,0x45,0x2c,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x2c,0x20,0x46,0x49,0x4e,0x41,0x4c,0x5f,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x5f,0x4f,0x4e,0x5f,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x20,0x6d,0x61,0x63,0x72,0x6f,0x20,0x61,0x62,0x73,0x74,0x72,0x61,0x63,0x74,0x20,0x61,0x6e,0x64,0x20,0x73,0x69,0x6d,0x70,0x6c,0x69,0x66,0x79,0x20,0x63,0x6f,0x64,0x65,0xa,0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x20,0x64,0x69,0x6d,0x73,0x20,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x62,0x61,0x74,0x63,0x68,0xa,0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x20,0x6b,0x65,0x65,0x70,0x5f,0x64,0x69,0x6d,0x3d,0x46,0x61,0x6c,0x73,0x65,0xa,0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x66,0x69,0x78,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x72,0x65,0x2d,0x70,0x61,0x63,0x6b,0x20,0x70,0x72,0x6f,0x62,0x6c,0x65,0x6d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x65,0x64,0x75,0x63,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x30,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x30,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x20,0x3e,0x20,0x30,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x2c,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x65,0x64,0x75,0x63,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x23,0x69,0x66,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x20,0x3e,0x20,0x30,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x2c,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x65,0x64,0x75,0x63,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x23,0x69,0x66,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x20,0x3e,0x20,0x30,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x50,0x74,0x72,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x29,0x26,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x3b,0x20,0x69,0x20,0x2b,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x6f,0x75,0x74,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x6f,0x75,0x74,0x2e,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x6f,0x75,0x74,0x2e,0x77,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x2c,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x6f,0x75,0x74,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x50,0x74,0x72,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x29,0x26,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x34,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x6f,0x75,0x74,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x65,0x64,0x75,0x63,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x23,0x69,0x66,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x20,0x3e,0x20,0x30,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x50,0x74,0x72,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x29,0x26,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x3b,0x20,0x69,0x20,0x2b,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x6f,0x75,0x74,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x6f,0x75,0x74,0x2e,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x6f,0x75,0x74,0x2e,0x77,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x2c,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x6f,0x75,0x74,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x30,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x50,0x74,0x72,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x29,0x26,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x34,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x6f,0x75,0x74,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x65,0x64,0x75,0x63,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x23,0x69,0x66,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x20,0x3e,0x20,0x30,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x30,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x30,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x62,0x61,0x74,0x63,0x68,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x2c,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x30,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x30,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x69,0x20,0x2a,0x20,0x62,0x61,0x74,0x63,0x68,0x4f,0x66,0x66,0x73,0x65,0x74,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x4f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa, } }, #endif { "cast", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x63,0x61,0x73,0x74,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x54,0x4f,0x5f,0x42,0x4f,0x4f,0x4c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x3d,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x30,0x20,0x3f,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x30,0x20,0x3a,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x76,0x61,0x6c,0x75,0x65,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x63,0x61,0x73,0x74,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x54,0x4f,0x5f,0x42,0x4f,0x4f,0x4c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x3d,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x30,0x20,0x3f,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x30,0x20,0x3a,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x49,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x49,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa, } }, #ifndef MNN_OPENCL_BUFFER_CLOSED { "buffer_convert_buf", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x68,0x77,0x63,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x34,0x68,0x77,0x34,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x68,0x77,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x5f,0x70,0x74,0x72,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x33,0x29,0x2f,0x34,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2f,0x34,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x68,0x77,0x63,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x34,0x68,0x77,0x34,0x29,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x68,0x77,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x69,0x6e,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x75,0x72,0x72,0x65,0x6e,0x74,0x5f,0x70,0x74,0x72,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x33,0x29,0x2f,0x34,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2f,0x34,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x68,0x77,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x34,0x68,0x77,0x34,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x20,0x20,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x3d,0x20,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x33,0x29,0x2f,0x34,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2f,0x34,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x68,0x77,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x34,0x68,0x77,0x34,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x69,0x6e,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x20,0x20,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x3d,0x20,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x33,0x29,0x2f,0x34,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2f,0x34,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x69,0x6e,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x5b,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x3b,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x6f,0x75,0x74,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x29,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x5b,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x3b,0xa,0x7d,0xa,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x62,0x20,0x68,0x2c,0x20,0x69,0x63,0x2f,0x34,0x20,0x77,0x20,0x69,0x63,0x34,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x68,0x77,0x63,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x68,0x77,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x33,0x29,0x2f,0x34,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2f,0x34,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2b,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x62,0x20,0x68,0x2c,0x20,0x69,0x63,0x2f,0x34,0x20,0x77,0x20,0x69,0x63,0x34,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x68,0x77,0x63,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x68,0x77,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x6f,0x75,0x74,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x33,0x29,0x2f,0x34,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2f,0x34,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2b,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x34,0x68,0x77,0x34,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x68,0x77,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x33,0x29,0x2f,0x34,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2f,0x34,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2b,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x34,0x68,0x77,0x34,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x68,0x77,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x6f,0x75,0x74,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x33,0x29,0x2f,0x34,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2f,0x34,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2b,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x72,0x63,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x73,0x74,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0xa,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x73,0x72,0x63,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x20,0x2a,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x20,0x2a,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x69,0x6e,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x72,0x63,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x73,0x74,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0xa,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x73,0x72,0x63,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x20,0x2a,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x20,0x2a,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x6f,0x75,0x74,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x72,0x63,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x73,0x74,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0xa,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x73,0x72,0x63,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x20,0x2a,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x20,0x2a,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x69,0x6e,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x6f,0x75,0x74,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x72,0x63,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x73,0x74,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0xa,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x73,0x72,0x63,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x20,0x2a,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x20,0x2a,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x3a,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6f,0x69,0x68,0x77,0x29,0x20,0x74,0x6f,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x6f,0x63,0x2f,0x34,0x20,0x68,0x20,0x77,0x20,0x2c,0x20,0x69,0x63,0x20,0x6f,0x63,0x34,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x69,0x63,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x6f,0x63,0x2f,0x34,0x20,0x68,0x20,0x77,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2a,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2b,0x33,0x29,0x2f,0x34,0x29,0x2b,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x3a,0x20,0x66,0x72,0x6f,0x6d,0x20,0x69,0x6e,0x74,0x38,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6f,0x69,0x68,0x77,0x29,0x20,0x74,0x6f,0x20,0x69,0x6e,0x74,0x38,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x6f,0x63,0x2f,0x34,0x20,0x68,0x20,0x77,0x20,0x2c,0x20,0x69,0x63,0x20,0x6f,0x63,0x34,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x69,0x6e,0x74,0x38,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x69,0x63,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x6f,0x63,0x2f,0x34,0x20,0x68,0x20,0x77,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2a,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2b,0x33,0x29,0x2f,0x34,0x29,0x2b,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x3a,0x20,0x66,0x72,0x6f,0x6d,0x20,0x69,0x6e,0x74,0x38,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6f,0x69,0x68,0x77,0x29,0x20,0x74,0x6f,0x20,0x69,0x6e,0x74,0x34,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x6f,0x63,0x2f,0x34,0x20,0x68,0x20,0x77,0x20,0x2c,0x20,0x69,0x63,0x20,0x6f,0x63,0x34,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x69,0x6e,0x74,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x69,0x63,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x6f,0x63,0x2f,0x34,0x20,0x68,0x20,0x77,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x34,0x20,0x3d,0x20,0x28,0x75,0x63,0x68,0x61,0x72,0x32,0x29,0x28,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x78,0x20,0x2b,0x20,0x38,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x79,0x20,0x2b,0x20,0x38,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x7a,0x20,0x2b,0x20,0x38,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x77,0x20,0x2b,0x20,0x38,0x29,0x3b,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2a,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2b,0x33,0x29,0x2f,0x34,0x29,0x2b,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x32,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x3a,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6f,0x69,0x68,0x77,0x29,0x20,0x74,0x6f,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x6f,0x63,0x2f,0x34,0x20,0x68,0x20,0x77,0x20,0x2c,0x20,0x69,0x63,0x20,0x6f,0x63,0x34,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x69,0x6e,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x69,0x63,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x6f,0x63,0x2f,0x34,0x20,0x68,0x20,0x77,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2a,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2b,0x33,0x29,0x2f,0x34,0x29,0x2b,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6d,0x69,0x68,0x77,0x29,0x20,0x74,0x6f,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x69,0x63,0x2f,0x34,0x2c,0x20,0x69,0x63,0x34,0x20,0x68,0x20,0x77,0x20,0x6d,0x29,0xa,0x2f,0x2f,0x20,0x62,0x75,0x74,0x20,0x6e,0x6f,0x77,0x20,0x64,0x77,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x20,0x6d,0x20,0x3d,0x3d,0x20,0x31,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x64,0x77,0x5f,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x31,0x2c,0x20,0x43,0x6f,0x75,0x74,0x2c,0x20,0x66,0x68,0x2c,0x20,0x66,0x77,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x2f,0x2f,0x66,0x68,0x2a,0x66,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x2f,0x2f,0x55,0x50,0x5f,0x44,0x49,0x56,0x28,0x43,0x6f,0x75,0x74,0x2c,0x20,0x34,0x29,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2c,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x2c,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x70,0x75,0x74,0x20,0x5b,0x31,0x2c,0x20,0x43,0x6f,0x75,0x74,0x2c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x68,0x2c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x77,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x5b,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x5b,0x31,0x2c,0x20,0x66,0x77,0x2a,0x66,0x68,0x2c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x31,0x2c,0x20,0x43,0x6f,0x75,0x74,0x2f,0x34,0x5d,0x78,0x20,0x6f,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x20,0x30,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x5d,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2a,0x28,0x28,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x33,0x29,0x2f,0x34,0x29,0x2b,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x64,0x77,0x5f,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x69,0x6e,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x31,0x2c,0x20,0x43,0x6f,0x75,0x74,0x2c,0x20,0x66,0x68,0x2c,0x20,0x66,0x77,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x2f,0x2f,0x66,0x68,0x2a,0x66,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x2f,0x2f,0x55,0x50,0x5f,0x44,0x49,0x56,0x28,0x43,0x6f,0x75,0x74,0x2c,0x20,0x34,0x29,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2c,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x2c,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x70,0x75,0x74,0x20,0x5b,0x31,0x2c,0x20,0x43,0x6f,0x75,0x74,0x2c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x68,0x2c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x77,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x5b,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x5b,0x31,0x2c,0x20,0x66,0x77,0x2a,0x66,0x68,0x2c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x31,0x2c,0x20,0x43,0x6f,0x75,0x74,0x2f,0x34,0x5d,0x78,0x20,0x6f,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x20,0x30,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x5d,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2a,0x28,0x28,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x33,0x29,0x2f,0x34,0x29,0x2b,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x68,0x77,0x63,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x34,0x68,0x77,0x34,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x68,0x77,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x33,0x29,0x2f,0x34,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2f,0x34,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x68,0x77,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x34,0x68,0x77,0x34,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x20,0x20,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x3d,0x20,0x30,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x29,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x33,0x29,0x2f,0x34,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2f,0x34,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x72,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2b,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x70,0x61,0x64,0x5f,0x6c,0x65,0x66,0x74,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x5b,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x3b,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x62,0x20,0x68,0x2c,0x20,0x69,0x63,0x2f,0x34,0x20,0x77,0x20,0x69,0x63,0x34,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x68,0x77,0x63,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x68,0x77,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x33,0x29,0x2f,0x34,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2f,0x34,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2b,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x73,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x2b,0x2b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x64,0x61,0x74,0x61,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x34,0x68,0x77,0x34,0x29,0x20,0x74,0x6f,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6e,0x63,0x68,0x77,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x68,0x77,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x3d,0x20,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x2b,0x33,0x29,0x2f,0x34,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2f,0x34,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x20,0x20,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2b,0x69,0x6e,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x73,0x20,0x2d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5b,0x6f,0x66,0x66,0x73,0x65,0x74,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x72,0x63,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x73,0x74,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0xa,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x73,0x72,0x63,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x20,0x2a,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x64,0x73,0x74,0x5f,0x73,0x74,0x72,0x69,0x64,0x65,0x20,0x2a,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x20,0x2b,0x20,0x64,0x73,0x74,0x5f,0x62,0x63,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x73,0x72,0x63,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x64,0x73,0x74,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x3a,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6f,0x69,0x68,0x77,0x29,0x20,0x74,0x6f,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x6f,0x63,0x2f,0x34,0x20,0x68,0x20,0x77,0x20,0x2c,0x20,0x69,0x63,0x20,0x6f,0x63,0x34,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x69,0x63,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x6f,0x63,0x2f,0x34,0x20,0x68,0x20,0x77,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2a,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2b,0x33,0x29,0x2f,0x34,0x29,0x2b,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x38,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x3a,0x20,0x66,0x72,0x6f,0x6d,0x20,0x69,0x6e,0x74,0x38,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6f,0x69,0x68,0x77,0x29,0x20,0x74,0x6f,0x20,0x69,0x6e,0x74,0x38,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x6f,0x63,0x2f,0x34,0x20,0x68,0x20,0x77,0x20,0x2c,0x20,0x69,0x63,0x20,0x6f,0x63,0x34,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x69,0x6e,0x74,0x38,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x69,0x63,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x6f,0x63,0x2f,0x34,0x20,0x68,0x20,0x77,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2a,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2b,0x33,0x29,0x2f,0x34,0x29,0x2b,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x55,0x53,0x45,0x5f,0x4c,0x4f,0x57,0x5f,0x42,0x49,0x54,0x5f,0x57,0x45,0x49,0x47,0x48,0x54,0x5f,0x49,0x4e,0x54,0x34,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x3a,0x20,0x66,0x72,0x6f,0x6d,0x20,0x69,0x6e,0x74,0x38,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6f,0x69,0x68,0x77,0x29,0x20,0x74,0x6f,0x20,0x69,0x6e,0x74,0x34,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x6f,0x63,0x2f,0x34,0x20,0x68,0x20,0x77,0x20,0x2c,0x20,0x69,0x63,0x20,0x6f,0x63,0x34,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x69,0x6e,0x74,0x34,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x75,0x63,0x68,0x61,0x72,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x69,0x63,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x6f,0x63,0x2f,0x34,0x20,0x68,0x20,0x77,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x68,0x61,0x72,0x34,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x77,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x79,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x78,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x72,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x75,0x63,0x68,0x61,0x72,0x32,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x34,0x20,0x3d,0x20,0x28,0x75,0x63,0x68,0x61,0x72,0x32,0x29,0x28,0x30,0x2c,0x20,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x34,0x2e,0x73,0x30,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x78,0x20,0x2b,0x20,0x38,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x79,0x20,0x2b,0x20,0x38,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x34,0x2e,0x73,0x31,0x20,0x3d,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x7a,0x20,0x2b,0x20,0x38,0x29,0x20,0x2a,0x20,0x31,0x36,0x20,0x2b,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x38,0x2e,0x77,0x20,0x2b,0x20,0x38,0x29,0x3b,0xa,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2a,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2b,0x33,0x29,0x2f,0x34,0x29,0x2b,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x32,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x5f,0x69,0x6e,0x74,0x34,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x3a,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6f,0x69,0x68,0x77,0x29,0x20,0x74,0x6f,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x6f,0x63,0x2f,0x34,0x20,0x68,0x20,0x77,0x20,0x2c,0x20,0x69,0x63,0x20,0x6f,0x63,0x34,0x29,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x63,0x6f,0x6e,0x76,0x32,0x64,0x5f,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x69,0x6e,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x69,0x63,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x20,0x2f,0x2f,0x20,0x6f,0x63,0x2f,0x34,0x20,0x68,0x20,0x77,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2b,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x31,0x2c,0x20,0x69,0x63,0x5f,0x68,0x5f,0x77,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2a,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2a,0x28,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2b,0x33,0x29,0x2f,0x34,0x29,0x2b,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0xa,0x2f,0x2f,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x66,0x72,0x6f,0x6d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x6d,0x69,0x68,0x77,0x29,0x20,0x74,0x6f,0x20,0x69,0x6d,0x61,0x67,0x65,0x28,0x69,0x63,0x2f,0x34,0x2c,0x20,0x69,0x63,0x34,0x20,0x68,0x20,0x77,0x20,0x6d,0x29,0xa,0x2f,0x2f,0x20,0x62,0x75,0x74,0x20,0x6e,0x6f,0x77,0x20,0x64,0x77,0x20,0x6f,0x6e,0x6c,0x79,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x20,0x6d,0x20,0x3d,0x3d,0x20,0x31,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x64,0x77,0x5f,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x31,0x2c,0x20,0x43,0x6f,0x75,0x74,0x2c,0x20,0x66,0x68,0x2c,0x20,0x66,0x77,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x2f,0x2f,0x66,0x68,0x2a,0x66,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x2f,0x2f,0x55,0x50,0x5f,0x44,0x49,0x56,0x28,0x43,0x6f,0x75,0x74,0x2c,0x20,0x34,0x29,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2c,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x2c,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x70,0x75,0x74,0x20,0x5b,0x31,0x2c,0x20,0x43,0x6f,0x75,0x74,0x2c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x68,0x2c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x77,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x5b,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x5b,0x31,0x2c,0x20,0x66,0x77,0x2a,0x66,0x68,0x2c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x31,0x2c,0x20,0x43,0x6f,0x75,0x74,0x2f,0x34,0x5d,0x78,0x20,0x6f,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x20,0x30,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x5d,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2a,0x28,0x28,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x33,0x29,0x2f,0x34,0x29,0x2b,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x64,0x77,0x5f,0x66,0x69,0x6c,0x74,0x65,0x72,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x74,0x6f,0x5f,0x6e,0x63,0x34,0x68,0x77,0x34,0x5f,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x69,0x6e,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x31,0x2c,0x20,0x43,0x6f,0x75,0x74,0x2c,0x20,0x66,0x68,0x2c,0x20,0x66,0x77,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0x2f,0x2f,0x66,0x68,0x2a,0x66,0x77,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0x2f,0x2f,0x55,0x50,0x5f,0x44,0x49,0x56,0x28,0x43,0x6f,0x75,0x74,0x2c,0x20,0x34,0x29,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x32,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x20,0x20,0x20,0x3d,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x6d,0x61,0x64,0x32,0x34,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2c,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x2c,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x70,0x75,0x74,0x20,0x5b,0x31,0x2c,0x20,0x43,0x6f,0x75,0x74,0x2c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x68,0x2c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x77,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x5b,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x20,0x2d,0x20,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x34,0x5f,0x69,0x64,0x78,0x20,0x3c,0x20,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3e,0x3d,0x20,0x34,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x77,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x33,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x7a,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2b,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x79,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x69,0x66,0x20,0x28,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x20,0x20,0x20,0x20,0x20,0x3d,0x20,0x62,0x75,0x66,0x66,0x65,0x72,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2e,0x78,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x28,0x2a,0x28,0x69,0x6e,0x70,0x75,0x74,0x5f,0x70,0x74,0x72,0x20,0x2b,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x4e,0x43,0x34,0x48,0x57,0x34,0x20,0x5b,0x31,0x2c,0x20,0x66,0x77,0x2a,0x66,0x68,0x2c,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x31,0x2c,0x20,0x43,0x6f,0x75,0x74,0x2f,0x34,0x5d,0x78,0x20,0x6f,0x63,0x34,0xa,0x20,0x20,0x20,0x20,0x2f,0x2f,0x69,0x6e,0x64,0x65,0x78,0x3a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5b,0x30,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x20,0x30,0x2c,0x20,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x5d,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x69,0x6d,0x61,0x67,0x65,0x5f,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2a,0x28,0x28,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x5f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2b,0x33,0x29,0x2f,0x34,0x29,0x2b,0x69,0x6d,0x61,0x67,0x65,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x5f,0x76,0x61,0x6c,0x75,0x65,0x73,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2b,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x7d,0xa, } }, #endif { @@ -284,12 +296,12 @@ extern const std::map> OpenCLProgramMap }, { "binary", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x50,0x49,0x20,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x36,0x35,0x33,0x35,0x38,0x39,0x66,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x34,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0x2f,0x2f,0x57,0x43,0x34,0x2c,0x20,0x4e,0x48,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x2c,0x20,0x69,0x6e,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x30,0x2c,0x20,0x30,0x29,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x70,0x6f,0x73,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x30,0x2c,0x20,0x30,0x29,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x70,0x6f,0x73,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x30,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x70,0x6f,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x30,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x70,0x6f,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x70,0x6f,0x73,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x5f,0x70,0x72,0x65,0x6c,0x75,0x28,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x20,0x69,0x6e,0x74,0x32,0x20,0x77,0x68,0x49,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x74,0x34,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x4e,0x48,0x57,0x43,0x53,0x74,0x65,0x70,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6e,0x68,0x77,0x63,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x28,0x70,0x6f,0x73,0x2e,0x79,0x2f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x25,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x78,0x25,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x78,0x2f,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6e,0x68,0x77,0x63,0x2e,0x78,0x20,0x3c,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x26,0x26,0x20,0x6e,0x68,0x77,0x63,0x2e,0x77,0x20,0x3c,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6e,0x68,0x77,0x63,0x31,0x20,0x3d,0x20,0x6e,0x68,0x77,0x63,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x4e,0x48,0x57,0x43,0x53,0x74,0x65,0x70,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x31,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6e,0x68,0x77,0x63,0x31,0x2e,0x77,0x2a,0x77,0x68,0x49,0x6e,0x70,0x75,0x74,0x31,0x2e,0x78,0x2b,0x6e,0x68,0x77,0x63,0x31,0x2e,0x7a,0x2c,0x20,0x6e,0x68,0x77,0x63,0x31,0x2e,0x78,0x2a,0x77,0x68,0x49,0x6e,0x70,0x75,0x74,0x31,0x2e,0x79,0x2b,0x6e,0x68,0x77,0x63,0x31,0x2e,0x79,0x29,0x3b,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x5f,0x49,0x4e,0x50,0x55,0x54,0x5f,0x49,0x4e,0x54,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x70,0x6f,0x73,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x70,0x6f,0x73,0x31,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x70,0x6f,0x73,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x70,0x6f,0x73,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x70,0x6f,0x73,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x69,0x6d,0x61,0x67,0x65,0x43,0x6f,0x70,0x79,0x28,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6d,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x69,0x6d,0x61,0x67,0x65,0x5f,0x64,0x69,0x6d,0x28,0x69,0x6e,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3e,0x3d,0x20,0x64,0x69,0x6d,0x2e,0x78,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3e,0x3d,0x20,0x64,0x69,0x6d,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x70,0x6f,0x73,0x2c,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x70,0x6f,0x73,0x29,0x29,0x3b,0xa,0x7d,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x50,0x49,0x20,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x36,0x35,0x33,0x35,0x38,0x39,0x66,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x2f,0x2f,0x5b,0x4e,0x2c,0x48,0x2c,0x57,0x2c,0x43,0x34,0x5d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0x2f,0x2f,0x57,0x43,0x34,0x2c,0x20,0x4e,0x48,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x30,0x2c,0x20,0x69,0x6e,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x29,0x20,0x7b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x30,0x2c,0x20,0x30,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x30,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x70,0x6f,0x73,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x69,0x73,0x46,0x75,0x6c,0x6c,0x2e,0x79,0x20,0x3d,0x3d,0x20,0x30,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x30,0x2c,0x20,0x30,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x28,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x31,0x2e,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x20,0x65,0x6c,0x73,0x65,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x70,0x6f,0x73,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x61,0x63,0x74,0x69,0x76,0x61,0x74,0x69,0x6f,0x6e,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x66,0x6d,0x61,0x78,0x28,0x6f,0x75,0x74,0x2c,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x70,0x6f,0x73,0x2c,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x49,0x34,0x28,0x6f,0x75,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x69,0x6e,0x61,0x72,0x79,0x5f,0x70,0x72,0x65,0x6c,0x75,0x28,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x68,0x61,0x70,0x65,0x2c,0x20,0x69,0x6e,0x74,0x32,0x20,0x77,0x68,0x49,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x74,0x34,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x4e,0x48,0x57,0x43,0x53,0x74,0x65,0x70,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6e,0x68,0x77,0x63,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x28,0x70,0x6f,0x73,0x2e,0x79,0x2f,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x79,0x25,0x73,0x68,0x61,0x70,0x65,0x2e,0x79,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x78,0x25,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x2c,0x20,0x70,0x6f,0x73,0x2e,0x78,0x2f,0x73,0x68,0x61,0x70,0x65,0x2e,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6e,0x68,0x77,0x63,0x2e,0x78,0x20,0x3c,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x78,0x20,0x26,0x26,0x20,0x6e,0x68,0x77,0x63,0x2e,0x77,0x20,0x3c,0x20,0x73,0x68,0x61,0x70,0x65,0x2e,0x77,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6e,0x68,0x77,0x63,0x31,0x20,0x3d,0x20,0x6e,0x68,0x77,0x63,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x4e,0x48,0x57,0x43,0x53,0x74,0x65,0x70,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x31,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x6e,0x68,0x77,0x63,0x31,0x2e,0x77,0x2a,0x77,0x68,0x49,0x6e,0x70,0x75,0x74,0x31,0x2e,0x78,0x2b,0x6e,0x68,0x77,0x63,0x31,0x2e,0x7a,0x2c,0x20,0x6e,0x68,0x77,0x63,0x31,0x2e,0x78,0x2a,0x77,0x68,0x49,0x6e,0x70,0x75,0x74,0x31,0x2e,0x79,0x2b,0x6e,0x68,0x77,0x63,0x31,0x2e,0x79,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x30,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x70,0x6f,0x73,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x31,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x70,0x6f,0x73,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x49,0x34,0x28,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x70,0x6f,0x73,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x69,0x6d,0x61,0x67,0x65,0x43,0x6f,0x70,0x79,0x28,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x32,0x20,0x64,0x69,0x6d,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x69,0x6d,0x61,0x67,0x65,0x5f,0x64,0x69,0x6d,0x28,0x69,0x6e,0x70,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3e,0x3d,0x20,0x64,0x69,0x6d,0x2e,0x78,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3e,0x3d,0x20,0x64,0x69,0x6d,0x2e,0x79,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x70,0x6f,0x73,0x2c,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x49,0x34,0x28,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x70,0x6f,0x73,0x29,0x29,0x29,0x3b,0xa,0x7d,0xa, } }, #ifndef MNN_OPENCL_BUFFER_CLOSED { "loop_buf", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x50,0x49,0x20,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x36,0x35,0x33,0x35,0x38,0x39,0x66,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x74,0x69,0x6c,0x65,0x5f,0x62,0x75,0x66,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x4e,0x48,0x57,0x43,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x64,0x73,0x74,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x2a,0x20,0x62,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x63,0x20,0x2a,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x68,0x20,0x2a,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x77,0x20,0x2a,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x2a,0x20,0x62,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x68,0x20,0x2a,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x77,0x20,0x2a,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x73,0x74,0x5f,0x70,0x74,0x72,0x5b,0x30,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x63,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x73,0x74,0x5f,0x70,0x74,0x72,0x5b,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x63,0x20,0x2b,0x20,0x32,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x73,0x74,0x5f,0x70,0x74,0x72,0x5b,0x32,0x20,0x2a,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x63,0x20,0x2b,0x20,0x33,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x73,0x74,0x5f,0x70,0x74,0x72,0x5b,0x33,0x20,0x2a,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x70,0x61,0x63,0x6b,0x5f,0x62,0x75,0x66,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x4e,0x48,0x57,0x43,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x73,0x72,0x63,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x2a,0x20,0x62,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x63,0x20,0x2a,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x68,0x20,0x2a,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x77,0x20,0x2a,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x76,0x61,0x6c,0x75,0x65,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x26,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x34,0x20,0x26,0x26,0x20,0x28,0x69,0x20,0x2b,0x20,0x63,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x73,0x72,0x63,0x5f,0x70,0x74,0x72,0x5b,0x69,0x20,0x2a,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x2a,0x20,0x62,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x68,0x20,0x2a,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x77,0x20,0x2a,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4c,0x4f,0x4f,0x50,0x5f,0x42,0x49,0x4e,0x41,0x52,0x59,0x5f,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x72,0x6f,0x61,0x64,0x63,0x61,0x73,0x74,0x5f,0x62,0x69,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x38,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x2f,0x2f,0x28,0x62,0x61,0x74,0x63,0x68,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x2f,0x2f,0x20,0x6e,0x63,0x34,0x68,0x77,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x38,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x38,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x6f,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x6f,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x6f,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x25,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6e,0x6f,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x2f,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x6f,0x34,0x20,0x3d,0x20,0x63,0x6f,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x63,0x6f,0x76,0x65,0x63,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x28,0x63,0x6f,0x34,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x20,0x28,0x63,0x6f,0x34,0x20,0x2b,0x20,0x31,0x29,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x20,0x28,0x63,0x6f,0x34,0x20,0x2b,0x20,0x32,0x29,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x20,0x28,0x63,0x6f,0x34,0x20,0x2b,0x20,0x33,0x29,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x6e,0x6f,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x63,0x6f,0x76,0x65,0x63,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x6f,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x6f,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x77,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x28,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x29,0x3b,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x28,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x68,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x3b,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x63,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x3b,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x30,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x3d,0x20,0x28,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x31,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x3d,0x20,0x28,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x30,0x2c,0x20,0x69,0x6e,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x26,0x69,0x6e,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x31,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x26,0x69,0x6e,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x77,0x30,0x20,0x3d,0x20,0x77,0x20,0x25,0x20,0x28,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x68,0x30,0x20,0x3d,0x20,0x68,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x63,0x30,0x20,0x3d,0x20,0x63,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6e,0x30,0x20,0x3d,0x20,0x6e,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x77,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x77,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x68,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x68,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x63,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x63,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x6e,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x6e,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x34,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x6e,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x20,0x2b,0x20,0x63,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x20,0x2b,0x20,0x68,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x20,0x2b,0x20,0x77,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6e,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x63,0x63,0x34,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x63,0x63,0x34,0x20,0x25,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x5b,0x28,0x28,0x28,0x28,0x6e,0x63,0x34,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x63,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x20,0x2b,0x20,0x68,0x63,0x34,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x20,0x2b,0x20,0x77,0x63,0x34,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x63,0x63,0x34,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x77,0x30,0x20,0x3d,0x20,0x77,0x20,0x25,0x20,0x28,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x68,0x30,0x20,0x3d,0x20,0x68,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x63,0x30,0x20,0x3d,0x20,0x63,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6e,0x30,0x20,0x3d,0x20,0x6e,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x77,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x77,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x68,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x68,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x63,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x63,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x6e,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x6e,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x34,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x6e,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x20,0x2b,0x20,0x63,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x20,0x2b,0x20,0x68,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x20,0x2b,0x20,0x77,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6e,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x63,0x63,0x34,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x63,0x63,0x34,0x20,0x25,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x5b,0x28,0x28,0x28,0x28,0x6e,0x63,0x34,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x63,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x20,0x2b,0x20,0x68,0x63,0x34,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x20,0x2b,0x20,0x77,0x63,0x34,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x63,0x63,0x34,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x4c,0x4f,0x4f,0x50,0x5f,0x42,0x49,0x4e,0x41,0x52,0x59,0x5f,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x6f,0x75,0x74,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x28,0x28,0x28,0x28,0x6e,0x6f,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x6f,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x6f,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x6f,0x29,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x50,0x49,0x20,0x33,0x2e,0x31,0x34,0x31,0x35,0x39,0x32,0x36,0x35,0x33,0x35,0x38,0x39,0x66,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x74,0x69,0x6c,0x65,0x5f,0x62,0x75,0x66,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x4e,0x48,0x57,0x43,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x64,0x73,0x74,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x2a,0x20,0x62,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x63,0x20,0x2a,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x68,0x20,0x2a,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x77,0x20,0x2a,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x2a,0x20,0x62,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x68,0x20,0x2a,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x77,0x20,0x2a,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x73,0x74,0x5f,0x70,0x74,0x72,0x5b,0x30,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x63,0x20,0x2b,0x20,0x31,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x73,0x74,0x5f,0x70,0x74,0x72,0x5b,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x63,0x20,0x2b,0x20,0x32,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x73,0x74,0x5f,0x70,0x74,0x72,0x5b,0x32,0x20,0x2a,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x28,0x63,0x20,0x2b,0x20,0x33,0x20,0x3e,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x73,0x74,0x5f,0x70,0x74,0x72,0x5b,0x33,0x20,0x2a,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x5d,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x70,0x61,0x63,0x6b,0x5f,0x62,0x75,0x66,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x4e,0x48,0x57,0x43,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x3d,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x73,0x72,0x63,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x2a,0x20,0x62,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x63,0x20,0x2a,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x68,0x20,0x2a,0x20,0x79,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x77,0x20,0x2a,0x20,0x78,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x34,0x29,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x20,0x2a,0x76,0x61,0x6c,0x75,0x65,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x29,0x26,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x34,0x20,0x26,0x26,0x20,0x28,0x69,0x20,0x2b,0x20,0x63,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x29,0x73,0x72,0x63,0x5f,0x70,0x74,0x72,0x5b,0x69,0x20,0x2a,0x20,0x63,0x5f,0x73,0x72,0x63,0x5f,0x70,0x69,0x74,0x63,0x68,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x2a,0x20,0x62,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2a,0x20,0x63,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x68,0x20,0x2a,0x20,0x79,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x20,0x2b,0x20,0x77,0x20,0x2a,0x20,0x78,0x5f,0x64,0x73,0x74,0x5f,0x70,0x69,0x74,0x63,0x68,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4c,0x4f,0x4f,0x50,0x5f,0x42,0x49,0x4e,0x41,0x52,0x59,0x5f,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x62,0x72,0x6f,0x61,0x64,0x63,0x61,0x73,0x74,0x5f,0x62,0x69,0x6e,0x61,0x72,0x79,0x5f,0x62,0x75,0x66,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x30,0x2c,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x38,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x2f,0x2f,0x28,0x62,0x61,0x74,0x63,0x68,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x77,0x69,0x64,0x74,0x68,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2c,0x20,0x2f,0x2f,0x20,0x6e,0x63,0x34,0x68,0x77,0x34,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x38,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x34,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x38,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x6f,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x6f,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x6f,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x25,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6e,0x6f,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x2f,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x6f,0x34,0x20,0x3d,0x20,0x63,0x6f,0x20,0x3c,0x3c,0x20,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x63,0x6f,0x76,0x65,0x63,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x28,0x63,0x6f,0x34,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x20,0x28,0x63,0x6f,0x34,0x20,0x2b,0x20,0x31,0x29,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x20,0x28,0x63,0x6f,0x34,0x20,0x2b,0x20,0x32,0x29,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0x20,0x28,0x63,0x6f,0x34,0x20,0x2b,0x20,0x33,0x29,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x6e,0x6f,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x63,0x6f,0x76,0x65,0x63,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x6f,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x6f,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x77,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x28,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x29,0x3b,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x28,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x68,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x3b,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x63,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x3b,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6e,0x20,0x3d,0x20,0x6f,0x75,0x74,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x64,0x73,0x74,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x30,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x3d,0x20,0x28,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x72,0x63,0x31,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x20,0x3d,0x20,0x28,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x30,0x2c,0x20,0x69,0x6e,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x2a,0x20,0x69,0x6e,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x2a,0x29,0x26,0x69,0x6e,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x2a,0x20,0x69,0x6e,0x31,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x2a,0x29,0x26,0x69,0x6e,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x77,0x30,0x20,0x3d,0x20,0x77,0x20,0x25,0x20,0x28,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x68,0x30,0x20,0x3d,0x20,0x68,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x63,0x30,0x20,0x3d,0x20,0x63,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6e,0x30,0x20,0x3d,0x20,0x6e,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x77,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x77,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x68,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x68,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x63,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x63,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x6e,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x6e,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x34,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x6e,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x20,0x2b,0x20,0x63,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x20,0x2b,0x20,0x68,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x20,0x2b,0x20,0x77,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6e,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x63,0x63,0x34,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x63,0x63,0x34,0x20,0x25,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x29,0x69,0x6e,0x70,0x75,0x74,0x30,0x5b,0x28,0x28,0x28,0x28,0x6e,0x63,0x34,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x63,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x20,0x2b,0x20,0x68,0x63,0x34,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x30,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x20,0x2b,0x20,0x77,0x63,0x34,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x63,0x63,0x34,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x77,0x30,0x20,0x3d,0x20,0x77,0x20,0x25,0x20,0x28,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x68,0x30,0x20,0x3d,0x20,0x68,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x63,0x30,0x20,0x3d,0x20,0x63,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x6e,0x30,0x20,0x3d,0x20,0x6e,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x77,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x77,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x68,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x68,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x63,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x63,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x2a,0x20,0x6e,0x30,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x2a,0x29,0x26,0x6e,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x34,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x6e,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x31,0x20,0x2b,0x20,0x63,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x32,0x20,0x2b,0x20,0x68,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x33,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x73,0x34,0x20,0x2b,0x20,0x77,0x30,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x2f,0x3d,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x6e,0x63,0x34,0x20,0x3d,0x20,0x63,0x34,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x25,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x63,0x63,0x34,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x63,0x63,0x34,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x63,0x63,0x34,0x20,0x25,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x31,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x29,0x69,0x6e,0x70,0x75,0x74,0x31,0x5b,0x28,0x28,0x28,0x28,0x6e,0x63,0x34,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x63,0x34,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x79,0x20,0x2b,0x20,0x68,0x63,0x34,0x29,0x20,0x2a,0x20,0x73,0x72,0x63,0x31,0x43,0x34,0x5f,0x73,0x69,0x7a,0x65,0x2e,0x78,0x20,0x2b,0x20,0x77,0x63,0x34,0x29,0x20,0x2a,0x20,0x34,0x20,0x2b,0x20,0x63,0x63,0x34,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4c,0x4f,0x4f,0x50,0x5f,0x42,0x49,0x4e,0x41,0x52,0x59,0x5f,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x28,0x28,0x28,0x28,0x6e,0x6f,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x62,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x6f,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x6f,0x29,0x20,0x2a,0x20,0x64,0x73,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x6f,0x29,0x20,0x2a,0x20,0x34,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa, } }, #endif { @@ -302,7 +314,7 @@ extern const std::map> OpenCLProgramMap }, { "layernorm", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6c,0x61,0x79,0x65,0x72,0x6e,0x6f,0x72,0x6d,0x5f,0x77,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x67,0x61,0x6d,0x6d,0x61,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x65,0x74,0x61,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x62,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x68,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x2c,0x20,0x62,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6d,0x65,0x61,0x6e,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x2c,0x20,0x62,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x2f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x71,0x72,0x74,0x28,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x2c,0x20,0x62,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x67,0x61,0x6d,0x6d,0x61,0x5b,0x69,0x5d,0x20,0x2b,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x62,0x65,0x74,0x61,0x5b,0x69,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x2c,0x20,0x62,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6c,0x61,0x79,0x65,0x72,0x6e,0x6f,0x72,0x6d,0x5f,0x68,0x77,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x67,0x61,0x6d,0x6d,0x61,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x65,0x74,0x61,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x69,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x69,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x62,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6d,0x65,0x61,0x6e,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x69,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x69,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x62,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x2f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x71,0x72,0x74,0x28,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x69,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x69,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x62,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x67,0x61,0x6d,0x6d,0x61,0x5b,0x69,0x5d,0x20,0x2b,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x62,0x65,0x74,0x61,0x5b,0x69,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x62,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6c,0x61,0x79,0x65,0x72,0x6e,0x6f,0x72,0x6d,0x5f,0x63,0x68,0x77,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x67,0x61,0x6d,0x6d,0x61,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x65,0x74,0x61,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x75,0x6d,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x30,0x3b,0x20,0x63,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2d,0x20,0x31,0x3b,0x20,0x2b,0x2b,0x63,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x69,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x69,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x62,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x69,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x69,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x62,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x28,0x26,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x31,0x3b,0x20,0x69,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x5f,0x70,0x74,0x72,0x5b,0x30,0x5d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6d,0x65,0x61,0x6e,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x75,0x6d,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x30,0x3b,0x20,0x63,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2d,0x20,0x31,0x3b,0x20,0x2b,0x2b,0x63,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x69,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x69,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x62,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x69,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x69,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x62,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x31,0x3b,0x20,0x69,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x5f,0x70,0x74,0x72,0x5b,0x30,0x5d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x75,0x6d,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x2f,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x73,0x71,0x72,0x74,0x28,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x30,0x3b,0x20,0x63,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x3b,0x20,0x2b,0x2b,0x63,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x69,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x69,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x62,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x67,0x61,0x6d,0x6d,0x61,0x5b,0x63,0x20,0x2a,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x69,0x5d,0x20,0x2b,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x62,0x65,0x74,0x61,0x5b,0x63,0x20,0x2a,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x62,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6c,0x61,0x79,0x65,0x72,0x6e,0x6f,0x72,0x6d,0x5f,0x77,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x67,0x61,0x6d,0x6d,0x61,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x65,0x74,0x61,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x25,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x2f,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x6d,0x61,0x64,0x32,0x34,0x28,0x62,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x68,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x4d,0x53,0x4e,0x4f,0x52,0x4d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6d,0x65,0x61,0x6e,0x20,0x3d,0x20,0x30,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x2c,0x20,0x62,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6d,0x65,0x61,0x6e,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x2c,0x20,0x62,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x2f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x73,0x71,0x72,0x74,0x28,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x2c,0x20,0x62,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x67,0x61,0x6d,0x6d,0x61,0x5b,0x69,0x5d,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x62,0x65,0x74,0x61,0x5b,0x69,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x69,0x2c,0x20,0x62,0x68,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x2c,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6c,0x61,0x79,0x65,0x72,0x6e,0x6f,0x72,0x6d,0x5f,0x68,0x77,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x67,0x61,0x6d,0x6d,0x61,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x65,0x74,0x61,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x79,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x4d,0x53,0x4e,0x4f,0x52,0x4d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6d,0x65,0x61,0x6e,0x20,0x3d,0x20,0x30,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x69,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x69,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x62,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6d,0x65,0x61,0x6e,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x69,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x69,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x62,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x2f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x73,0x71,0x72,0x74,0x28,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x69,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x69,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x62,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x29,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x67,0x61,0x6d,0x6d,0x61,0x5b,0x69,0x5d,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x62,0x65,0x74,0x61,0x5b,0x69,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x62,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x2c,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x6c,0x61,0x79,0x65,0x72,0x6e,0x6f,0x72,0x6d,0x5f,0x63,0x68,0x77,0x28,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x67,0x61,0x6d,0x6d,0x61,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x62,0x65,0x74,0x61,0x2c,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x28,0x69,0x6e,0x74,0x33,0x29,0x28,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x2c,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x70,0x6f,0x73,0x2e,0x78,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x30,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x79,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x31,0x20,0x26,0x26,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x20,0x3c,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x7a,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x73,0x75,0x6d,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x3d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2b,0x20,0x33,0x29,0x20,0x2f,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x2a,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x5f,0x70,0x74,0x72,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x2a,0x29,0x28,0x26,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x52,0x4d,0x53,0x4e,0x4f,0x52,0x4d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6d,0x65,0x61,0x6e,0x20,0x3d,0x20,0x30,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x30,0x3b,0x20,0x63,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2d,0x20,0x31,0x3b,0x20,0x2b,0x2b,0x63,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x69,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x69,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x62,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x69,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x69,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x62,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x31,0x3b,0x20,0x69,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x5f,0x70,0x74,0x72,0x5b,0x30,0x5d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6d,0x65,0x61,0x6e,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x73,0x75,0x6d,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x20,0x3d,0x20,0x30,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x30,0x3b,0x20,0x63,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2d,0x20,0x31,0x3b,0x20,0x2b,0x2b,0x63,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x69,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x69,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x62,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x69,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x69,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x62,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x20,0x2b,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x79,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x7a,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x77,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x31,0x3b,0x20,0x69,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x5f,0x70,0x74,0x72,0x5b,0x30,0x5d,0x20,0x2b,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x5f,0x70,0x74,0x72,0x5b,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x2e,0x78,0x20,0x2b,0x20,0x69,0x6e,0x5f,0x73,0x75,0x6d,0x5f,0x6c,0x65,0x66,0x74,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x2b,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x20,0x2f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x73,0x75,0x6d,0x5f,0x73,0x69,0x7a,0x65,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x31,0x2e,0x30,0x66,0x20,0x2f,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x73,0x71,0x72,0x74,0x28,0x73,0x71,0x75,0x61,0x72,0x65,0x5f,0x73,0x75,0x6d,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x65,0x70,0x73,0x69,0x6c,0x6f,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x63,0x20,0x3d,0x20,0x30,0x3b,0x20,0x63,0x20,0x3c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x34,0x3b,0x20,0x2b,0x2b,0x63,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x77,0x20,0x3d,0x20,0x69,0x20,0x25,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x68,0x20,0x3d,0x20,0x69,0x20,0x2f,0x20,0x77,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x62,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x29,0x29,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x41,0x4d,0x4d,0x41,0x5f,0x42,0x45,0x54,0x41,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x2a,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x67,0x61,0x6d,0x6d,0x61,0x5b,0x63,0x20,0x2a,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x69,0x5d,0x20,0x2b,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x34,0x29,0x62,0x65,0x74,0x61,0x5b,0x63,0x20,0x2a,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x5f,0x73,0x69,0x7a,0x65,0x20,0x2b,0x20,0x69,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x69,0x6e,0x20,0x2d,0x20,0x6d,0x65,0x61,0x6e,0x29,0x20,0x2a,0x20,0x76,0x61,0x6c,0x75,0x65,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x2c,0x20,0x62,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x29,0x2c,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x6f,0x75,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x7d,0xa, } }, { "winogradTransformDest2_5_1", @@ -311,12 +323,12 @@ extern const std::map> OpenCLProgramMap #ifndef MNN_OPENCL_BUFFER_CLOSED { "cast_buf", - { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x63,0x61,0x73,0x74,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x54,0x4f,0x5f,0x42,0x4f,0x4f,0x4c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x3d,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x30,0x20,0x3f,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x30,0x20,0x3a,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x46,0x4c,0x4f,0x41,0x54,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa, } + { 0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x63,0x61,0x73,0x74,0x5f,0x62,0x75,0x66,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x20,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x2a,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x2a,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x29,0x20,0x2b,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x29,0x20,0x2a,0x20,0x77,0x69,0x64,0x74,0x68,0x20,0x2b,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x29,0x2a,0x34,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x54,0x4f,0x5f,0x42,0x4f,0x4f,0x4c,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x34,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x63,0x6f,0x6e,0x76,0x65,0x72,0x74,0x5f,0x69,0x6e,0x74,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x20,0x76,0x61,0x6c,0x75,0x65,0x20,0x3d,0x3d,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x30,0x20,0x3f,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x30,0x20,0x3a,0x20,0x28,0x69,0x6e,0x74,0x34,0x29,0x31,0x3b,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x76,0x61,0x6c,0x75,0x65,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x76,0x73,0x74,0x6f,0x72,0x65,0x34,0x28,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x34,0x28,0x76,0x6c,0x6f,0x61,0x64,0x34,0x28,0x30,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x29,0x2c,0x20,0x30,0x2c,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x20,0x2b,0x20,0x69,0x6e,0x70,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa, } }, #endif { "reduction", - { 0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x75,0x73,0x65,0x20,0x49,0x4e,0x49,0x54,0x5f,0x53,0x43,0x41,0x4c,0x41,0x52,0x5f,0x56,0x41,0x4c,0x55,0x45,0x2c,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x2c,0x20,0x46,0x49,0x4e,0x41,0x4c,0x5f,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x5f,0x4f,0x4e,0x5f,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x20,0x6d,0x61,0x63,0x72,0x6f,0x20,0x61,0x62,0x73,0x74,0x72,0x61,0x63,0x74,0x20,0x61,0x6e,0x64,0x20,0x73,0x69,0x6d,0x70,0x6c,0x69,0x66,0x79,0x20,0x63,0x6f,0x64,0x65,0xa,0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x20,0x64,0x69,0x6d,0x73,0x20,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x62,0x61,0x74,0x63,0x68,0xa,0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x20,0x6b,0x65,0x65,0x70,0x5f,0x64,0x69,0x6d,0x3d,0x46,0x61,0x6c,0x73,0x65,0xa,0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x66,0x69,0x78,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x72,0x65,0x2d,0x70,0x61,0x63,0x6b,0x20,0x70,0x72,0x6f,0x62,0x6c,0x65,0x6d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x65,0x64,0x75,0x63,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x68,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x63,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x20,0x3e,0x20,0x30,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x63,0x2b,0x69,0x2c,0x20,0x62,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x2c,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x63,0x2b,0x69,0x2c,0x20,0x62,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x68,0x29,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x65,0x64,0x75,0x63,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x23,0x69,0x66,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x20,0x3e,0x20,0x30,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x68,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x63,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2b,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x63,0x2c,0x20,0x62,0x68,0x2b,0x69,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x2c,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x68,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x63,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2b,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x63,0x2c,0x20,0x62,0x68,0x2b,0x69,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x63,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x65,0x64,0x75,0x63,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x23,0x69,0x66,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x20,0x3e,0x20,0x30,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x68,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x63,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x50,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x26,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x3b,0x20,0x69,0x20,0x2b,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x2a,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2b,0x77,0x63,0x2c,0x20,0x62,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x6f,0x75,0x74,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x6f,0x75,0x74,0x2e,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x6f,0x75,0x74,0x2e,0x77,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x2c,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x2a,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2b,0x77,0x63,0x2c,0x20,0x62,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x63,0x2c,0x20,0x62,0x68,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x68,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x63,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x20,0x2a,0x69,0x6e,0x50,0x74,0x72,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x2a,0x29,0x26,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x2a,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2b,0x77,0x63,0x2c,0x20,0x62,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x34,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x2a,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2b,0x77,0x63,0x2c,0x20,0x62,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x63,0x2c,0x20,0x62,0x68,0x29,0x2c,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x28,0x6f,0x75,0x74,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x65,0x64,0x75,0x63,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x23,0x69,0x66,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x20,0x3e,0x20,0x30,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x68,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x63,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2b,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x63,0x2c,0x20,0x69,0x2a,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2b,0x62,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x2c,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x63,0x2c,0x20,0x62,0x68,0x29,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x68,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x63,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2b,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x46,0x4c,0x4f,0x41,0x54,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x4c,0x4f,0x41,0x54,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x46,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x63,0x2c,0x20,0x69,0x2a,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2b,0x62,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x46,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x63,0x2c,0x20,0x62,0x68,0x29,0x2c,0x20,0x6f,0x75,0x74,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa, } + { 0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x75,0x73,0x65,0x20,0x49,0x4e,0x49,0x54,0x5f,0x53,0x43,0x41,0x4c,0x41,0x52,0x5f,0x56,0x41,0x4c,0x55,0x45,0x2c,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x2c,0x20,0x46,0x49,0x4e,0x41,0x4c,0x5f,0x4f,0x50,0x45,0x52,0x41,0x54,0x4f,0x52,0x5f,0x4f,0x4e,0x5f,0x43,0x48,0x41,0x4e,0x4e,0x45,0x4c,0x20,0x6d,0x61,0x63,0x72,0x6f,0x20,0x61,0x62,0x73,0x74,0x72,0x61,0x63,0x74,0x20,0x61,0x6e,0x64,0x20,0x73,0x69,0x6d,0x70,0x6c,0x69,0x66,0x79,0x20,0x63,0x6f,0x64,0x65,0xa,0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x20,0x64,0x69,0x6d,0x73,0x20,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x62,0x61,0x74,0x63,0x68,0xa,0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x73,0x75,0x70,0x70,0x6f,0x72,0x74,0x20,0x6b,0x65,0x65,0x70,0x5f,0x64,0x69,0x6d,0x3d,0x46,0x61,0x6c,0x73,0x65,0xa,0x2f,0x2f,0x20,0x54,0x4f,0x44,0x4f,0x3a,0x20,0x66,0x69,0x78,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x72,0x65,0x64,0x75,0x63,0x65,0x20,0x72,0x65,0x73,0x75,0x6c,0x74,0x20,0x72,0x65,0x2d,0x70,0x61,0x63,0x6b,0x20,0x70,0x72,0x6f,0x62,0x6c,0x65,0x6d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x4d,0x4e,0x4e,0x5f,0x53,0x55,0x50,0x50,0x4f,0x52,0x54,0x5f,0x46,0x50,0x31,0x36,0xa,0x23,0x70,0x72,0x61,0x67,0x6d,0x61,0x20,0x4f,0x50,0x45,0x4e,0x43,0x4c,0x20,0x45,0x58,0x54,0x45,0x4e,0x53,0x49,0x4f,0x4e,0x20,0x63,0x6c,0x5f,0x6b,0x68,0x72,0x5f,0x66,0x70,0x31,0x36,0x20,0x3a,0x20,0x65,0x6e,0x61,0x62,0x6c,0x65,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x32,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0x20,0x5c,0xa,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x2c,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x2c,0xa,0xa,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x2c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x29,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x31,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x30,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x32,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x31,0x20,0x7c,0x7c,0x20,0x69,0x6e,0x70,0x75,0x74,0x33,0x20,0x3e,0x3d,0x20,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x73,0x69,0x7a,0x65,0x5f,0x64,0x69,0x6d,0x32,0x29,0x20,0x7b,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5c,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x5f,0x74,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x20,0x3d,0x20,0x43,0x4c,0x4b,0x5f,0x4e,0x4f,0x52,0x4d,0x41,0x4c,0x49,0x5a,0x45,0x44,0x5f,0x43,0x4f,0x4f,0x52,0x44,0x53,0x5f,0x46,0x41,0x4c,0x53,0x45,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x41,0x44,0x44,0x52,0x45,0x53,0x53,0x5f,0x43,0x4c,0x41,0x4d,0x50,0x20,0x7c,0x20,0x43,0x4c,0x4b,0x5f,0x46,0x49,0x4c,0x54,0x45,0x52,0x5f,0x4e,0x45,0x41,0x52,0x45,0x53,0x54,0x3b,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x65,0x64,0x75,0x63,0x74,0x5f,0x77,0x69,0x64,0x74,0x68,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x68,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x63,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x20,0x3e,0x20,0x30,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x63,0x2b,0x69,0x2c,0x20,0x62,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x2c,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x63,0x2b,0x69,0x2c,0x20,0x62,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x68,0x29,0x2c,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x49,0x34,0x28,0x6f,0x75,0x74,0x29,0x29,0x3b,0xa,0x7d,0xa,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x65,0x64,0x75,0x63,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x23,0x69,0x66,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x20,0x3e,0x20,0x30,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x68,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x63,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2b,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x63,0x2c,0x20,0x62,0x68,0x2b,0x69,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x2c,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x2f,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x25,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x68,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x63,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2b,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x63,0x2c,0x20,0x62,0x68,0x2b,0x69,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x63,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x29,0x2c,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x49,0x34,0x28,0x6f,0x75,0x74,0x29,0x29,0x3b,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x65,0x64,0x75,0x63,0x74,0x5f,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x23,0x69,0x66,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x20,0x3e,0x20,0x30,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x68,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x63,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x20,0x2a,0x69,0x6e,0x50,0x74,0x72,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x2a,0x29,0x26,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x3b,0x20,0x69,0x20,0x2b,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x2a,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2b,0x77,0x63,0x2c,0x20,0x62,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x6f,0x75,0x74,0x2e,0x79,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x6f,0x75,0x74,0x2e,0x7a,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x6f,0x75,0x74,0x2e,0x77,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x2c,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x2a,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2b,0x77,0x63,0x2c,0x20,0x62,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x69,0x6e,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e,0x78,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x63,0x2c,0x20,0x62,0x68,0x29,0x2c,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x29,0x28,0x6f,0x75,0x74,0x2e,0x78,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x68,0x20,0x3d,0x20,0x62,0x61,0x74,0x63,0x68,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2b,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x63,0x20,0x3d,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x20,0x2d,0x20,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x20,0x2a,0x20,0x34,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x20,0x2a,0x69,0x6e,0x50,0x74,0x72,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x2a,0x29,0x26,0x69,0x6e,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x69,0x2a,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2b,0x77,0x63,0x2c,0x20,0x62,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x34,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x28,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2d,0x20,0x31,0x29,0x2a,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2b,0x77,0x63,0x2c,0x20,0x62,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x6a,0x20,0x3d,0x20,0x30,0x3b,0x20,0x6a,0x20,0x3c,0x20,0x72,0x65,0x6d,0x61,0x69,0x6e,0x3b,0x20,0x2b,0x2b,0x6a,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x50,0x74,0x72,0x5b,0x6a,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x63,0x2c,0x20,0x62,0x68,0x29,0x2c,0x20,0x28,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x29,0x28,0x6f,0x75,0x74,0x2c,0x20,0x30,0x2c,0x20,0x30,0x2c,0x20,0x30,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa,0x5f,0x5f,0x6b,0x65,0x72,0x6e,0x65,0x6c,0x20,0x76,0x6f,0x69,0x64,0x20,0x72,0x65,0x64,0x75,0x63,0x74,0x5f,0x62,0x61,0x74,0x63,0x68,0x28,0x47,0x4c,0x4f,0x42,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5f,0x33,0x5f,0x44,0x49,0x4d,0x53,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x72,0x65,0x61,0x64,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x77,0x72,0x69,0x74,0x65,0x5f,0x6f,0x6e,0x6c,0x79,0x20,0x69,0x6d,0x61,0x67,0x65,0x32,0x64,0x5f,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x2c,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x5f,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6f,0x75,0x74,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x20,0x7b,0xa,0x23,0x69,0x66,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x20,0x3e,0x20,0x30,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x72,0x6f,0x75,0x70,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x68,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x63,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2b,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x6c,0x69,0x64,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x6c,0x6f,0x63,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x6c,0x6f,0x63,0x61,0x6c,0x20,0x73,0x75,0x6d,0x5b,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x5d,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x6c,0x69,0x64,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x3b,0x20,0x69,0x2b,0x3d,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x63,0x2c,0x20,0x69,0x2a,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2b,0x62,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x6f,0x75,0x74,0x3b,0xa,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x53,0x49,0x5a,0x45,0x2f,0x32,0x3b,0x20,0x69,0x20,0x3e,0x20,0x30,0x3b,0x20,0x69,0x20,0x2f,0x3d,0x20,0x32,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x6c,0x69,0x64,0x20,0x3c,0x20,0x69,0x29,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x5d,0x2c,0x20,0x73,0x75,0x6d,0x5b,0x6c,0x69,0x64,0x20,0x2b,0x20,0x69,0x5d,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x61,0x72,0x72,0x69,0x65,0x72,0x28,0x43,0x4c,0x4b,0x5f,0x4c,0x4f,0x43,0x41,0x4c,0x5f,0x4d,0x45,0x4d,0x5f,0x46,0x45,0x4e,0x43,0x45,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x73,0x75,0x6d,0x5b,0x30,0x5d,0x3b,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x63,0x2c,0x20,0x62,0x68,0x29,0x2c,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x49,0x34,0x28,0x6f,0x75,0x74,0x29,0x29,0x3b,0xa,0x23,0x65,0x6c,0x73,0x65,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x30,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x31,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x65,0x74,0x5f,0x67,0x6c,0x6f,0x62,0x61,0x6c,0x5f,0x69,0x64,0x28,0x32,0x29,0x3b,0xa,0xa,0x20,0x20,0x20,0x20,0x44,0x45,0x41,0x4c,0x5f,0x4e,0x4f,0x4e,0x5f,0x55,0x4e,0x49,0x46,0x4f,0x52,0x4d,0x5f,0x44,0x49,0x4d,0x33,0x28,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x2c,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x2c,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x62,0x68,0x20,0x3d,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x69,0x6e,0x74,0x20,0x77,0x63,0x20,0x3d,0x20,0x63,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x5f,0x69,0x64,0x78,0x2a,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x2b,0x77,0x69,0x64,0x74,0x68,0x5f,0x69,0x64,0x78,0x3b,0xa,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x62,0x61,0x74,0x63,0x68,0x4f,0x66,0x66,0x73,0x65,0x74,0x20,0x3d,0x20,0x69,0x6e,0x70,0x75,0x74,0x43,0x68,0x61,0x6e,0x6e,0x65,0x6c,0x42,0x6c,0x6f,0x63,0x6b,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x20,0x2a,0x20,0x69,0x6e,0x70,0x75,0x74,0x57,0x69,0x64,0x74,0x68,0x3b,0xa,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x28,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x29,0x56,0x41,0x4c,0x55,0x45,0x3b,0xa,0x20,0x20,0x20,0x20,0x66,0x6f,0x72,0x28,0x69,0x6e,0x74,0x20,0x69,0x20,0x3d,0x20,0x30,0x3b,0x20,0x69,0x20,0x3c,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x3b,0x20,0x2b,0x2b,0x69,0x29,0x7b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x49,0x4e,0x50,0x55,0x54,0x5f,0x54,0x59,0x50,0x45,0x5f,0x49,0x34,0x20,0x69,0x6e,0x20,0x3d,0x20,0x52,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x69,0x6e,0x70,0x75,0x74,0x2c,0x20,0x53,0x41,0x4d,0x50,0x4c,0x45,0x52,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x63,0x2c,0x20,0x69,0x2a,0x69,0x6e,0x70,0x75,0x74,0x48,0x65,0x69,0x67,0x68,0x74,0x2b,0x62,0x68,0x29,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x4f,0x50,0x45,0x52,0x41,0x54,0x45,0x28,0x6f,0x75,0x74,0x2c,0x20,0x69,0x6e,0x29,0x3b,0xa,0x20,0x20,0x20,0x20,0x7d,0xa,0x23,0x69,0x66,0x64,0x65,0x66,0x20,0x47,0x45,0x54,0x5f,0x41,0x56,0x47,0xa,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x6f,0x75,0x74,0x20,0x2f,0x20,0x69,0x6e,0x70,0x75,0x74,0x42,0x61,0x74,0x63,0x68,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x20,0x20,0x20,0x20,0x57,0x49,0x5f,0x44,0x41,0x54,0x41,0x28,0x6f,0x75,0x74,0x70,0x75,0x74,0x2c,0x20,0x28,0x69,0x6e,0x74,0x32,0x29,0x28,0x77,0x63,0x2c,0x20,0x62,0x68,0x29,0x2c,0x20,0x43,0x4f,0x4e,0x56,0x45,0x52,0x54,0x5f,0x4f,0x55,0x54,0x50,0x55,0x54,0x5f,0x49,0x34,0x28,0x6f,0x75,0x74,0x29,0x29,0x3b,0xa,0x23,0x65,0x6e,0x64,0x69,0x66,0xa,0x7d,0xa,0xa, } }, }; } diff --git a/source/backend/opencl/execution/cl/pooling_subgroup_buf.cl b/source/backend/opencl/execution/cl/pooling_subgroup_buf.cl index 365ac6ce8..3f4ebd6fe 100644 --- a/source/backend/opencl/execution/cl/pooling_subgroup_buf.cl +++ b/source/backend/opencl/execution/cl/pooling_subgroup_buf.cl @@ -36,7 +36,11 @@ __kernel void pooling_c4_c4(GLOBAL_SIZE_3_DIMS __global const FLOAT *input, #ifdef POOL_AVG FLOAT4 result = (FLOAT4)(0); const int inp_offset = (((b_idx*in_channel_block+c_idx)*input_shape.x+ih_start)*input_shape.y+iw_start+input_pad_left)*4; +#ifdef COUNT_INCLUDE_PADDING + int total_count = (min(ih_start + KERNEL_Y, input_shape.x + pad_shape.x) - ih_start) * (min(iw_start + KERNEL_X, input_shape.y + pad_shape.y) - iw_start); +#else int total_count = 0; +#endif for(int kh=0; kh= input_shape.x) { @@ -49,7 +53,9 @@ __kernel void pooling_c4_c4(GLOBAL_SIZE_3_DIMS __global const FLOAT *input, } FLOAT4 inp_data = vload4(0, input+inp_offset+(kh*input_shape.y+kw)*4); result += inp_data; +#ifndef COUNT_INCLUDE_PADDING total_count++; +#endif } } result = result / (FLOAT4)(1.0*total_count); @@ -114,7 +120,11 @@ __kernel void pooling_c4_c16(GLOBAL_SIZE_3_DIMS __global const FLOAT *input, #ifdef POOL_AVG FLOAT4 result = (FLOAT4)(0); const int inp_offset = (((b_idx*in_channel_block+c_idx)*input_shape.x+ih_start)*input_shape.y+iw_start+input_pad_left)*4; + #ifdef COUNT_INCLUDE_PADDING + int total_count = (min(ih_start + KERNEL_Y, input_shape.x + pad_shape.x) - ih_start) * (min(iw_start + KERNEL_X, input_shape.y + pad_shape.y) - iw_start); +#else int total_count = 0; +#endif for(int kh=0; kh= input_shape.x) { @@ -127,7 +137,9 @@ __kernel void pooling_c4_c16(GLOBAL_SIZE_3_DIMS __global const FLOAT *input, } FLOAT4 inp_data = vload4(0, input+inp_offset+(kh*input_shape.y+kw)*4); result += inp_data; +#ifndef COUNT_INCLUDE_PADDING total_count++; +#endif } } result = result / (FLOAT4)(1.0*total_count); @@ -167,7 +179,7 @@ __kernel void pooling_c4_c16(GLOBAL_SIZE_3_DIMS __global const FLOAT *input, for(int i = 0; i < output_pad_left; ++i){ vstore4((FLOAT4)0, 0, output + pad_offset + i * 16); } - pad_offset += (output_shape.x + output_pad_left) * 16; + pad_offset += (output_shape.y + output_pad_left) * 16; for(int i = 0; i < output_pad_right; ++i){ vstore4((FLOAT4)0, 0, output + pad_offset + i * 16); } @@ -204,11 +216,16 @@ __kernel void pooling_c16_c16(GLOBAL_SIZE_3_DIMS __global const FLOAT *input, #ifdef POOL_AVG FLOAT8 result = (FLOAT8)(0); FLOAT8 w_start = (FLOAT8)(iw_start, iw_start + STRIDE_X, iw_start + STRIDE_X * 2, iw_start + STRIDE_X * 3, iw_start + STRIDE_X * 4, iw_start + STRIDE_X * 5, iw_start + STRIDE_X * 6, iw_start + STRIDE_X * 7); +#ifdef COUNT_INCLUDE_PADDING + FLOAT8 w_size = fmin(w_start + KERNEL_X, input_shape.y + pad_shape.y) - w_start; + FLOAT8 total_count = (FLOAT8)(min(ih_start + KERNEL_Y, input_shape.x + pad_shape.x) - ih_start) * w_size; +#else w_start = fmax(w_start, (FLOAT8)0); FLOAT8 w_end = fmin(w_start + KERNEL_X, (FLOAT8)input_shape.y); float h_start = fmax((float)ih_start, 0); float h_end = fmin(h_start + KERNEL_Y, (float)input_shape.x); FLOAT8 total_count = (w_end - w_start) * (FLOAT8)(h_end - h_start); +#endif #else FLOAT8 result = (FLOAT8)(-FLT_MAX); #if RETURN_REDICE @@ -347,11 +364,16 @@ __kernel void pooling_c16_c4(GLOBAL_SIZE_3_DIMS __global const FLOAT *input, #ifdef POOL_AVG FLOAT8 result = (FLOAT8)(0); FLOAT8 w_start = (FLOAT8)(iw_start, iw_start + STRIDE_X, iw_start + STRIDE_X * 2, iw_start + STRIDE_X * 3, iw_start + STRIDE_X * 4, iw_start + STRIDE_X * 5, iw_start + STRIDE_X * 6, iw_start + STRIDE_X * 7); +#ifdef COUNT_INCLUDE_PADDING + FLOAT8 w_size = fmin(w_start + KERNEL_X, input_shape.y + pad_shape.y) - w_start; + FLOAT8 total_count = (FLOAT8)(min(ih_start + KERNEL_Y, input_shape.x + pad_shape.x) - ih_start) * w_size; +#else w_start = fmax(w_start, (FLOAT8)0); FLOAT8 w_end = fmin(w_start + KERNEL_X, (FLOAT8)input_shape.y); float h_start = fmax((float)ih_start, 0); float h_end = fmin(h_start + KERNEL_Y, (float)input_shape.x); FLOAT8 total_count = (w_end - w_start) * (FLOAT8)(h_end - h_start); +#endif #else FLOAT8 result = (FLOAT8)(-FLT_MAX); #if RETURN_REDICE diff --git a/source/backend/opencl/execution/cl/range.cl b/source/backend/opencl/execution/cl/range.cl index 28a9d8ff5..982cf0941 100644 --- a/source/backend/opencl/execution/cl/range.cl +++ b/source/backend/opencl/execution/cl/range.cl @@ -35,8 +35,8 @@ __kernel void range(GLOBAL_SIZE_3_DIMS int index = (((batch_idx * channel) + channel4) * height + height_idx) * width + width_idx; int size = height * width; int4 index4 = (int4)(index, index + size, index + size * 2, index + size * 3); - FLOAT start = RI_F(input0, SAMPLER, (int2)(0, 0)).x; - FLOAT step = RI_F(input2, SAMPLER, (int2)(0, 0)).x; - FLOAT4 value = (FLOAT4)start + CONVERT_FLOAT4(index4) * (FLOAT4)step; - WI_F(output, (int2)(cw, bh), value); + INPUT_TYPE_I start = RI_DATA(input0, SAMPLER, (int2)(0, 0)).x; + INPUT_TYPE_I step = RI_DATA(input2, SAMPLER, (int2)(0, 0)).x; + OUTPUT_TYPE_I4 value = (OUTPUT_TYPE_I4)start + CONVERT_OUTPUT_I4(index4) * (OUTPUT_TYPE_I4)step; + WI_DATA(output, (int2)(cw, bh), value); } diff --git a/source/backend/opencl/execution/cl/range_buf.cl b/source/backend/opencl/execution/cl/range_buf.cl index 3795de5ce..79ea69a69 100644 --- a/source/backend/opencl/execution/cl/range_buf.cl +++ b/source/backend/opencl/execution/cl/range_buf.cl @@ -11,9 +11,9 @@ __private const int global_size_dim0, __private const int global_size_dim1, __pr } __kernel void range_buf(GLOBAL_SIZE_3_DIMS - __global const FLOAT* input0, - __global const FLOAT* input2, - __global FLOAT* output, + __global const INPUT_TYPE* input0, + __global const INPUT_TYPE* input2, + __global OUTPUT_TYPE* output, __private const int width, __private const int height, __private const int channel, @@ -33,8 +33,8 @@ __kernel void range_buf(GLOBAL_SIZE_3_DIMS int index = (((batch_idx * channel) + channel4) * height + height_idx) * width + width_idx; int size = height * width; int4 index4 = (int4)(index, index + size, index + size * 2, index + size * 3); - FLOAT start = input0[0]; - FLOAT step = input2[0]; - FLOAT4 value = (FLOAT4)start + CONVERT_FLOAT4(index4) * (FLOAT4)step; + INPUT_TYPE start = input0[0]; + INPUT_TYPE step = input2[0]; + OUTPUT_TYPE4 value = (OUTPUT_TYPE4)start + CONVERT_OUTPUT4(index4) * (OUTPUT_TYPE4)step; vstore4(value, 0, output + offset); } diff --git a/source/backend/opencl/execution/cl/raster.cl b/source/backend/opencl/execution/cl/raster.cl index 9d46caeee..6033514d5 100644 --- a/source/backend/opencl/execution/cl/raster.cl +++ b/source/backend/opencl/execution/cl/raster.cl @@ -22,14 +22,14 @@ __constant sampler_t SAMPLER = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP | __kernel void buffer_set_zero( GLOBAL_SIZE_2_DIMS - __global FLOAT *output + __global OUTPUT_TYPE *output ) { const int x = get_global_id(0); const int y = get_global_id(1); DEAL_NON_UNIFORM_DIM2(x, y); - output[y*global_size_dim0 + x] = (FLOAT)(0.0f); + output[y*global_size_dim0 + x] = (OUTPUT_TYPE)(0); } __kernel void image_set_zero( @@ -41,42 +41,21 @@ __kernel void image_set_zero( DEAL_NON_UNIFORM_DIM2(x, y); - WI_F(output, (int2)(x, y), (FLOAT4)(0.0f)); + WI_DATA(output, (int2)(x, y), (OUTPUT_TYPE_I4)(0)); } -__kernel void raster_buffer( +__kernel void raster_buffer_direct( GLOBAL_SIZE_3_DIMS - __global FLOAT *input, - __private const int inputOffset, - __private const int inputStride0, - __private const int inputStride1, - __private const int inputStride2, - __global FLOAT *output, - __private const int outputOffset, - __private const int outputStride0, - __private const int outputStride1, - __private const int outputStride2 - ) { - const int x = get_global_id(0); - const int y = get_global_id(1); - const int z = get_global_id(2); - - DEAL_NON_UNIFORM_DIM3(x, y, z); - - int inputIndex = inputOffset + z * inputStride0 + y * inputStride1 + x * inputStride2; - int outputIndex = outputOffset + z * outputStride0 + y * outputStride1 + x * outputStride2; - output[outputIndex] = input[inputIndex]; -} - -__kernel void raster_buffer_combine( - GLOBAL_SIZE_3_DIMS - __global FLOAT *input, + __read_only image2d_t input, __private const int inputOffset, __private const int combineSrcOffset, __private const int inputStride0, __private const int inputStride1, __private const int inputStride2, - __global FLOAT *output, + __private const int src_width, + __private const int src_height, + __private const int src_channel, + __global OUTPUT_TYPE *output, __private const int outputOffset, __private const int combineDstOffset, __private const int outputStride0, @@ -94,10 +73,23 @@ __kernel void raster_buffer_combine( int inputIndex = inputOffset + id * combineSrcOffset + z * inputStride0 + y * inputStride1 + x * inputStride2; int outputIndex = outputOffset + id * combineDstOffset + z * outputStride0 + y * outputStride1 + x * outputStride2; - output[outputIndex] = input[inputIndex]; +#ifdef INPUT_DATA_FORMAT_NHWC + int in_c = inputIndex % src_channel; inputIndex /= src_channel; + int in_w = inputIndex % src_width; inputIndex /= src_width; + int in_h = inputIndex % src_height; + int in_b = inputIndex / src_height; +#else + int in_w = inputIndex % src_width; inputIndex /= src_width; + int in_h = inputIndex % src_height; inputIndex /= src_height; + int in_c = inputIndex % src_channel; + int in_b = inputIndex / src_channel; +#endif + int2 coord = (int2)((in_c / 4) * src_width + in_w, in_b * src_height + in_h); + INPUT_TYPE_I4 value = RI_DATA(input, SAMPLER, coord); + INPUT_TYPE_I* value_ptr = (INPUT_TYPE_I*)&value; + output[outputIndex] = (OUTPUT_TYPE)value_ptr[in_c % 4]; } - __kernel void raster_image( GLOBAL_SIZE_3_DIMS __read_only image2d_t input, @@ -146,6 +138,6 @@ __kernel void raster_image( int out_idx0 = out_idx_c4*outputWidth + out_idx_w; int out_idx1 = out_idx_n*outputHeight + out_idx_h; - FLOAT4 out = RI_F(input, SAMPLER, (int2)(inp_idx0, inp_idx1)); - WI_F(output, (int2)(out_idx0, out_idx1), out); + INPUT_TYPE_I4 out = RI_DATA(input, SAMPLER, (int2)(inp_idx0, inp_idx1)); + WI_DATA(output, (int2)(out_idx0, out_idx1), CONVERT_OUTPUT_I4(out)); } diff --git a/source/backend/opencl/execution/cl/raster_buf.cl b/source/backend/opencl/execution/cl/raster_buf.cl index c34408290..8c1cabd9c 100644 --- a/source/backend/opencl/execution/cl/raster_buf.cl +++ b/source/backend/opencl/execution/cl/raster_buf.cl @@ -22,14 +22,14 @@ __constant sampler_t SAMPLER = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP | __kernel void buffer_set_zero( GLOBAL_SIZE_2_DIMS - __global FLOAT *output + __global OUTPUT_TYPE *output ) { const int x = get_global_id(0); const int y = get_global_id(1); DEAL_NON_UNIFORM_DIM2(x, y); - output[y*global_size_dim0 + x] = (FLOAT)(0.0f); + output[y*global_size_dim0 + x] = (OUTPUT_TYPE)(0.0f); } __kernel void image_set_zero( @@ -46,12 +46,12 @@ __kernel void image_set_zero( __kernel void raster_buffer( GLOBAL_SIZE_3_DIMS - __global FLOAT *input, + __global INPUT_TYPE *input, __private const int inputOffset, __private const int inputStride0, __private const int inputStride1, __private const int inputStride2, - __global FLOAT *output, + __global OUTPUT_TYPE *output, __private const int outputOffset, __private const int outputStride0, __private const int outputStride1, @@ -65,13 +65,13 @@ __kernel void raster_buffer( int inputIndex = inputOffset + z * inputStride0 + y * inputStride1 + x * inputStride2; int outputIndex = outputOffset + z * outputStride0 + y * outputStride1 + x * outputStride2; - output[outputIndex] = input[inputIndex]; + output[outputIndex] = (OUTPUT_TYPE)input[inputIndex]; } __kernel void raster_nc4hw4_buffer( GLOBAL_SIZE_3_DIMS - __global FLOAT *input, + __global INPUT_TYPE *input, __private const int inputOffset, __private const int inputStride0, __private const int inputStride1, @@ -79,7 +79,7 @@ __kernel void raster_nc4hw4_buffer( __private const int inputHeight, __private const int inputWidth, __private const int inputChannel, - __global FLOAT *output, + __global OUTPUT_TYPE *output, __private const int outputOffset, __private const int outputStride0, __private const int outputStride1, @@ -97,6 +97,72 @@ __kernel void raster_nc4hw4_buffer( int inputIndex = inputOffset + (z * inputStride0 + y * inputStride1 + x * inputStride2) * 4; int outputIndex = outputOffset + (z * outputStride0 + y * outputStride1 + x * outputStride2) * 4; - FLOAT4 values = vload4(0, (__global FLOAT *)(input+inputIndex)); - vstore4(values, 0, (__global FLOAT *)(output+outputIndex)); + vstore4(CONVERT_OUTPUT4(vload4(0, input+inputIndex)), 0, output+outputIndex); +} + +__kernel void raster_direct_buffer( + GLOBAL_SIZE_3_DIMS + __private const int size_x, + __global INPUT_TYPE *input, + __private const int inputOffset, + __private const int combineSrcOffset, + __private const int inputStride0, + __private const int inputStride1, + __private const int inputStride2, + __private const int src_width, + __private const int src_height, + __private const int src_channel, + __global OUTPUT_TYPE *output, + __private const int outputOffset, + __private const int combineDstOffset, + __private const int outputStride0, + __private const int outputStride1, + __private const int outputStride2, + __private const int dst_width, + __private const int dst_height, + __private const int dst_channel + ) { + const int idx = get_global_id(0); + const int y = get_global_id(1); + const int z = get_global_id(2); + + DEAL_NON_UNIFORM_DIM3(idx, y, z); + const int x = idx % size_x; + const int id = idx / size_x; + + int inputIndex = inputOffset + id * combineSrcOffset + z * inputStride0 + y * inputStride1 + x * inputStride2; + int outputIndex = outputOffset + id * combineDstOffset + z * outputStride0 + y * outputStride1 + x * outputStride2; +#ifdef INPUT_DATA_FORMAT_NHWC + int in_c = inputIndex % src_channel; inputIndex /= src_channel; + int in_w = inputIndex % src_width; inputIndex /= src_width; + int in_h = inputIndex % src_height; + int in_b = inputIndex / src_height; + int src_channel4 = (src_channel + 3) / 4; + int inputIndexC4 = (((in_b * src_channel4 + (in_c / 4)) * src_height + in_h) * src_width + in_w) * 4 + (in_c % 4); +#else + int in_w = inputIndex % src_width; inputIndex /= src_width; + int in_h = inputIndex % src_height; inputIndex /= src_height; + int in_c = inputIndex % src_channel; + int in_b = inputIndex / src_channel; + int src_channel4 = (src_channel + 3) / 4; + int inputIndexC4 = (((in_b * src_channel4 + (in_c / 4)) * src_height + in_h) * src_width + in_w) * 4 + (in_c % 4); +#endif + +#ifdef OUTPUT_DATA_FORMAT_NHWC + int out_c = outputIndex % dst_channel; outputIndex /= dst_channel; + int out_w = outputIndex % dst_width; outputIndex /= dst_width; + int out_h = outputIndex % dst_height; + int out_b = outputIndex / dst_height; + int dst_channel4 = (dst_channel + 3) / 4; + int outputIndexC4 = (((out_b * dst_channel4 + (out_c / 4)) * dst_height + out_h) * dst_width + out_w) * 4 + (out_c % 4); +#else + int out_w = outputIndex % dst_width; outputIndex /= dst_width; + int out_h = outputIndex % dst_height; outputIndex /= dst_height; + int out_c = outputIndex % dst_channel; + int out_b = outputIndex / dst_channel; + int dst_channel4 = (dst_channel + 3) / 4; + int outputIndexC4 = (((out_b * dst_channel4 + (out_c / 4)) * dst_height + out_h) * dst_width + out_w) * 4 + (out_c % 4); +#endif + + output[outputIndexC4] = (OUTPUT_TYPE)input[inputIndexC4]; } diff --git a/source/backend/opencl/execution/cl/reduction.cl b/source/backend/opencl/execution/cl/reduction.cl index 1b6c74be8..dc90ba046 100644 --- a/source/backend/opencl/execution/cl/reduction.cl +++ b/source/backend/opencl/execution/cl/reduction.cl @@ -45,13 +45,13 @@ __kernel void reduct_width(GLOBAL_SIZE_3_DIMS const int channel_idx = batch_channel_idx % outputChannelBlock; const int bh = batch_idx*inputHeight+height_idx; const int wc = channel_idx*inputWidth; - FLOAT4 out = (FLOAT4)VALUE; + INPUT_TYPE_I4 out = (INPUT_TYPE_I4)VALUE; #if LOCAL_SIZE > 0 const int lid = get_local_id(0); - FLOAT4 local sum[LOCAL_SIZE]; + INPUT_TYPE_I4 local sum[LOCAL_SIZE]; for(int i = lid; i < inputWidth; i+=LOCAL_SIZE){ - FLOAT4 in = RI_F(input, SAMPLER, (int2)(wc+i, bh)); + INPUT_TYPE_I4 in = RI_DATA(input, SAMPLER, (int2)(wc+i, bh)); out = OPERATE(out, in); } sum[lid] = out; @@ -64,7 +64,7 @@ __kernel void reduct_width(GLOBAL_SIZE_3_DIMS out = sum[0]; #else for(int i = 0; i < inputWidth; ++i){ - FLOAT4 in = RI_F(input, SAMPLER, (int2)(wc+i, bh)); + INPUT_TYPE_I4 in = RI_DATA(input, SAMPLER, (int2)(wc+i, bh)); out = OPERATE(out, in); } #endif @@ -72,7 +72,7 @@ __kernel void reduct_width(GLOBAL_SIZE_3_DIMS #ifdef GET_AVG out = out / inputWidth; #endif - WI_F(output, (int2)(channel_idx, bh), out); + WI_DATA(output, (int2)(channel_idx, bh), CONVERT_OUTPUT_I4(out)); } @@ -103,10 +103,10 @@ __kernel void reduct_height(GLOBAL_SIZE_3_DIMS const int bh = batch_idx*inputHeight; const int wc = channel_idx*inputWidth+width_idx; const int lid = get_local_id(0); - FLOAT4 local sum[LOCAL_SIZE]; - FLOAT4 out = (FLOAT4)VALUE; + INPUT_TYPE_I4 local sum[LOCAL_SIZE]; + INPUT_TYPE_I4 out = (INPUT_TYPE_I4)VALUE; for(int i = lid; i < inputHeight; i+=LOCAL_SIZE){ - FLOAT4 in = RI_F(input, SAMPLER, (int2)(wc, bh+i)); + INPUT_TYPE_I4 in = RI_DATA(input, SAMPLER, (int2)(wc, bh+i)); out = OPERATE(out, in); } sum[lid] = out; @@ -130,9 +130,9 @@ __kernel void reduct_height(GLOBAL_SIZE_3_DIMS const int bh = batch_idx*inputHeight; const int wc = channel_idx*inputWidth+width_idx; - FLOAT4 out = (FLOAT4)VALUE; + INPUT_TYPE_I4 out = (INPUT_TYPE_I4)VALUE; for(int i = 0; i < inputHeight; ++i){ - FLOAT4 in = RI_F(input, SAMPLER, (int2)(wc, bh+i)); + INPUT_TYPE_I4 in = RI_DATA(input, SAMPLER, (int2)(wc, bh+i)); out = OPERATE(out, in); } #endif @@ -140,7 +140,7 @@ __kernel void reduct_height(GLOBAL_SIZE_3_DIMS #ifdef GET_AVG out = out / inputHeight; #endif - WI_F(output, (int2)(wc, batch_idx), out); + WI_DATA(output, (int2)(wc, batch_idx), CONVERT_OUTPUT_I4(out)); } __kernel void reduct_channel(GLOBAL_SIZE_3_DIMS @@ -168,12 +168,12 @@ __kernel void reduct_channel(GLOBAL_SIZE_3_DIMS const int wc = width_idx; int remain = inputChannel - (inputChannelBlock - 1) * 4; const int lid = get_local_id(0); - FLOAT local sum[LOCAL_SIZE]; - FLOAT4 out = (FLOAT4)VALUE; - FLOAT4 in; - FLOAT *inPtr = (FLOAT*)∈ + INPUT_TYPE_I local sum[LOCAL_SIZE]; + INPUT_TYPE_I4 out = (INPUT_TYPE_I4)VALUE; + INPUT_TYPE_I4 in; + INPUT_TYPE_I *inPtr = (INPUT_TYPE_I*)∈ for(int i = lid; i < inputChannelBlock - 1; i += LOCAL_SIZE){ - in = RI_F(input, SAMPLER, (int2)(i*inputWidth+wc, bh)); + in = RI_DATA(input, SAMPLER, (int2)(i*inputWidth+wc, bh)); out = OPERATE(out, in); } out.x = OPERATE(out.x, out.y); @@ -187,14 +187,14 @@ __kernel void reduct_channel(GLOBAL_SIZE_3_DIMS barrier(CLK_LOCAL_MEM_FENCE); } out.x = sum[0]; - in = RI_F(input, SAMPLER, (int2)((inputChannelBlock - 1)*inputWidth+wc, bh)); + in = RI_DATA(input, SAMPLER, (int2)((inputChannelBlock - 1)*inputWidth+wc, bh)); for(int j = 0; j < remain; ++j){ out.x = OPERATE(out.x, inPtr[j]); } #ifdef GET_AVG out.x = out.x / inputChannel; #endif - WI_F(output, (int2)(wc, bh), (FLOAT4)(out.x, 0, 0, 0)); + WI_DATA(output, (int2)(wc, bh), (OUTPUT_TYPE_I4)(out.x, 0, 0, 0)); #else const int width_idx = get_global_id(0); @@ -207,24 +207,24 @@ __kernel void reduct_channel(GLOBAL_SIZE_3_DIMS const int wc = width_idx; int remain = inputChannel - (inputChannelBlock - 1) * 4; - FLOAT out = (FLOAT)VALUE; - FLOAT4 in; - FLOAT *inPtr = (FLOAT*)∈ + INPUT_TYPE_I out = (INPUT_TYPE_I)VALUE; + INPUT_TYPE_I4 in; + INPUT_TYPE_I *inPtr = (INPUT_TYPE_I*)∈ for(int i = 0; i < inputChannelBlock - 1; ++i){ - in = RI_F(input, SAMPLER, (int2)(i*inputWidth+wc, bh)); + in = RI_DATA(input, SAMPLER, (int2)(i*inputWidth+wc, bh)); for(int j = 0; j < 4; ++j){ out = OPERATE(out, inPtr[j]); } } - in = RI_F(input, SAMPLER, (int2)((inputChannelBlock - 1)*inputWidth+wc, bh)); + in = RI_DATA(input, SAMPLER, (int2)((inputChannelBlock - 1)*inputWidth+wc, bh)); for(int j = 0; j < remain; ++j){ out = OPERATE(out, inPtr[j]); } #ifdef GET_AVG out = out / inputChannel; #endif - WI_F(output, (int2)(wc, bh), (FLOAT4)(out, 0, 0, 0)); + WI_DATA(output, (int2)(wc, bh), (OUTPUT_TYPE_I4)(out, 0, 0, 0)); #endif } @@ -253,10 +253,10 @@ __kernel void reduct_batch(GLOBAL_SIZE_3_DIMS const int wc = channel_idx*inputWidth+width_idx; int batchOffset = inputChannelBlock * inputHeight * inputWidth; const int lid = get_local_id(0); - FLOAT4 local sum[LOCAL_SIZE]; - FLOAT4 out = (FLOAT4)VALUE; + INPUT_TYPE_I4 local sum[LOCAL_SIZE]; + INPUT_TYPE_I4 out = (INPUT_TYPE_I4)VALUE; for(int i = lid; i < inputBatch; i+=LOCAL_SIZE){ - FLOAT4 in = RI_F(input, SAMPLER, (int2)(wc, i*inputHeight+bh)); + INPUT_TYPE_I4 in = RI_DATA(input, SAMPLER, (int2)(wc, i*inputHeight+bh)); out = OPERATE(out, in); } sum[lid] = out; @@ -270,7 +270,7 @@ __kernel void reduct_batch(GLOBAL_SIZE_3_DIMS #ifdef GET_AVG out = out / inputBatch; #endif - WI_F(output, (int2)(wc, bh), out); + WI_DATA(output, (int2)(wc, bh), CONVERT_OUTPUT_I4(out)); #else const int width_idx = get_global_id(0); const int height_idx = get_global_id(1); @@ -281,15 +281,15 @@ __kernel void reduct_batch(GLOBAL_SIZE_3_DIMS const int bh = height_idx; const int wc = channel_idx*inputWidth+width_idx; int batchOffset = inputChannelBlock * inputHeight * inputWidth; - FLOAT4 out = (FLOAT4)VALUE; + INPUT_TYPE_I4 out = (INPUT_TYPE_I4)VALUE; for(int i = 0; i < inputBatch; ++i){ - FLOAT4 in = RI_F(input, SAMPLER, (int2)(wc, i*inputHeight+bh)); + INPUT_TYPE_I4 in = RI_DATA(input, SAMPLER, (int2)(wc, i*inputHeight+bh)); out = OPERATE(out, in); } #ifdef GET_AVG out = out / inputBatch; #endif - WI_F(output, (int2)(wc, bh), out); + WI_DATA(output, (int2)(wc, bh), CONVERT_OUTPUT_I4(out)); #endif } diff --git a/source/backend/opencl/execution/cl/reduction_buf.cl b/source/backend/opencl/execution/cl/reduction_buf.cl index 364c9feb4..aa5b00960 100644 --- a/source/backend/opencl/execution/cl/reduction_buf.cl +++ b/source/backend/opencl/execution/cl/reduction_buf.cl @@ -18,8 +18,8 @@ __private const int global_size_dim0, __private const int global_size_dim1, __pr } __kernel void reduct_width_buf(GLOBAL_SIZE_3_DIMS - __global const FLOAT* input, - __global FLOAT* output, + __global const INPUT_TYPE* input, + __global OUTPUT_TYPE* output, __private const int inputWidth, __private const int inputHeight, __private const int inputChannel, @@ -40,13 +40,13 @@ __kernel void reduct_width_buf(GLOBAL_SIZE_3_DIMS const int channel_idx = batch_channel_idx % outputChannelBlock; const int offset = ((((batch_idx * inputChannelBlock) + channel_idx) * inputHeight + height_idx) * inputWidth + 0)*4; const int outputOffset = ((((batch_idx * outputChannelBlock) + channel_idx) * outputHeight + height_idx) * oututWidth + 0)*4; - FLOAT4 out = (FLOAT4)VALUE; + INPUT_TYPE4 out = (INPUT_TYPE4)VALUE; #if LOCAL_SIZE > 0 const int lid = get_local_id(0); - FLOAT4 local sum[LOCAL_SIZE]; + INPUT_TYPE4 local sum[LOCAL_SIZE]; for(int i = lid; i < inputWidth; i+=LOCAL_SIZE){ - FLOAT4 in = vload4(i, input + offset); + INPUT_TYPE4 in = vload4(i, input + offset); out = OPERATE(out, in); } sum[lid] = out; @@ -59,7 +59,7 @@ __kernel void reduct_width_buf(GLOBAL_SIZE_3_DIMS out = sum[0]; #else for(int i = 0; i < inputWidth; ++i){ - FLOAT4 in = vload4(i, input + offset); + INPUT_TYPE4 in = vload4(i, input + offset); out = OPERATE(out, in); } #endif @@ -67,13 +67,13 @@ __kernel void reduct_width_buf(GLOBAL_SIZE_3_DIMS #ifdef GET_AVG out = out / inputWidth; #endif - vstore4(out, 0, output + outputOffset); + vstore4(CONVERT_OUTPUT4(out), 0, output + outputOffset); } __kernel void reduct_height_buf(GLOBAL_SIZE_3_DIMS - __global const FLOAT* input, - __global FLOAT* output, + __global const INPUT_TYPE* input, + __global OUTPUT_TYPE* output, __private const int inputWidth, __private const int inputHeight, __private const int inputChannel, @@ -98,10 +98,10 @@ __kernel void reduct_height_buf(GLOBAL_SIZE_3_DIMS const int offset = ((((batch_idx * inputChannelBlock) + channel_idx) * inputHeight + 0) * inputWidth + width_idx)*4; const int outputOffset = ((((batch_idx * outputChannelBlock) + channel_idx) * outputHeight + 0) * oututWidth + width_idx)*4; const int lid = get_local_id(0); - FLOAT4 local sum[LOCAL_SIZE]; - FLOAT4 out = (FLOAT4)VALUE; + INPUT_TYPE4 local sum[LOCAL_SIZE]; + INPUT_TYPE4 out = (INPUT_TYPE4)VALUE; for(int i = lid; i < inputHeight; i+=LOCAL_SIZE){ - FLOAT4 in = vload4(i * inputWidth, input + offset); + INPUT_TYPE4 in = vload4(i * inputWidth, input + offset); out = OPERATE(out, in); } sum[lid] = out; @@ -125,9 +125,9 @@ __kernel void reduct_height_buf(GLOBAL_SIZE_3_DIMS const int offset = ((((batch_idx * inputChannelBlock) + channel_idx) * inputHeight + 0) * inputWidth + width_idx)*4; const int outputOffset = ((((batch_idx * outputChannelBlock) + channel_idx) * outputHeight + 0) * oututWidth + width_idx)*4; - FLOAT4 out = (FLOAT4)VALUE; + INPUT_TYPE4 out = (INPUT_TYPE4)VALUE; for(int i = 0; i < inputHeight; ++i){ - FLOAT4 in = vload4(i * inputWidth, input + offset); + INPUT_TYPE4 in = vload4(i * inputWidth, input + offset); out = OPERATE(out, in); } #endif @@ -135,12 +135,12 @@ __kernel void reduct_height_buf(GLOBAL_SIZE_3_DIMS #ifdef GET_AVG out = out / inputHeight; #endif - vstore4(out, 0, output + outputOffset); + vstore4(CONVERT_OUTPUT4(out), 0, output + outputOffset); } __kernel void reduct_channel_buf(GLOBAL_SIZE_3_DIMS - __global const FLOAT* input, - __global FLOAT* output, + __global const INPUT_TYPE* input, + __global OUTPUT_TYPE* output, __private const int inputWidth, __private const int inputHeight, __private const int inputChannel, @@ -163,10 +163,10 @@ __kernel void reduct_channel_buf(GLOBAL_SIZE_3_DIMS const int outputOffset = ((((batch_idx * outputChannelBlock) + 0) * outputHeight + height_idx) * oututWidth + width_idx)*4; int remain = inputChannel - (inputChannelBlock - 1) * 4; const int lid = get_local_id(0); - FLOAT local sum[LOCAL_SIZE]; - FLOAT4 out = (FLOAT4)VALUE; - FLOAT4 in; - FLOAT *inPtr = (FLOAT*)∈ + INPUT_TYPE local sum[LOCAL_SIZE]; + INPUT_TYPE4 out = (INPUT_TYPE4)VALUE; + INPUT_TYPE4 in; + INPUT_TYPE *inPtr = (INPUT_TYPE*)∈ for(int i = lid; i < inputChannelBlock - 1; i += LOCAL_SIZE){ in = vload4(i * inputWidth * inputHeight, input + offset); out = OPERATE(out, in); @@ -189,7 +189,7 @@ __kernel void reduct_channel_buf(GLOBAL_SIZE_3_DIMS #ifdef GET_AVG out.x = out.x / inputChannel; #endif - output[outputOffset] = out.x; + output[outputOffset] = (OUTPUT_TYPE)out.x; #else const int width_idx = get_global_id(0); @@ -202,9 +202,9 @@ __kernel void reduct_channel_buf(GLOBAL_SIZE_3_DIMS const int outputOffset = ((((batch_idx * outputChannelBlock) + 0) * outputHeight + height_idx) * oututWidth + width_idx)*4; int remain = inputChannel - (inputChannelBlock - 1) * 4; - FLOAT out = (FLOAT)VALUE; - FLOAT4 in; - FLOAT *inPtr = (FLOAT*)∈ + INPUT_TYPE out = (INPUT_TYPE)VALUE; + INPUT_TYPE4 in; + INPUT_TYPE *inPtr = (INPUT_TYPE*)∈ for(int i = 0; i < inputChannelBlock - 1; ++i){ in = vload4(i * inputWidth * inputHeight, input + offset); for(int j = 0; j < 4; ++j){ @@ -218,13 +218,13 @@ __kernel void reduct_channel_buf(GLOBAL_SIZE_3_DIMS #ifdef GET_AVG out = out / inputChannel; #endif - output[outputOffset] = out; + output[outputOffset] = (OUTPUT_TYPE)out; #endif } __kernel void reduct_channel_dim1_buf(GLOBAL_SIZE_3_DIMS - __global const FLOAT* input, - __global FLOAT* output, + __global const INPUT_TYPE* input, + __global OUTPUT_TYPE* output, __private const int inputWidth, __private const int inputHeight, __private const int inputChannel, @@ -247,10 +247,10 @@ __kernel void reduct_channel_dim1_buf(GLOBAL_SIZE_3_DIMS const int outputOffset = ((batch_idx * outputHeight + height_idx) * oututWidth + width_idx); int remain = inputChannel - (inputChannelBlock - 1) * 4; const int lid = get_local_id(0); - FLOAT local sum[LOCAL_SIZE]; - FLOAT4 out = (FLOAT4)VALUE; - FLOAT4 in; - FLOAT *inPtr = (FLOAT*)∈ + INPUT_TYPE local sum[LOCAL_SIZE]; + INPUT_TYPE4 out = (INPUT_TYPE4)VALUE; + INPUT_TYPE4 in; + INPUT_TYPE *inPtr = (INPUT_TYPE*)∈ for(int i = lid; i < inputChannelBlock - 1; i += LOCAL_SIZE){ in = vload4(i * inputWidth * inputHeight, input + offset); out = OPERATE(out, in); @@ -273,7 +273,7 @@ __kernel void reduct_channel_dim1_buf(GLOBAL_SIZE_3_DIMS #ifdef GET_AVG out.x = out.x / inputChannel; #endif - output[outputOffset] = out.x; + output[outputOffset] = (OUTPUT_TYPE)out.x; #else const int width_idx = get_global_id(0); @@ -284,9 +284,9 @@ __kernel void reduct_channel_dim1_buf(GLOBAL_SIZE_3_DIMS const int offset = ((((batch_idx * inputChannelBlock) + 0) * inputHeight + height_idx) * inputWidth + width_idx)*4; const int outputOffset = ((batch_idx * outputHeight + height_idx) * oututWidth + width_idx); int remain = inputChannel - (inputChannelBlock - 1) * 4; - FLOAT out = (FLOAT)VALUE; - FLOAT4 in; - FLOAT *inPtr = (FLOAT*)∈ + INPUT_TYPE out = (INPUT_TYPE)VALUE; + INPUT_TYPE4 in; + INPUT_TYPE *inPtr = (INPUT_TYPE*)∈ for(int i = 0; i < inputChannelBlock - 1; ++i){ in = vload4(i * inputWidth * inputHeight, input + offset); for(int j = 0; j < 4; ++j){ @@ -300,14 +300,14 @@ __kernel void reduct_channel_dim1_buf(GLOBAL_SIZE_3_DIMS #ifdef GET_AVG out = out / inputChannel; #endif - output[outputOffset] = out; + output[outputOffset] = (OUTPUT_TYPE)out; #endif } __kernel void reduct_batch_buf(GLOBAL_SIZE_3_DIMS - __global const FLOAT* input, - __global FLOAT* output, + __global const INPUT_TYPE* input, + __global OUTPUT_TYPE* output, __private const int inputWidth, __private const int inputHeight, __private const int inputChannel, @@ -330,10 +330,10 @@ __kernel void reduct_batch_buf(GLOBAL_SIZE_3_DIMS const int outputOffset = ((((0 * outputChannelBlock) + channel_idx) * outputHeight + height_idx) * oututWidth + width_idx)*4; int batchOffset = inputChannelBlock * inputHeight * inputWidth; const int lid = get_local_id(0); - FLOAT4 local sum[LOCAL_SIZE]; - FLOAT4 out = (FLOAT4)VALUE; + INPUT_TYPE4 local sum[LOCAL_SIZE]; + INPUT_TYPE4 out = (INPUT_TYPE4)VALUE; for(int i = lid; i < inputBatch; i+=LOCAL_SIZE){ - FLOAT4 in = vload4(i * batchOffset, input + offset); + INPUT_TYPE4 in = vload4(i * batchOffset, input + offset); out = OPERATE(out, in); } sum[lid] = out; @@ -347,7 +347,7 @@ __kernel void reduct_batch_buf(GLOBAL_SIZE_3_DIMS #ifdef GET_AVG out = out / inputBatch; #endif - vstore4(out, 0, output + outputOffset); + vstore4(CONVERT_OUTPUT4(out), 0, output + outputOffset); #else const int width_idx = get_global_id(0); const int height_idx = get_global_id(1); @@ -358,14 +358,14 @@ __kernel void reduct_batch_buf(GLOBAL_SIZE_3_DIMS const int offset = ((((0 * inputChannelBlock) + channel_idx) * inputHeight + height_idx) * inputWidth + width_idx)*4; const int outputOffset = ((((0 * outputChannelBlock) + channel_idx) * outputHeight + height_idx) * oututWidth + width_idx)*4; int batchOffset = inputChannelBlock * inputHeight * inputWidth; - FLOAT4 out = (FLOAT4)VALUE; + INPUT_TYPE4 out = (INPUT_TYPE4)VALUE; for(int i = 0; i < inputBatch; ++i){ - FLOAT4 in = vload4(i * batchOffset, input + offset); + INPUT_TYPE4 in = vload4(i * batchOffset, input + offset); out = OPERATE(out, in); } #ifdef GET_AVG out = out / inputBatch; #endif - vstore4(out, 0, output + outputOffset); + vstore4(CONVERT_OUTPUT4(out), 0, output + outputOffset); #endif } diff --git a/source/backend/opencl/execution/cl/select.cl b/source/backend/opencl/execution/cl/select.cl index 4b3e60511..4bd6cece0 100644 --- a/source/backend/opencl/execution/cl/select.cl +++ b/source/backend/opencl/execution/cl/select.cl @@ -21,7 +21,7 @@ __kernel void select_img(GLOBAL_SIZE_2_DIMS const int idy = get_global_id(1); DEAL_NON_UNIFORM_DIM2(idx, idy); - int4 select_vec = convert_int4(RI_F(input, SAMPLER, (int2)(idx, idy))); + int4 select_vec = read_imagei(input, SAMPLER, (int2)(idx, idy)); #ifdef INSIZE1_EUQAL_1 FLOAT4 in0 = RI_F(input0, SAMPLER, (int2)(0, 0)); in0 = (FLOAT4)(in0.x); diff --git a/source/backend/opencl/execution/cl/select_buf.cl b/source/backend/opencl/execution/cl/select_buf.cl index 95880d166..307ee6251 100644 --- a/source/backend/opencl/execution/cl/select_buf.cl +++ b/source/backend/opencl/execution/cl/select_buf.cl @@ -11,7 +11,7 @@ __private const int global_size_dim0, __private const int global_size_dim1, } __kernel void select_buf(GLOBAL_SIZE_2_DIMS - __global const FLOAT* select, + __global const int* select, __global const FLOAT* input0, __global const FLOAT* input1, __global FLOAT* output @@ -20,7 +20,7 @@ __kernel void select_buf(GLOBAL_SIZE_2_DIMS const int idy = get_global_id(1); DEAL_NON_UNIFORM_DIM2(idx, idy); - if ((int)select[idx]) { + if (select[idx]) { #ifdef INSIZE1_EUQAL_1 output[idx] = input0[0]; #else diff --git a/source/backend/opencl/execution/cl/unary.cl b/source/backend/opencl/execution/cl/unary.cl index 49f7ecb7b..2af261c63 100644 --- a/source/backend/opencl/execution/cl/unary.cl +++ b/source/backend/opencl/execution/cl/unary.cl @@ -28,12 +28,8 @@ __kernel void unary(GLOBAL_SIZE_3_DIMS __read_only image2d_t input, __write_only const int width = global_size_dim1; const int pos = mad24(channel_block_idx, width, w); -#ifdef OPENCL_INPUT_INT - FLOAT4 in = CONVERT_FLOAT4(convert_int4(RI_F(input, SAMPLER, (int2)(pos, hb)))); - FLOAT4 out = CONVERT_FLOAT4(convert_int4(OPERATOR)); -#else - FLOAT4 in = RI_F(input, SAMPLER, (int2)(pos, hb)); - FLOAT4 out = CONVERT_FLOAT4(OPERATOR); -#endif - WI_F(output, (int2)(pos, hb), out); + float4 in = convert_float4(RI_DATA(input, SAMPLER, (int2)(pos, hb))); + OUTPUT_TYPE_I4 out = CONVERT_OUTPUT_I4(OPERATOR); + + WI_DATA(output, (int2)(pos, hb), out); } diff --git a/source/backend/opencl/execution/cl/unary_buf.cl b/source/backend/opencl/execution/cl/unary_buf.cl index 26b9e6252..67565b1b3 100644 --- a/source/backend/opencl/execution/cl/unary_buf.cl +++ b/source/backend/opencl/execution/cl/unary_buf.cl @@ -18,8 +18,8 @@ inline float4 gelu(float4 in){ } __kernel void unary_buf(GLOBAL_SIZE_3_DIMS - __global const FLOAT *input, - __global FLOAT *output, + __global const INPUT_TYPE *input, + __global OUTPUT_TYPE *output, __private const int height) { const int channel_block_idx = get_global_id(0); const int w = get_global_id(1); @@ -31,13 +31,8 @@ __kernel void unary_buf(GLOBAL_SIZE_3_DIMS const int height_idx = hb % height; const int offset = (((batch_idx*global_size_dim0+channel_block_idx)*height+height_idx)*global_size_dim1+w) * 4; -#ifdef OPENCL_INPUT_INT - FLOAT4 in = CONVERT_FLOAT4(convert_int4(vload4(0, input+offset))); - FLOAT4 out = CONVERT_FLOAT4(convert_int4(OPERATOR)); -#else - FLOAT4 in = vload4(0, input+offset); - FLOAT4 out = CONVERT_FLOAT4(OPERATOR); -#endif - vstore4(out, 0, output+offset); + float4 in = convert_float4(vload4(0, input+offset)); + float4 out = OPERATOR; + vstore4(CONVERT_OUTPUT4(out), 0, output+offset); } diff --git a/source/backend/opencl/execution/cl/unary_subgroup_buf.cl b/source/backend/opencl/execution/cl/unary_subgroup_buf.cl index 41299849d..d2d8b9528 100644 --- a/source/backend/opencl/execution/cl/unary_subgroup_buf.cl +++ b/source/backend/opencl/execution/cl/unary_subgroup_buf.cl @@ -18,8 +18,8 @@ inline float4 gelu(float4 in){ } __kernel void unary_buf_c4_c4(GLOBAL_SIZE_3_DIMS - __global const FLOAT *input, - __global FLOAT *output, + __global const INPUT_TYPE *input, + __global OUTPUT_TYPE *output, __private const int width, __private const int height, __private const int channel, @@ -36,19 +36,14 @@ __kernel void unary_buf_c4_c4(GLOBAL_SIZE_3_DIMS const int channel4 = (channel + 3) / 4; const int offset = (((batch_idx*channel4+channel_block_idx)*height+height_idx)*width+w) * 4; -#ifdef OPENCL_INPUT_INT - FLOAT4 in = CONVERT_FLOAT4(convert_int4(vload4(0, input+offset))); - FLOAT4 out = CONVERT_FLOAT4(convert_int4(OPERATOR)); -#else - FLOAT4 in = vload4(0, input+offset); - FLOAT4 out = CONVERT_FLOAT4(OPERATOR); -#endif - vstore4(out, 0, output+offset); + float4 in = convert_float4(vload4(0, input+offset)); + float4 out = OPERATOR; + vstore4(CONVERT_OUTPUT4(out), 0, output+offset); } __kernel void unary_buf_c4_c16(GLOBAL_SIZE_3_DIMS - __global const FLOAT *input, - __global FLOAT *output, + __global const INPUT_TYPE *input, + __global OUTPUT_TYPE *output, __private const int width, __private const int height, __private const int channel, @@ -69,30 +64,25 @@ __kernel void unary_buf_c4_c16(GLOBAL_SIZE_3_DIMS const int offset = (((batch_idx*channel4+channel_block_idx)*height+height_idx)*width+w) * 4; const int dst_offset = (((batch_idx*channel16+channe_out_idx)*height+height_idx)*dst_width+w+output_pad_left) * 16 + (channel_block_idx % 4) * 4; -#ifdef OPENCL_INPUT_INT - FLOAT4 in = CONVERT_FLOAT4(convert_int4(vload4(0, input+offset))); - FLOAT4 out = CONVERT_FLOAT4(convert_int4(OPERATOR)); -#else - FLOAT4 in = vload4(0, input+offset); - FLOAT4 out = CONVERT_FLOAT4(OPERATOR); -#endif - vstore4(out, 0, output+dst_offset); + float4 in = convert_float4(vload4(0, input+offset)); + float4 out = OPERATOR; + vstore4(CONVERT_OUTPUT4(out), 0, output+dst_offset); if(w == 0){ int pad_offset = (((batch_idx*channel16+channe_out_idx)*height+height_idx)*dst_width) * 16 + (channel_block_idx % 4) * 4; for(int i = 0; i < output_pad_left; ++i){ - vstore4((FLOAT4)0, 0, output + pad_offset + i * 16); + vstore4((OUTPUT_TYPE4)0, 0, output + pad_offset + i * 16); } pad_offset += (width + output_pad_left) * 16; for(int i = 0; i < output_pad_right; ++i){ - vstore4((FLOAT4)0, 0, output + pad_offset + i * 16); + vstore4((OUTPUT_TYPE4)0, 0, output + pad_offset + i * 16); } } } __attribute__((intel_reqd_sub_group_size(16))) __kernel void unary_buf_c16_c16(GLOBAL_SIZE_3_DIMS - __global const FLOAT *input, - __global FLOAT *output, + __global const INPUT_TYPE *input, + __global OUTPUT_TYPE *output, __private const int width, __private const int height, __private const int channel, @@ -112,49 +102,33 @@ __kernel void unary_buf_c16_c16(GLOBAL_SIZE_3_DIMS const int src_offset = (((batch_idx*channel16+channel_idx)*height+height_idx)*src_width+w+input_pad_left) * 16; const int dst_offset = (((batch_idx*channel16+channel_idx)*height+height_idx)*dst_width+w+output_pad_left) * 16; -#ifdef OPENCL_INPUT_INT -#ifdef MNN_SUPPORT_FP16 - FLOAT4 in = CONVERT_FLOAT4(convert_int4(as_half4(intel_sub_group_block_read_us4((__global ushort*)(input + src_offset))))); -#else - FLOAT4 in = CONVERT_FLOAT4(convert_int4(as_float4(intel_sub_group_block_read4((__global uint*)(input + src_offset))))); -#endif - FLOAT4 out = CONVERT_FLOAT4(convert_int4(OPERATOR)); -#else -#ifdef MNN_SUPPORT_FP16 - FLOAT4 in = as_half4(intel_sub_group_block_read_us4((__global ushort*)(input + src_offset))); -#else - FLOAT4 in = as_float4(intel_sub_group_block_read4((__global uint*)(input + src_offset))); -#endif - FLOAT4 out = CONVERT_FLOAT4(OPERATOR); -#endif + + float4 in = convert_float4(AS_INPUT_DATA4(INTEL_SUB_GROUP_READ4((__global INTEL_DATA*)(input + src_offset)))); + float4 out = OPERATOR; if (w + 4 > width) { for (int i = 0; i < width % 4; i++) { - output[dst_offset + i * 16 + sglid] = out[i]; + output[dst_offset + i * 16 + sglid] = (OUTPUT_TYPE)out[i]; } } else{ -#ifdef MNN_SUPPORT_FP16 - intel_sub_group_block_write_us4((__global ushort*)(output + dst_offset), as_ushort4(out)); -#else - intel_sub_group_block_write4((__global uint*)(output + dst_offset), as_uint4(out)); -#endif + INTEL_SUB_GROUP_WRITE4((__global INTEL_DATA*)(output + dst_offset), AS_OUTPUT_DATA4(CONVERT_OUTPUT4(out))); } if(w == 0){ int pad_offset = (((batch_idx*channel+channel_idx)*height+height_idx)*dst_width) * 16 + sglid; for(int i = 0; i < output_pad_left; ++i){ - output[pad_offset + i * 16] = 0; + output[pad_offset + i * 16] = (OUTPUT_TYPE)0; } pad_offset += (width + output_pad_left) * 16; for(int i = 0; i < output_pad_right; ++i){ - output[pad_offset + i * 16] = 0; + output[pad_offset + i * 16] = (OUTPUT_TYPE)0; } } } __attribute__((intel_reqd_sub_group_size(16))) __kernel void unary_buf_c16_c4(GLOBAL_SIZE_3_DIMS - __global const FLOAT *input, - __global FLOAT *output, + __global const INPUT_TYPE *input, + __global OUTPUT_TYPE *output, __private const int width, __private const int height, __private const int channel, @@ -175,27 +149,15 @@ __kernel void unary_buf_c16_c4(GLOBAL_SIZE_3_DIMS const int src_offset = (((batch_idx*channel16+channel_idx)*height+height_idx)*src_width+w+input_pad_left) * 16; const int dst_offset = (((batch_idx*channel4+(channel_idx<<2))*height+height_idx)*width+w) * 4; const int height_width = height * width * 4; -#ifdef OPENCL_INPUT_INT -#ifdef MNN_SUPPORT_FP16 - FLOAT4 in = CONVERT_FLOAT4(convert_int4(as_half4(intel_sub_group_block_read_us4((__global ushort*)(input + src_offset))))); -#else - FLOAT4 in = CONVERT_FLOAT4(convert_int4(as_float4(intel_sub_group_block_read4((__global uint*)(input + src_offset))))); -#endif - FLOAT4 out = CONVERT_FLOAT4(convert_int4(OPERATOR)); -#else -#ifdef MNN_SUPPORT_FP16 - FLOAT4 in = as_half4(intel_sub_group_block_read_us4((__global ushort*)(input + src_offset))); -#else - FLOAT4 in = as_float4(intel_sub_group_block_read4((__global uint*)(input + src_offset))); -#endif - FLOAT4 out = CONVERT_FLOAT4(OPERATOR); -#endif + + float4 in = convert_float4(AS_INPUT_DATA4(INTEL_SUB_GROUP_READ4((__global INTEL_DATA*)(input + src_offset)))); + float4 out = OPERATOR; const int lid_x = sglid % 4; const int lid_y = sglid / 4; int block_size = w + 4 > width ? (width % 4) : 4; for (int i = 0; i < block_size; i++) { - output[dst_offset + i * 4 + lid_y * height_width + lid_x] = out[i]; + output[dst_offset + i * 4 + lid_y * height_width + lid_x] = (OUTPUT_TYPE)out[i]; } } diff --git a/source/backend/opencl/execution/image/CastExecution.cpp b/source/backend/opencl/execution/image/CastExecution.cpp index ad5a63ee0..23dd1e33b 100644 --- a/source/backend/opencl/execution/image/CastExecution.cpp +++ b/source/backend/opencl/execution/image/CastExecution.cpp @@ -7,25 +7,26 @@ // #include "backend/opencl/execution/image/CastExecution.hpp" -#include "core/Macro.h" -#include "core/TensorUtils.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" namespace MNN { namespace OpenCL { -CastExecution::CastExecution(const std::string& compute, Backend* backend) : Execution(backend) { +CastExecution::CastExecution(const std::vector &inputs, const std::vector &outputs, const std::string& compute, const MNN::Op* op, Backend* backend) : CommonExecution(backend, op) { mBuildOptions.emplace(compute); + auto openCLBackend = static_cast(backend); + auto runtime = openCLBackend->getOpenCLRuntime(); + mUnits.resize(1); + auto &unit = mUnits[0]; + unit.kernel = openCLBackend->getOpenCLRuntime()->buildKernel("cast", "cast", mBuildOptions, inputs[0], outputs[0]); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); } -ErrorCode CastExecution::onResize(const std::vector& inputs, const std::vector& outputs) { +ErrorCode CastExecution::onEncode(const std::vector& inputs, const std::vector& outputs) { Tensor* input = inputs[0]; Tensor* output = outputs[0]; auto openCLBackend = static_cast(backend()); auto runtime = openCLBackend->getOpenCLRuntime(); - openCLBackend->startRecord(mRecording); - mKernel = runtime->buildKernel("cast", "cast", mBuildOptions); - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + auto &unit = mUnits[0]; std::vector inputShape = tensorShapeFormat(input); std::vector outputShape = tensorShapeFormat(output); @@ -44,51 +45,21 @@ ErrorCode CastExecution::onResize(const std::vector& inputs, const std: uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[2]); - ret |= mKernel.setArg(idx++, openCLImage(input)); - ret |= mKernel.setArg(idx++, openCLImage(output)); - ret |= mKernel.setArg(idx++, outputWidth); - ret |= mKernel.setArg(idx++, outputHeight); - ret |= mKernel.setArg(idx++, channelBlocks); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(idx++, openCLImage(input)); + ret |= unit.kernel->get().setArg(idx++, openCLImage(output)); + ret |= unit.kernel->get().setArg(idx++, outputWidth); + ret |= unit.kernel->get().setArg(idx++, outputHeight); + ret |= unit.kernel->get().setArg(idx++, channelBlocks); MNN_CHECK_CL_SUCCESS(ret, "setArg CastExecution"); std::string kernelName = "cast"; - mLocalSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), kernelName, mKernel).first; - openCLBackend->recordKernel3d(mKernel, mGlobalWorkSize, mLocalSize); - openCLBackend->endRecord(mRecording); - return NO_ERROR; -} - -ErrorCode CastExecution::onExecute(const std::vector& inputs, const std::vector& outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("start CastExecution onExecute..."); -#endif - auto mOpenCLBackend = static_cast(backend()); - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalSize, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Cast", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End CastExecution onExecute... \n"); -#endif - return NO_ERROR; - } - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalSize, - mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end CastExecution onExecute..."); -#endif + mLocalSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), kernelName, unit.kernel).first; + openCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; + unit.localWorkSize = {mLocalSize[0], mLocalSize[1], mLocalSize[2]}; return NO_ERROR; } @@ -116,39 +87,10 @@ class CastCreator : public OpenCLBackend::Creator { const auto &inputDataType = inputs[0]->getType(); if (inputDataType.bytes() == 4 && cast->dstT() == MNN::DataType_DT_BOOL) { - return new CastExecution("-DTO_BOOL", backend); - } - if (inputs[0]->buffer().type == outputs[0]->buffer().type) { - return new CastExecution("", backend); - } - if (dstT == MNN::DataType_DT_INT32 && halide_type_of() == inputDataType) { - return new CastExecution("", backend); - } - if (dstT == MNN::DataType_DT_FLOAT && halide_type_of() == inputDataType) { - return new CastExecution("", backend); - } - if (dstT == MNN::DataType_DT_FLOAT && halide_type_of() == inputDataType) { - return new CastExecution("", backend); - } - if (dstT == MNN::DataType_DT_FLOAT && halide_type_of() == inputDataType) { - return new CastExecution("", backend); - } - if (dstT == MNN::DataType_DT_INT8 && halide_type_of() == inputDataType) { - return new CastExecution("", backend); - } - if (dstT == MNN::DataType_DT_UINT8 && halide_type_of() == inputDataType) { - return new CastExecution("", backend); - } - if (dstT == MNN::DataType_DT_UINT8 && halide_type_of() == inputDataType) { - return new CastExecution("", backend); - } - if (dstT == MNN::DataType_DT_INT32 && halide_type_of() == inputDataType) { - return new CastExecution("", backend); - } - if (dstT == MNN::DataType_DT_INT32 && halide_type_of() == inputDataType) { - return new CastExecution("", backend); + return new CastExecution(inputs, outputs, "-DTO_BOOL", op, backend); + } else { + return new CastExecution(inputs, outputs, "", op, backend); } - MNN_PRINT("Don't support cast form %d, %d to %d\n", inputDataType.code, inputDataType.bits, cast->dstT()); return nullptr; } }; diff --git a/source/backend/opencl/execution/image/CastExecution.hpp b/source/backend/opencl/execution/image/CastExecution.hpp index 67567f287..713740fc2 100644 --- a/source/backend/opencl/execution/image/CastExecution.hpp +++ b/source/backend/opencl/execution/image/CastExecution.hpp @@ -9,27 +9,19 @@ #ifndef CastExecution_hpp #define CastExecution_hpp -#include "core/Execution.hpp" - -#include -#include "MNN_generated.h" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "CommonExecution.hpp" namespace MNN { namespace OpenCL { -class CastExecution : public Execution, public CommonExtension { +class CastExecution : public CommonExecution { public: - CastExecution(const std::string &compute, Backend *backend); + CastExecution(const std::vector &inputs, const std::vector &outputs, const std::string &compute, const MNN::Op* op, Backend *backend); virtual ~CastExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: - cl::Kernel mKernel; uint32_t mMaxWorkGroupSize; std::vector mGlobalWorkSize = {1, 1, 1}; std::vector mLocalSize = {1, 1, 1}; diff --git a/source/backend/opencl/execution/image/CommonExecution.cpp b/source/backend/opencl/execution/image/CommonExecution.cpp index 1bcb08c58..8d33b863d 100644 --- a/source/backend/opencl/execution/image/CommonExecution.cpp +++ b/source/backend/opencl/execution/image/CommonExecution.cpp @@ -14,6 +14,33 @@ CommonExecution::CommonExecution(Backend *backend, const MNN::Op *Op) : Execution(backend), mOp(Op) { mOpType = Op->type(); } + +ErrorCode CommonExecution::onResize(const std::vector &inputs, const std::vector &outputs){ + auto openCLBackend = static_cast(backend()); + auto runtime = openCLBackend->getOpenCLRuntime(); + openCLBackend->startRecord(mRecording); + + auto error = onEncode(inputs, outputs); + if(NO_ERROR != error){ + return error; + } + + for (auto &unit : mUnits) { + bool lws_null = true; + for (size_t i = 0; i < unit.globalWorkSize.dimensions(); ++i) { + unit.globalWorkSize.get()[i] = ROUND_UP(unit.globalWorkSize.get()[i], std::max((size_t)1, unit.localWorkSize.get()[i])); + if(unit.localWorkSize.get()[i] != 0) { + lws_null = false; + } + } + if(lws_null){ + unit.localWorkSize = cl::NullRange; + } + } + openCLBackend->endRecord(mRecording); + return NO_ERROR; +} + ErrorCode CommonExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { auto openCLBackend = static_cast(backend()); auto runtime = openCLBackend->getOpenCLRuntime(); @@ -28,45 +55,21 @@ ErrorCode CommonExecution::onExecute(const std::vector &inputs, const #endif auto res = CL_SUCCESS; for (auto &unit : mUnits) { - bool lws_null = true; - for (size_t i = 0; i < unit.globalWorkSize.dimensions(); ++i) { - unit.globalWorkSize.get()[i] = ROUND_UP(unit.globalWorkSize.get()[i], std::max((size_t)1, unit.localWorkSize.get()[i])); - if(unit.localWorkSize.get()[i] != 0) { - lws_null = false; - } - } - #ifdef ENABLE_OPENCL_TIME_PROFILER cl::Event event; - if(lws_null == true) { - res = runtime->commandQueue().enqueueNDRangeKernel(unit.kernel, - cl::NullRange, - unit.globalWorkSize, - cl::NullRange, - nullptr, - &event); - } else { - res = runtime->commandQueue().enqueueNDRangeKernel(unit.kernel, - cl::NullRange, - unit.globalWorkSize, - unit.localWorkSize, - nullptr, - &event); - } + res = runtime->commandQueue().enqueueNDRangeKernel(unit.kernel->get(), + cl::NullRange, + unit.globalWorkSize, + unit.localWorkSize, + nullptr, + &event); runtime->pushEvent({EnumNameOpType(mOpType) + std::to_string(idx++), event}); #else - if(lws_null == true) { - res = runtime->commandQueue().enqueueNDRangeKernel(unit.kernel, - cl::NullRange, - unit.globalWorkSize, - cl::NullRange); - } else { - res = runtime->commandQueue().enqueueNDRangeKernel(unit.kernel, - cl::NullRange, - unit.globalWorkSize, - unit.localWorkSize); - } + res = runtime->commandQueue().enqueueNDRangeKernel(unit.kernel->get(), + cl::NullRange, + unit.globalWorkSize, + unit.localWorkSize); #endif MNN_CHECK_CL_SUCCESS(res, EnumNameOpType(mOp->type())); } diff --git a/source/backend/opencl/execution/image/CommonExecution.hpp b/source/backend/opencl/execution/image/CommonExecution.hpp index cc5564a6c..f8ecaea6a 100644 --- a/source/backend/opencl/execution/image/CommonExecution.hpp +++ b/source/backend/opencl/execution/image/CommonExecution.hpp @@ -9,28 +9,40 @@ #ifndef CommonExecution_hpp #define CommonExecution_hpp #include "core/Execution.hpp" +#include "core/Macro.h" +#include "core/TensorUtils.hpp" #include "backend/opencl/core/OpenCLBackend.hpp" #include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" namespace MNN { namespace OpenCL { -class CommonExecution : public Execution, public CommonExtension { +struct Unit { + std::shared_ptr kernel; + cl::NDRange globalWorkSize; + cl::NDRange localWorkSize; +}; + +class CommonExecution : public Execution { public: CommonExecution(Backend *backend, const MNN::Op *Op); - virtual ~CommonExecution() = default; - + virtual ~CommonExecution(){ + if(mRecording != NULL){ +#ifdef MNN_USE_LIB_WRAPPER + clReleaseRecordingQCOM(mRecording); +#endif + } + } + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) { + return NO_ERROR; + } + virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; protected: - struct Unit { - cl::Kernel kernel; - cl::NDRange globalWorkSize; - cl::NDRange localWorkSize; - }; std::vector mUnits; const MNN::Op *mOp; OpType mOpType; + cl_recording_qcom mRecording{NULL}; }; } // namespace OpenCL } // namespace MNN diff --git a/source/backend/opencl/execution/image/CommonExtension.hpp b/source/backend/opencl/execution/image/CommonExtension.hpp deleted file mode 100644 index f4775a107..000000000 --- a/source/backend/opencl/execution/image/CommonExtension.hpp +++ /dev/null @@ -1,29 +0,0 @@ -// -// CommonExecution.hpp -// MNN -// -// Created by MNN on 2019/02/28. -// Copyright © 2018, Alibaba Group Holding Limited -// - -#ifndef CommonExtension_hpp -#define CommonExtension_hpp -#include "backend/opencl/core/runtime/OpenCLWrapper.hpp" -namespace MNN { -namespace OpenCL { - -class CommonExtension { -public: - CommonExtension() = default; - virtual ~CommonExtension(){ - if(mRecording != NULL){ -#ifdef MNN_USE_LIB_WRAPPER - clReleaseRecordingQCOM(mRecording); -#endif - } - } - cl_recording_qcom mRecording{NULL}; -}; -} // namespace OpenCL -} // namespace MNN -#endif /* CommonExtension_hpp */ diff --git a/source/backend/opencl/execution/image/ConvExecution.cpp b/source/backend/opencl/execution/image/ConvExecution.cpp index 0691c8496..440ba5ac9 100644 --- a/source/backend/opencl/execution/image/ConvExecution.cpp +++ b/source/backend/opencl/execution/image/ConvExecution.cpp @@ -15,27 +15,28 @@ #include "backend/opencl/core/OpenCLRunningUtils.hpp" #include "ConvLowMemoryExecution.hpp" -#define UNIT 4 namespace MNN { namespace OpenCL { -ConvCommonExecution::ConvCommonExecution(const Convolution2D *conv2dParams, Backend *backend) : Execution(backend) { - auto openclBackend = (OpenCLBackend *)backend; +ConvCommonExecution::ConvCommonExecution(const Convolution2D *conv2dParams, Backend *backend) { + mResource.reset(new ConvResource); + mOpenCLBackend = (OpenCLBackend *)backend; + auto runtime = mOpenCLBackend->getOpenCLRuntime(); int biasSize = conv2dParams->bias()->size(); const float *biasDataPtr = conv2dParams->bias()->data(); int buffer_size = ALIGN_UP4(biasSize); - if(openclBackend->getOpenCLRuntime()->isWeightCpuTransHalf()) { + if(mOpenCLBackend->getOpenCLRuntime()->isWeightCpuTransHalf()) { buffer_size *= sizeof(half_float::half); } else { buffer_size *= sizeof(float); } - cl::Buffer biasBuffer(openclBackend->getOpenCLRuntime()->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, buffer_size); + cl::Buffer biasBuffer(runtime->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, buffer_size); cl_int error; - auto biasPtrCL = openclBackend->getOpenCLRuntime()->commandQueue().enqueueMapBuffer( + auto biasPtrCL = runtime->commandQueue().enqueueMapBuffer( biasBuffer, true, CL_MAP_WRITE, 0, buffer_size, nullptr, nullptr, &error); if(biasPtrCL != nullptr && error == CL_SUCCESS){ - if(openclBackend->getOpenCLRuntime()->isWeightCpuTransHalf()){ + if(runtime->isWeightCpuTransHalf()){ for(int i=0; igetOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(biasBuffer, biasPtrCL); - mBias.reset(Tensor::createDevice({1, 1, 1, biasSize})); - backend->onAcquireBuffer(mBias.get(), Backend::STATIC); - copyBufferToImage(openclBackend->getOpenCLRuntime(), biasBuffer, openCLImage(mBias.get()), UP_DIV(biasSize, 4), 1); + runtime->commandQueue().enqueueUnmapMemObject(biasBuffer, biasPtrCL); + mResource->mBias.reset(Tensor::createDevice({1, 1, 1, biasSize})); + backend->onAcquireBuffer(mResource->mBias.get(), Backend::STATIC); + copyBufferToImage(runtime, biasBuffer, openCLImage(mResource->mBias.get()), UP_DIV(biasSize, 4), 1); } ConvCommonExecution::~ConvCommonExecution() { - if (mBias) { - backend()->onReleaseBuffer(mBias.get(), Backend::STATIC); + // Do nothinng +} + +ConvExecution::ConvExecution(std::shared_ptr resource, const MNN::Op* op, Backend *backend) + : CommonExecution(backend, op), ConvCommonExecution(backend) { + mResource = resource; + const auto *conv2dParams = op->main_as_Convolution2D(); + const auto *conv2dCommonParams = conv2dParams->common(); + mResource->mConv2dParams = conv2dParams; + mResource->mConv2dCommonParams = conv2dCommonParams; +} + +bool ConvExecution::onClone(Backend* bn, const Op* op, Execution** dst) { + if (!mValid) { + return false; + } + if (nullptr == dst) { + return true; } + *dst = new ConvExecution(mResource, op, bn); + return true; } ConvExecution::ConvExecution(const std::vector &inputs, const std::vector &outputs, const MNN::Op *op, Backend *backend) -: ConvCommonExecution(op->main_as_Convolution2D(), backend) { +: CommonExecution(backend, op), ConvCommonExecution(op->main_as_Convolution2D(), backend) { #ifdef LOG_VERBOSE MNN_PRINT("Start ConvExecution init !\n"); #endif mOpenCLBackend = static_cast(backend); const auto *conv2dParams = op->main_as_Convolution2D(); const auto *conv2dCommonParams = conv2dParams->common(); - mConv2dCommonParams = conv2dCommonParams; - mStrides = {conv2dCommonParams->strideY(), conv2dCommonParams->strideX()}; - mDilations = {conv2dCommonParams->dilateY(), conv2dCommonParams->dilateX()}; + mResource->mConv2dCommonParams = conv2dCommonParams; + mResource->mStrides = {conv2dCommonParams->strideY(), conv2dCommonParams->strideX()}; + mResource->mDilations = {conv2dCommonParams->dilateY(), conv2dCommonParams->dilateX()}; - auto pad = ConvolutionCommon::convolutionPad(inputs[0], outputs[0], mConv2dCommonParams); + auto pad = ConvolutionCommon::convolutionPad(inputs[0], outputs[0], mResource->mConv2dCommonParams); mPaddings[0] = pad.second; mPaddings[1] = pad.first; @@ -81,7 +100,7 @@ ConvExecution::ConvExecution(const std::vector &inputs, const std::vec int outputChannel = conv2dCommonParams->outputCount(); auto gpuType = mOpenCLBackend->getOpenCLRuntime()->getGpuType(); #ifndef MNN_OPENCL_BUFFER_CLOSED - mWeightUseBuffer = gpuType == GpuType::MALI; + mResource->mWeightUseBuffer = gpuType == GpuType::MALI; #endif int weightSize = 0; @@ -112,30 +131,16 @@ ConvExecution::ConvExecution(const std::vector &inputs, const std::vec //select opt conv method std::string kernelName = "conv_2d_c4h1w4"; - if (kernelHeight == kernelWidth && kernelHeight == 1 && mPaddings[0] == 0 && - mPaddings[1] == 0) { - mConv1x1Opt = (mStrides[0] == 1 && mStrides[1] == 1 && gpuType == GpuType::MALI && !mWeightUseBuffer); -#if 0 - if((gpuType == GpuType::ADRENO)){ - uint64_t useLocalSize = UNIT*UNIT*4*sizeof(float)*4; - if(useLocalSize >= mOpenCLBackend->getOpenCLRuntime()->getMaxLocalMem()){ - mUseLocalMem = false; - }else{ - kernelName = "conv_2d_1x1_local"; - mUseLocalMem=true; - } - } -#endif - if(!mUseLocalMem){ - if(mConv1x1Opt){ - kernelName = "conv_2d_1x1_mali"; - }else{ - kernelName = "conv_2d_1x1"; - } + if (kernelHeight == kernelWidth && kernelHeight == 1 && mPaddings[0] == 0 && mPaddings[1] == 0) { + mResource->mConv1x1Opt = (mResource->mStrides[0] == 1 && mResource->mStrides[1] == 1 && gpuType == GpuType::MALI && !mResource->mWeightUseBuffer); + if(mResource->mConv1x1Opt){ + kernelName = "conv_2d_1x1_mali"; + }else{ + kernelName = "conv_2d_1x1"; } } - if(mConv1x1Opt && !mUseLocalMem){ + if(mResource->mConv1x1Opt){ cl_int error; std::shared_ptr filterBuffer(Tensor::createDevice({UP_DIV(outputChannel, 4)*4, UP_DIV(inputChannel, 4)*4, kernelWidth, kernelHeight})); @@ -146,8 +151,8 @@ ConvExecution::ConvExecution(const std::vector &inputs, const std::vec buffer_size *= sizeof(float); } - mKernelBuffer.reset(new cl::Buffer(mOpenCLBackend->getOpenCLRuntime()->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, buffer_size)); - auto kernelBufferPtr = mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueMapBuffer(*(mKernelBuffer.get()), true, CL_MAP_WRITE, 0, buffer_size, nullptr, nullptr, &error); + mResource->mKernelBuffer.reset(new cl::Buffer(mOpenCLBackend->getOpenCLRuntime()->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, buffer_size)); + auto kernelBufferPtr = mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueMapBuffer(*(mResource->mKernelBuffer.get()), true, CL_MAP_WRITE, 0, buffer_size, nullptr, nullptr, &error); if(kernelBufferPtr != nullptr && error == CL_SUCCESS){ ::memset(kernelBufferPtr, 0, buffer_size); for(int o = 0; o < outputChannel; o++){ @@ -164,41 +169,9 @@ ConvExecution::ConvExecution(const std::vector &inputs, const std::vec }else{ MNN_ERROR("Map error ptrCL == nullptr \n"); } - mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(*(mKernelBuffer.get()), kernelBufferPtr); - - //bias - int biasSize = conv2dParams->bias()->size(); - const float *biasDataPtr = conv2dParams->bias()->data(); - - buffer_size = ALIGN_UP4(biasSize); - if(mOpenCLBackend->getOpenCLRuntime()->isSupportedFP16()) { - buffer_size *= sizeof(half_float::half); - } else { - buffer_size *= sizeof(float); - } - - mBiasBuffer.reset(new cl::Buffer(mOpenCLBackend->getOpenCLRuntime()->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, buffer_size)); - auto biasPtrCL = mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueMapBuffer( - *(mBiasBuffer.get()), true, CL_MAP_WRITE, 0, buffer_size, nullptr, nullptr, &error); - if(biasPtrCL != nullptr && error == CL_SUCCESS){ - if(mOpenCLBackend->getOpenCLRuntime()->isSupportedFP16()){ - for (int i = 0; i < biasSize; i++) - { - ((half_float::half*)biasPtrCL)[i] = (half_float::half)(biasDataPtr[i]); - } - for(int i=biasSize; igetOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(*(mBiasBuffer.get()), biasPtrCL); + mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(*(mResource->mKernelBuffer.get()), kernelBufferPtr); - }else if(kernelHeight == kernelWidth && kernelHeight == 1 && mPaddings[0] == 0 && mPaddings[1] == 0 && mWeightUseBuffer){ + }else if(kernelHeight == kernelWidth && kernelHeight == 1 && mPaddings[0] == 0 && mPaddings[1] == 0 && mResource->mWeightUseBuffer){ cl_int error; std::shared_ptr filterBuffer(Tensor::createDevice({UP_DIV(outputChannel, 4), ROUND_UP(inputChannel, 4), 4})); @@ -209,8 +182,8 @@ ConvExecution::ConvExecution(const std::vector &inputs, const std::vec buffer_size *= sizeof(float); } - mKernelBuffer.reset(new cl::Buffer(mOpenCLBackend->getOpenCLRuntime()->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, buffer_size)); - auto kernelBufferPtr = mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueMapBuffer(*(mKernelBuffer.get()), true, CL_MAP_WRITE, 0, buffer_size, nullptr, nullptr, &error); + mResource->mKernelBuffer.reset(new cl::Buffer(mOpenCLBackend->getOpenCLRuntime()->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, buffer_size)); + auto kernelBufferPtr = mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueMapBuffer(*(mResource->mKernelBuffer.get()), true, CL_MAP_WRITE, 0, buffer_size, nullptr, nullptr, &error); if(kernelBufferPtr != nullptr && error == CL_SUCCESS){ ::memset(kernelBufferPtr, 0, buffer_size); for(int o = 0; o < outputChannel; o++){ @@ -227,7 +200,7 @@ ConvExecution::ConvExecution(const std::vector &inputs, const std::vec }else{ MNN_ERROR("Map error ptrCL == nullptr \n"); } - mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(*(mKernelBuffer.get()), kernelBufferPtr); + mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(*(mResource->mKernelBuffer.get()), kernelBufferPtr); }else{ std::vector filterImageShape{(int)inputChannel, (int)(UP_DIV(outputChannel, 4) * kernelWidth * kernelHeight)}; std::shared_ptr filterBuffer( @@ -258,72 +231,67 @@ ConvExecution::ConvExecution(const std::vector &inputs, const std::vec } mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(filterBufferCL, ptrCL); #ifndef MNN_OPENCL_BUFFER_CLOSED - if(mWeightUseBuffer){ - mFilter.reset(Tensor::createDevice({UP_DIV(inputChannel, 4)*4, UP_DIV(outputChannel, 4), kernelWidth * kernelHeight, 4})); + if(mResource->mWeightUseBuffer){ + mResource->mFilter.reset(Tensor::createDevice({UP_DIV(inputChannel, 4)*4, UP_DIV(outputChannel, 4), kernelWidth * kernelHeight, 4})); int kernel_buffer_size = UP_DIV(outputChannel, 4)*4* UP_DIV(inputChannel, 4)*4* kernelWidth* kernelHeight; if(mOpenCLBackend->getOpenCLRuntime()->isSupportedFP16()) { kernel_buffer_size *= sizeof(half_float::half); } else { kernel_buffer_size *= sizeof(float); } - mKernelBuffer.reset(new cl::Buffer(mOpenCLBackend->getOpenCLRuntime()->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, kernel_buffer_size)); - mFilter.get()->buffer().device = (uint64_t)mKernelBuffer.get(); + mResource->mKernelBuffer.reset(new cl::Buffer(mOpenCLBackend->getOpenCLRuntime()->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, kernel_buffer_size)); + mResource->mFilter.get()->buffer().device = (uint64_t)mResource->mKernelBuffer.get(); MNN::OpenCL::BufferConvertor bufferConvertor{mOpenCLBackend->getOpenCLRuntime()}; bool needTrans = false; if(mOpenCLBackend->getOpenCLRuntime()->isWeightCpuTransHalf() == false){ needTrans = true; } - bufferConvertor.convertToNC4HW4Buffer(filterBuffer.get(), MNN::OpenCL::CONV2D_FILTER, mFilter.get(), needTrans); + bufferConvertor.convertToNC4HW4Buffer(filterBuffer.get(), MNN::OpenCL::CONV2D_FILTER, mResource->mFilter.get(), needTrans); } else #endif { - mFilter.reset(Tensor::createDevice({1, filterImageShape[1], 1, 4 * filterImageShape[0]})); - mOpenCLBackend->onAcquireBuffer(mFilter.get(), Backend::STATIC); + mResource->mFilter.reset(Tensor::createDevice({1, filterImageShape[1], 1, 4 * filterImageShape[0]})); + mOpenCLBackend->onAcquireBuffer(mResource->mFilter.get(), Backend::STATIC); MNN::OpenCL::ImageBufferConvertor imageBufferConvertor{mOpenCLBackend->getOpenCLRuntime()}; std::string buildOption = ""; if(mOpenCLBackend->getOpenCLRuntime()->isWeightCpuTransHalf() == false){ buildOption = "-DBUFFER_INP_FP32"; } - imageBufferConvertor.convertBufferToImage(filterBuffer.get(), MNN::OpenCL::CONV2D_FILTER, mFilter.get(), false, buildOption); + imageBufferConvertor.convertBufferToImage(filterBuffer.get(), MNN::OpenCL::CONV2D_FILTER, mResource->mFilter.get(), false, buildOption); } } // Create Kernel - if (mStrides[0] == 1 && mStrides[1] == 1 && mDilations[0] == 1 && mDilations[1] == 1) { - mBuildOptions.emplace("-DMNN_CONV_S1D1"); + if (mResource->mStrides[0] == 1 && mResource->mStrides[1] == 1 && mResource->mDilations[0] == 1 && mResource->mDilations[1] == 1) { + mResource->mBuildOptions.emplace("-DMNN_CONV_S1D1"); } - mBuildOptions.emplace("-DBIAS"); - if (mConv2dCommonParams->relu()) { - mBuildOptions.emplace("-DRELU"); - } else if (mConv2dCommonParams->relu6()) { - mBuildOptions.emplace("-DRELU6"); + mResource->mBuildOptions.emplace("-DBIAS"); + if (mResource->mConv2dCommonParams->relu()) { + mResource->mBuildOptions.emplace("-DRELU"); + } else if (mResource->mConv2dCommonParams->relu6()) { + mResource->mBuildOptions.emplace("-DRELU6"); } - if(mWeightUseBuffer){ - mBuildOptions.emplace("-DUSE_BUFFER"); + if(mResource->mWeightUseBuffer){ + mResource->mBuildOptions.emplace("-DUSE_BUFFER"); } - - mKernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d", kernelName, mBuildOptions); - mMaxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(mKernel)); - #ifdef LOG_VERBOSE MNN_PRINT("end ConvExecution init !\n"); #endif } ConvExecution::~ConvExecution() { - if((mUseLocalMem || !mConv1x1Opt) && !mWeightUseBuffer){ - mOpenCLBackend->onReleaseBuffer(mFilter.get(), Backend::STATIC); - } + // Do nothing } -ErrorCode ConvExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode ConvExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { #ifdef LOG_VERBOSE MNN_PRINT("Start ConvExecution onResize !\n"); #endif - mOpenCLBackend->startRecord(mRecording); + mUnits.resize(1); + auto &unit = mUnits[0]; auto input = inputs[0]; auto output = outputs[0]; @@ -331,66 +299,47 @@ ErrorCode ConvExecution::onResize(const std::vector &inputs, const std std::vector outputShape = tensorShapeFormat(output); const int height = outputShape.at(1); const int width = outputShape.at(2); + const int channel = outputShape.at(3); const int inputHeight = inputShape.at(1); const int inputWidth = inputShape.at(2); const int inputChannels = inputShape.at(3); const int inputChannelBlocks = UP_DIV(inputChannels, 4); - int kernelHeight = mConv2dCommonParams->kernelY(); - int kernelWidth = mConv2dCommonParams->kernelX(); + int kernelHeight = mResource->mConv2dCommonParams->kernelY(); + int kernelWidth = mResource->mConv2dCommonParams->kernelX(); - auto pad = ConvolutionCommon::convolutionPad(input, output, mConv2dCommonParams); + auto pad = ConvolutionCommon::convolutionPad(input, output, mResource->mConv2dCommonParams); mPaddings[0] = pad.second; mPaddings[1] = pad.first; - std::string info = std::to_string(inputChannels) + "_" + std::to_string(kernelHeight) + "_" + std::to_string(kernelWidth) + "_" + std::to_string(mStrides[0]) + "_" + std::to_string(mStrides[1]) + "_" + std::to_string(mDilations[0]) + "_" + std::to_string(mDilations[1]); + std::string info = std::to_string(inputChannels) + "_" + std::to_string(channel) + "_" + std::to_string(kernelHeight) + "_" + std::to_string(kernelWidth) + "_" + std::to_string(mResource->mStrides[0]) + "_" + std::to_string(mResource->mStrides[1]) + "_" + std::to_string(mResource->mDilations[0]) + "_" + std::to_string(mResource->mDilations[1]); if (kernelHeight == kernelWidth && kernelHeight == 1 && mPaddings[0] == 0 && mPaddings[1] == 0) { - if(mConv1x1Opt){ + if(mResource->mConv1x1Opt){ - auto kernel = &mKernel; + std::string kernelName = "conv_2d_1x1_mali"; + unit.kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d", kernelName, mResource->mBuildOptions); uint32_t idx = 0; - if(mUseLocalMem){ - mGlobalWorkSize = {static_cast(UP_DIV(outputShape.at(3), 4)), static_cast(UP_DIV(outputShape.at(2), 4)), - static_cast(outputShape.at(0) * outputShape.at(1))}; - std::vector lws{UNIT, UNIT, 1}; - mLocalWorkSize = lws; - kernel->setArg(idx++, mGlobalWorkSize[0]); - kernel->setArg(idx++, mGlobalWorkSize[1]); - kernel->setArg(idx++, mGlobalWorkSize[2]); - kernel->setArg(idx++, openCLImage(input)); - kernel->setArg(idx++, openCLImage(mFilter.get())); - kernel->setArg(idx++, openCLImage(mBias.get())); - kernel->setArg(idx++, openCLImage(output)); - kernel->setArg(idx++, static_cast(inputChannelBlocks)); - kernel->setArg(idx++, height); - kernel->setArg(idx++, width); - mOpenCLBackend->recordKernel3d(mKernel, mGlobalWorkSize, mLocalWorkSize); - }else{ - mGlobalWorkSize = {static_cast(UP_DIV(outputShape.at(3), 4) * UP_DIV(outputShape.at(2), 4)), - static_cast(outputShape.at(0) * outputShape.at(1))}; - kernel->setArg(idx++, mGlobalWorkSize[0]); - kernel->setArg(idx++, mGlobalWorkSize[1]); - kernel->setArg(idx++, UP_DIV(width, 4)); - kernel->setArg(idx++, openCLImage(input)); - kernel->setArg(idx++, *mKernelBuffer.get()); - kernel->setArg(idx++, *mBiasBuffer.get()); - kernel->setArg(idx++, openCLImage(output)); - kernel->setArg(idx++, static_cast(inputChannelBlocks)); - kernel->setArg(idx++, height); - kernel->setArg(idx++, width); - - std::string kernelName = "conv_2d_1x1_mali"; - mLocalWorkSize = localWS2DDefault(mGlobalWorkSize, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), kernelName, mKernel).first; - mOpenCLBackend->recordKernel2d(mKernel, mGlobalWorkSize, mLocalWorkSize); - } - + mGlobalWorkSize = {static_cast(UP_DIV(outputShape.at(3), 4) * UP_DIV(outputShape.at(2), 4)), + static_cast(outputShape.at(0) * outputShape.at(1))}; + unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + unit.kernel->get().setArg(idx++, UP_DIV(width, 4)); + unit.kernel->get().setArg(idx++, openCLImage(input)); + unit.kernel->get().setArg(idx++, *mResource->mKernelBuffer.get()); + unit.kernel->get().setArg(idx++, openCLImage(mResource->mBias.get())); + unit.kernel->get().setArg(idx++, openCLImage(output)); + unit.kernel->get().setArg(idx++, static_cast(inputChannelBlocks)); + unit.kernel->get().setArg(idx++, height); + unit.kernel->get().setArg(idx++, width); + mLocalWorkSize = localWS2DDefault(mGlobalWorkSize, mResource->mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), kernelName, unit.kernel).first; + mOpenCLBackend->recordKernel2d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); }else{ int inputImageShape[2] = {inputHeight, inputWidth}; int outputImageShape[2] = {height, width}; - int stideShape[2] = {mStrides[0], mStrides[1]}; + int stideShape[2] = {mResource->mStrides[0], mResource->mStrides[1]}; const int total_kernel = 2; std::string kernelName[total_kernel] = {"conv_2d_1x1", "conv_2d_1x1_c8h1w4"}; int itemC[total_kernel] = {4, 8}; @@ -399,36 +348,36 @@ ErrorCode ConvExecution::onResize(const std::vector &inputs, const std int actual_kernel = total_kernel; - cl::Kernel kernel[total_kernel]; + std::shared_ptr kernel[total_kernel]; std::vector globalWorkSize[total_kernel]; std::vector localWorkSize[total_kernel]; std::pair min_cost(INT_MAX, 0);//(min_time, min_index) for(int knl_idx = 0; knl_idx < total_kernel; knl_idx++) { - kernel[knl_idx] = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d", kernelName[knl_idx], mBuildOptions); + kernel[knl_idx] = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d", kernelName[knl_idx], mResource->mBuildOptions); uint32_t maxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(kernel[knl_idx])); globalWorkSize[knl_idx] = {static_cast(UP_DIV(outputShape.at(3), itemC[knl_idx]) * UP_DIV(outputShape.at(2), itemW[knl_idx])), static_cast(outputShape.at(0) * UP_DIV(outputShape.at(1), itemH[knl_idx]))}; uint32_t idx = 0; - kernel[knl_idx].setArg(idx++, globalWorkSize[knl_idx][0]); - kernel[knl_idx].setArg(idx++, globalWorkSize[knl_idx][1]); - kernel[knl_idx].setArg(idx++, openCLImage(input)); - if(mWeightUseBuffer){ - kernel[knl_idx].setArg(idx++, *mKernelBuffer.get()); + kernel[knl_idx]->get().setArg(idx++, globalWorkSize[knl_idx][0]); + kernel[knl_idx]->get().setArg(idx++, globalWorkSize[knl_idx][1]); + kernel[knl_idx]->get().setArg(idx++, openCLImage(input)); + if(mResource->mWeightUseBuffer){ + kernel[knl_idx]->get().setArg(idx++, *mResource->mKernelBuffer.get()); }else{ - kernel[knl_idx].setArg(idx++, openCLImage(mFilter.get())); + kernel[knl_idx]->get().setArg(idx++, openCLImage(mResource->mFilter.get())); } - kernel[knl_idx].setArg(idx++, openCLImage(mBias.get())); - kernel[knl_idx].setArg(idx++, openCLImage(output)); - kernel[knl_idx].setArg(idx++, sizeof(inputImageShape), inputImageShape); - kernel[knl_idx].setArg(idx++, static_cast(inputChannelBlocks)); - kernel[knl_idx].setArg(idx++, sizeof(outputImageShape), outputImageShape); - kernel[knl_idx].setArg(idx++, sizeof(stideShape), stideShape); - kernel[knl_idx].setArg(idx++, UP_DIV(width, 4)); - kernel[knl_idx].setArg(idx++, UP_DIV(outputShape.at(3), 4)); + kernel[knl_idx]->get().setArg(idx++, openCLImage(mResource->mBias.get())); + kernel[knl_idx]->get().setArg(idx++, openCLImage(output)); + kernel[knl_idx]->get().setArg(idx++, sizeof(inputImageShape), inputImageShape); + kernel[knl_idx]->get().setArg(idx++, static_cast(inputChannelBlocks)); + kernel[knl_idx]->get().setArg(idx++, sizeof(outputImageShape), outputImageShape); + kernel[knl_idx]->get().setArg(idx++, sizeof(stideShape), stideShape); + kernel[knl_idx]->get().setArg(idx++, UP_DIV(width, 4)); + kernel[knl_idx]->get().setArg(idx++, UP_DIV(outputShape.at(3), 4)); std::pair, uint32_t> retTune; - retTune = localWS2DDefault(globalWorkSize[knl_idx], mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), kernelName[knl_idx] + info, kernel[knl_idx]); + retTune = localWS2DDefault(globalWorkSize[knl_idx], maxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), kernelName[knl_idx] + info, kernel[knl_idx]); //printf("conv1x1 kernel_%d = %d [%d, %d]\n", knl_idx, retTune.second, retTune.first[0], retTune.first[1]); if(min_cost.first > retTune.second) { @@ -440,34 +389,34 @@ ErrorCode ConvExecution::onResize(const std::vector &inputs, const std int min_index = min_cost.second; //printf("min_index = %d %d\n", min_index, min_cost.first); mGlobalWorkSize = {globalWorkSize[min_index][0], globalWorkSize[min_index][1]}; - mKernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d", kernelName[min_index], mBuildOptions); + unit.kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d", kernelName[min_index], mResource->mBuildOptions); uint32_t idx = 0; - mKernel.setArg(idx++, mGlobalWorkSize[0]); - mKernel.setArg(idx++, mGlobalWorkSize[1]); - mKernel.setArg(idx++, openCLImage(input)); - if(mWeightUseBuffer){ - mKernel.setArg(idx++, *mKernelBuffer.get()); + unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + unit.kernel->get().setArg(idx++, openCLImage(input)); + if(mResource->mWeightUseBuffer){ + unit.kernel->get().setArg(idx++, *mResource->mKernelBuffer.get()); }else{ - mKernel.setArg(idx++, openCLImage(mFilter.get())); + unit.kernel->get().setArg(idx++, openCLImage(mResource->mFilter.get())); } - mKernel.setArg(idx++, openCLImage(mBias.get())); - mKernel.setArg(idx++, openCLImage(output)); - mKernel.setArg(idx++, sizeof(inputImageShape), inputImageShape); - mKernel.setArg(idx++, static_cast(inputChannelBlocks)); - mKernel.setArg(idx++, sizeof(outputImageShape), outputImageShape); - mKernel.setArg(idx++, sizeof(stideShape), stideShape); - mKernel.setArg(idx++, UP_DIV(width, 4)); - mKernel.setArg(idx++, UP_DIV(outputShape.at(3), 4)); - mOpenCLBackend->recordKernel2d(mKernel, mGlobalWorkSize, mLocalWorkSize); + unit.kernel->get().setArg(idx++, openCLImage(mResource->mBias.get())); + unit.kernel->get().setArg(idx++, openCLImage(output)); + unit.kernel->get().setArg(idx++, sizeof(inputImageShape), inputImageShape); + unit.kernel->get().setArg(idx++, static_cast(inputChannelBlocks)); + unit.kernel->get().setArg(idx++, sizeof(outputImageShape), outputImageShape); + unit.kernel->get().setArg(idx++, sizeof(stideShape), stideShape); + unit.kernel->get().setArg(idx++, UP_DIV(width, 4)); + unit.kernel->get().setArg(idx++, UP_DIV(outputShape.at(3), 4)); + mOpenCLBackend->recordKernel2d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); } }else { int inputImageShape[2] = {inputHeight, inputWidth}; int outputImageShape[2] = {height, width}; int kernelShape[2] = {kernelHeight, kernelWidth}; - int strideShape[2] = {mStrides[0], mStrides[1]}; + int strideShape[2] = {mResource->mStrides[0], mResource->mStrides[1]}; int paddingShape[2] = {mPaddings[0], mPaddings[1]}; - int dilationShape[2] = {mDilations[0], mDilations[1]}; + int dilationShape[2] = {mResource->mDilations[0], mResource->mDilations[1]}; const int total_kernel = 3; std::string kernelName[total_kernel] = {"conv_2d_c4h1w4", "conv_2d_c4h4w1", "conv_2d_c8h4w1" }; @@ -478,42 +427,42 @@ ErrorCode ConvExecution::onResize(const std::vector &inputs, const std int actual_kernel = total_kernel; - cl::Kernel kernel[total_kernel]; + std::shared_ptr kernel[total_kernel]; std::vector globalWorkSize[total_kernel]; std::vector localWorkSize[total_kernel]; std::pair min_cost(INT_MAX, 0);//(min_time, min_index) for(int knl_idx = 0; knl_idx < total_kernel; knl_idx++) { - kernel[knl_idx] = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d", kernelName[knl_idx], mBuildOptions); + kernel[knl_idx] = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d", kernelName[knl_idx], mResource->mBuildOptions); uint32_t maxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(kernel[knl_idx])); globalWorkSize[knl_idx] = {static_cast(UP_DIV(outputShape.at(3), itemC[knl_idx]) * UP_DIV(outputShape.at(2), itemW[knl_idx])), static_cast(outputShape.at(0) * UP_DIV(outputShape.at(1), itemH[knl_idx]))}; uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= kernel[knl_idx].setArg(idx++, globalWorkSize[knl_idx][0]); - ret |= kernel[knl_idx].setArg(idx++, globalWorkSize[knl_idx][1]); - ret |= kernel[knl_idx].setArg(idx++, openCLImage(input)); - if(mWeightUseBuffer){ - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(mFilter.get())); + ret |= kernel[knl_idx]->get().setArg(idx++, globalWorkSize[knl_idx][0]); + ret |= kernel[knl_idx]->get().setArg(idx++, globalWorkSize[knl_idx][1]); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLImage(input)); + if(mResource->mWeightUseBuffer){ + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(mResource->mFilter.get())); }else{ - ret |= kernel[knl_idx].setArg(idx++, openCLImage(mFilter.get())); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLImage(mResource->mFilter.get())); } - ret |= kernel[knl_idx].setArg(idx++, openCLImage(mBias.get())); - ret |= kernel[knl_idx].setArg(idx++, openCLImage(output)); - ret |= kernel[knl_idx].setArg(idx++, sizeof(inputImageShape), inputImageShape); - ret |= kernel[knl_idx].setArg(idx++, inputChannelBlocks); - ret |= kernel[knl_idx].setArg(idx++, sizeof(outputImageShape), outputImageShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(kernelShape), kernelShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(strideShape), strideShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(paddingShape), paddingShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(dilationShape), dilationShape); - ret |= kernel[knl_idx].setArg(idx++, UP_DIV(width, itemW[knl_idx])); - ret |= kernel[knl_idx].setArg(idx++, UP_DIV(outputShape.at(3), 4)); - ret |= kernel[knl_idx].setArg(idx++, UP_DIV(height, itemH[knl_idx])); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLImage(mResource->mBias.get())); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLImage(output)); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(inputImageShape), inputImageShape); + ret |= kernel[knl_idx]->get().setArg(idx++, inputChannelBlocks); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(outputImageShape), outputImageShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(kernelShape), kernelShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(strideShape), strideShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(paddingShape), paddingShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(dilationShape), dilationShape); + ret |= kernel[knl_idx]->get().setArg(idx++, UP_DIV(width, itemW[knl_idx])); + ret |= kernel[knl_idx]->get().setArg(idx++, UP_DIV(outputShape.at(3), 4)); + ret |= kernel[knl_idx]->get().setArg(idx++, UP_DIV(height, itemH[knl_idx])); MNN_CHECK_CL_SUCCESS(ret, "setArg ConvExecution Kernel Select"); std::pair, uint32_t> retTune; - retTune = localWS2DDefault(globalWorkSize[knl_idx], mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), kernelName[knl_idx] + info, kernel[knl_idx]); + retTune = localWS2DDefault(globalWorkSize[knl_idx], maxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), kernelName[knl_idx] + info, kernel[knl_idx]); if(min_cost.first > retTune.second) { min_cost.first = retTune.second; @@ -523,87 +472,42 @@ ErrorCode ConvExecution::onResize(const std::vector &inputs, const std } int min_index = min_cost.second; mGlobalWorkSize = {globalWorkSize[min_index][0], globalWorkSize[min_index][1]}; - mKernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d", kernelName[min_index], mBuildOptions); + unit.kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d", kernelName[min_index], mResource->mBuildOptions); uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, openCLImage(input)); - if(mWeightUseBuffer){ - ret |= mKernel.setArg(idx++, openCLBuffer(mFilter.get())); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, openCLImage(input)); + if(mResource->mWeightUseBuffer){ + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(mResource->mFilter.get())); }else{ - ret |= mKernel.setArg(idx++, openCLImage(mFilter.get())); + ret |= unit.kernel->get().setArg(idx++, openCLImage(mResource->mFilter.get())); } - ret |= mKernel.setArg(idx++, openCLImage(mBias.get())); - ret |= mKernel.setArg(idx++, openCLImage(output)); - ret |= mKernel.setArg(idx++, sizeof(inputImageShape), inputImageShape); - ret |= mKernel.setArg(idx++, inputChannelBlocks); - ret |= mKernel.setArg(idx++, sizeof(outputImageShape), outputImageShape); - ret |= mKernel.setArg(idx++, sizeof(kernelShape), kernelShape); - ret |= mKernel.setArg(idx++, sizeof(strideShape), strideShape); - ret |= mKernel.setArg(idx++, sizeof(paddingShape), paddingShape); - ret |= mKernel.setArg(idx++, sizeof(dilationShape), dilationShape); - ret |= mKernel.setArg(idx++, UP_DIV(width, itemW[min_index])); - ret |= mKernel.setArg(idx++, UP_DIV(outputShape.at(3), 4)); - ret |= mKernel.setArg(idx++, UP_DIV(height, itemH[min_index])); + ret |= unit.kernel->get().setArg(idx++, openCLImage(mResource->mBias.get())); + ret |= unit.kernel->get().setArg(idx++, openCLImage(output)); + ret |= unit.kernel->get().setArg(idx++, sizeof(inputImageShape), inputImageShape); + ret |= unit.kernel->get().setArg(idx++, inputChannelBlocks); + ret |= unit.kernel->get().setArg(idx++, sizeof(outputImageShape), outputImageShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(kernelShape), kernelShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(strideShape), strideShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(paddingShape), paddingShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(dilationShape), dilationShape); + ret |= unit.kernel->get().setArg(idx++, UP_DIV(width, itemW[min_index])); + ret |= unit.kernel->get().setArg(idx++, UP_DIV(outputShape.at(3), 4)); + ret |= unit.kernel->get().setArg(idx++, UP_DIV(height, itemH[min_index])); MNN_CHECK_CL_SUCCESS(ret, "setArg ConvExecution"); - mOpenCLBackend->recordKernel2d(mKernel, mGlobalWorkSize, mLocalWorkSize); + mOpenCLBackend->recordKernel2d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); } - mOpenCLBackend->endRecord(mRecording); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1]}; #ifdef LOG_VERBOSE MNN_PRINT("end ConvExecution onResize !\n"); #endif return NO_ERROR; } -ErrorCode ConvExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("Start ConvExecution onExecute !\n"); -#endif - -#ifndef ENABLE_OPENCL_TIME_PROFILER - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE -MNN_PRINT("end ConvExecution onExecute !\n"); -#endif - return NO_ERROR; - } -#endif - - if(mUseLocalMem){ -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Conv UseLocalMem", event}); - #else - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime()); -#endif - } - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - runKernel2D(mKernel, mGlobalWorkSize, mLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Conv2D", event}); -#else - runKernel2D(mKernel, mGlobalWorkSize, mLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end ConvExecution onExecute !\n"); -#endif - return NO_ERROR; -} - class ConvolutionCreator : public OpenCLBackend::Creator { public: virtual ~ConvolutionCreator() = default; @@ -612,7 +516,7 @@ class ConvolutionCreator : public OpenCLBackend::Creator { auto conv2D = op->main_as_Convolution2D(); std::vector inputShape = tensorShapeFormat(inputs[0]); const int inputChannels = inputShape.at(3); -#ifdef MNN_LOW_MEMORY +#if defined(MNN_LOW_MEMORY) && not defined(MNN_OPENCL_BUFFER_CLOSED) { auto conv2dParams = op->main_as_Convolution2D(); if ((static_cast(backend)->getMemory() == BackendConfig::Memory_Low) && (conv2dParams->quanParameter() != nullptr)) { @@ -648,7 +552,7 @@ class ConvolutionCreator : public OpenCLBackend::Creator { int maxWidth = static_cast(backend)->getOpenCLRuntime()->getMaxImage2DSize()[0]; int maxHeight = static_cast(backend)->getOpenCLRuntime()->getMaxImage2DSize()[1]; if (ConvWinograd::valid(conv2D->common(), inputs[0], outputs[0], maxWidth, maxHeight)) { - return new ConvWinograd(conv2D, backend); + return new ConvWinograd(op, backend); } return new ConvExecution(inputs, outputs, op, backend); diff --git a/source/backend/opencl/execution/image/ConvExecution.hpp b/source/backend/opencl/execution/image/ConvExecution.hpp index 91696fb04..537a8aec2 100644 --- a/source/backend/opencl/execution/image/ConvExecution.hpp +++ b/source/backend/opencl/execution/image/ConvExecution.hpp @@ -17,50 +17,60 @@ #include #include "backend/opencl/core/OpenCLBackend.hpp" #include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "CommonExecution.hpp" namespace MNN { namespace OpenCL { -class ConvCommonExecution : public Execution, public CommonExtension { +struct ConvResource { + const Convolution2D *mConv2dParams; + const Convolution2DCommon *mConv2dCommonParams; + std::shared_ptr mFilter; + std::shared_ptr mBias; + std::shared_ptr mKernelBuffer; + std::shared_ptr dequantScaleBuffer; + std::shared_ptr dequantOffsetBuffer; + std::vector mStrides{1, 1}; + std::vector mDilations{1, 1}; + std::set mBuildOptions; + bool mIsTurn = false; + bool mConv1x1Opt = false; + bool mWeightUseBuffer = false; + bool gemmOpt = false; + int mKernelWidth; + int mKernelHeight; + int mOutputChannel; + int mInputChannel; + uint32_t mMaxWorkGroupSize; +}; + +class ConvCommonExecution { public: ConvCommonExecution(const Convolution2D *op, Backend *backend); - ConvCommonExecution(Backend *backend) : Execution(backend){ + ConvCommonExecution(Backend *backend) { mOpenCLBackend = static_cast(backend); } virtual ~ConvCommonExecution(); protected: - std::shared_ptr mBias; + std::shared_ptr mResource; OpenCLBackend *mOpenCLBackend; }; -class ConvExecution : public ConvCommonExecution { +class ConvExecution : public ConvCommonExecution, public CommonExecution { public: ConvExecution(const std::vector &inputs, const std::vector &outputs, const MNN::Op *op, Backend *backend); + ConvExecution(std::shared_ptr resource, const Op* op, Backend* backend); virtual ~ConvExecution(); - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; + virtual bool onClone(Backend* bn, const Op* op, Execution** dst) override; static std::shared_ptr getBias(OpenCLBackend *backend, const Convolution2D *conv); private: - const Convolution2DCommon *mConv2dCommonParams; - std::vector mStrides{1, 1}; std::vector mPaddings{0, 0}; - std::vector mDilations{1, 1}; std::vector mGlobalWorkSize{1, 1, 1}; std::vector mLocalWorkSize{1, 1, 1, 1}; - std::shared_ptr mFilter; - cl::Kernel mKernel; - uint32_t mMaxWorkGroupSize; - bool mIsTurn = false; - bool mConv1x1Opt{false}; - bool mUseLocalMem{false}; - std::shared_ptr mKernelBuffer; - std::shared_ptr mBiasBuffer; - std::set mBuildOptions; - bool mWeightUseBuffer = false; }; } // namespace OpenCL diff --git a/source/backend/opencl/execution/image/ConvLowMemoryExecution.cpp b/source/backend/opencl/execution/image/ConvLowMemoryExecution.cpp index 18c4de421..cf9fc07fa 100644 --- a/source/backend/opencl/execution/image/ConvLowMemoryExecution.cpp +++ b/source/backend/opencl/execution/image/ConvLowMemoryExecution.cpp @@ -4,6 +4,7 @@ // Copyright © 2018, Alibaba Group Holding Limited // #ifdef MNN_LOW_MEMORY +#ifndef MNN_OPENCL_BUFFER_CLOSED #include "ConvLowMemoryExecution.hpp" // #define LOG_VERBOSE namespace MNN { @@ -11,8 +12,8 @@ namespace OpenCL { // set mDequantScale mDequantOffset mNumQuantBit mFilterDataPtr from mConv2dParams void ConvLowMemoryExecution::getInfoFromOpLowMemory(std::shared_ptr & quanCommon) { - quanCommon = ConvolutionCommon::load(mConv2dParams, this->backend(), false, true); - if ((mOpenCLBackend->getMemory() == BackendConfig::Memory_Low) && (mConv2dParams->quanParameter() != nullptr)) { + quanCommon = ConvolutionCommon::load(mResource->mConv2dParams, this->backend(), false, true); + if ((mOpenCLBackend->getMemory() == BackendConfig::Memory_Low) && (mResource->mConv2dParams->quanParameter() != nullptr)) { mLowMemoryFlag = true; } else { MNN_ERROR("Conv buf low memory init error.\n"); @@ -26,33 +27,17 @@ void ConvLowMemoryExecution::getInfoFromOpLowMemory(std::shared_ptralpha.get(); - int numAlpha = mOutputChannel; + int numAlpha = mResource->mOutputChannel; // set mDequantScale mDequantOffset int numAlphaPack = ROUND_UP(numAlpha, 16); - int numBiasPack = ROUND_UP(mOutputChannel, 16); int bytes = mOpenCLBackend->fpBytes(); - mResource->biasBuffer.reset(new cl::Buffer(mOpenCLBackend->getOpenCLRuntime()->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, ROUND_UP(mOutputChannel, 16) * bytes)); mResource->dequantScaleBuffer.reset(new cl::Buffer(mOpenCLBackend->getOpenCLRuntime()->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, numAlphaPack * bytes)); mResource->dequantOffsetBuffer.reset(new cl::Buffer(mOpenCLBackend->getOpenCLRuntime()->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, numAlphaPack * bytes)); // transfer data from src in cpu to dst in gpu cl_int resBias, resScale, resOffset; - auto biasPtrCL = mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueMapBuffer(*(mResource->biasBuffer.get()), true, CL_MAP_WRITE, 0, numBiasPack * bytes, nullptr, nullptr, &resBias); void * dequantScaleBufferMap = mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueMapBuffer(*(mResource->dequantScaleBuffer.get()), true, CL_MAP_WRITE, 0, numAlphaPack * bytes, nullptr, nullptr, &resScale); void * dequantOffsetBufferMap = mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueMapBuffer(*(mResource->dequantOffsetBuffer.get()), true, CL_MAP_WRITE, 0, numAlphaPack * bytes, nullptr, nullptr, &resOffset); - if (biasPtrCL != nullptr && resBias == CL_SUCCESS) { - ::memset(biasPtrCL, 0, numBiasPack * bytes); - if (nullptr != mConv2dParams->bias()) { - const float *biasDataPtr = mConv2dParams->bias()->data(); - if (bytes == 2){ - for(int i = 0; i < mOutputChannel; i++) { - ((half_float::half*)biasPtrCL)[i] = (half_float::half)(biasDataPtr[i]); - } - } else { - ::memcpy(biasPtrCL, biasDataPtr, mOutputChannel * sizeof(float)); - } - } - } ::memset(dequantScaleBufferMap, -1, numAlphaPack * bytes); ::memset(dequantOffsetBufferMap, 0, numAlphaPack * bytes); if (dequantScaleBufferMap != nullptr && dequantOffsetBufferMap != nullptr && resScale == CL_SUCCESS && resOffset == CL_SUCCESS) { @@ -85,7 +70,6 @@ void ConvLowMemoryExecution::getInfoFromOpLowMemory(std::shared_ptrgetOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(*(mResource->biasBuffer.get()), biasPtrCL); mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(*(mResource->dequantScaleBuffer.get()), dequantScaleBufferMap); mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(*(mResource->dequantOffsetBuffer.get()), dequantOffsetBufferMap); // set mFilterDataPtr @@ -94,7 +78,7 @@ void ConvLowMemoryExecution::getInfoFromOpLowMemory(std::shared_ptr & quanCommon) { cl_int res; - std::shared_ptr filterBuffer(Tensor::createDevice({ROUND_UP(mOutputChannel, 8)/*Cout pack set to max 8*/, ROUND_UP(mInputChannel, packCin), mResource->mKernelWidth, mResource->mKernelHeight})); + std::shared_ptr filterBuffer(Tensor::createDevice({ROUND_UP(mResource->mOutputChannel, 8)/*Cout pack set to max 8*/, ROUND_UP(mResource->mInputChannel, packCin), mResource->mKernelWidth, mResource->mKernelHeight})); size_t buffer_size = filterBuffer->usize() / sizeof(float); float *dequantAlpha = quanCommon->alpha.get(); // shared part for all cases @@ -105,21 +89,21 @@ void ConvLowMemoryExecution::set1x1WeightLowMemory(int packCout, int packCin, vo // int4 case buffer_size /= 2; } else {/* More types to be supported. */} - mResource->kernelBuffer.reset(new cl::Buffer(mOpenCLBackend->getOpenCLRuntime()->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, buffer_size)); - auto kernelBufferPtr = mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueMapBuffer(*(mResource->kernelBuffer.get()), true, CL_MAP_WRITE, 0, buffer_size, nullptr, nullptr, &res); + mResource->mKernelBuffer.reset(new cl::Buffer(mOpenCLBackend->getOpenCLRuntime()->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, buffer_size)); + auto kernelBufferPtr = mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueMapBuffer(*(mResource->mKernelBuffer.get()), true, CL_MAP_WRITE, 0, buffer_size, nullptr, nullptr, &res); if(kernelBufferPtr != nullptr && res == CL_SUCCESS){ ::memset(kernelBufferPtr, 0, buffer_size); - for(int o = 0; o < mOutputChannel; o++){ + for(int o = 0; o < mResource->mOutputChannel; o++){ float zero = 0; if(quanCommon->asymmetric){ zero = (-dequantAlpha[2 * o + 1])/dequantAlpha[2 * o]; } int i = 0; - for(; i < mInputChannel; i++){ - int bufferIdx = (o/packCout) * packCin*packCout + (i/packCin)*packCin*ROUND_UP(mOutputChannel, packCout) + (i%packCin)*packCout + (o%packCout);//(Ci/packCin, Co/packCout, packCin, packCout) - int filterIdx = o*mInputChannel + i; + for(; i < mResource->mInputChannel; i++){ + int bufferIdx = (o/packCout) * packCin*packCout + (i/packCin)*packCin*ROUND_UP(mResource->mOutputChannel, packCout) + (i%packCin)*packCout + (o%packCout);//(Ci/packCin, Co/packCout, packCin, packCout) + int filterIdx = o*mResource->mInputChannel + i; if (mNumQuantBit == 8) { // int8 case ((int8_t *)kernelBufferPtr)[bufferIdx] = (int8_t)(((int8_t *)filterDataPtr)[filterIdx]); @@ -132,8 +116,8 @@ void ConvLowMemoryExecution::set1x1WeightLowMemory(int packCout, int packCin, vo } } else {/* More types to be supported. */} } - for(; i < ROUND_UP(mInputChannel, 4); i++){ - int bufferIdx = (o/packCout) * packCin*packCout + (i/packCin)*packCin*ROUND_UP(mOutputChannel, packCout) + (i%packCin)*packCout + (o%packCout);//(Ci/packCin, Co/packCout, packCin, packCout) + for(; i < ROUND_UP(mResource->mInputChannel, 4); i++){ + int bufferIdx = (o/packCout) * packCin*packCout + (i/packCin)*packCin*ROUND_UP(mResource->mOutputChannel, packCout) + (i%packCin)*packCout + (o%packCout);//(Ci/packCin, Co/packCout, packCin, packCout) if (mNumQuantBit == 8) { // int8 case ((int8_t *)kernelBufferPtr)[bufferIdx] = (int8_t)(zero); @@ -151,13 +135,13 @@ void ConvLowMemoryExecution::set1x1WeightLowMemory(int packCout, int packCin, vo MNN_ERROR("set1x1WeightLowMemory: Map error ptrCL == nullptr \n"); MNN_ASSERT(false); } - mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(*(mResource->kernelBuffer.get()), kernelBufferPtr); + mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(*(mResource->mKernelBuffer.get()), kernelBufferPtr); } // set mFilter for the general kernels void ConvLowMemoryExecution::setGeneralWeightLowMemory(void* filterDataPtr, std::shared_ptr & quanCommon) { if (filterDataPtr != nullptr) { - std::vector filterImageShape{ROUND_UP(mInputChannel, 4), (UP_DIV(mOutputChannel, 4) * mResource->mKernelWidth * mResource->mKernelHeight)}; - std::shared_ptr filterBuffer(Tensor::createDevice({mOutputChannel, ROUND_UP(mInputChannel, 4), mResource->mKernelWidth, mResource->mKernelHeight})); + std::vector filterImageShape{ROUND_UP(mResource->mInputChannel, 4), (UP_DIV(mResource->mOutputChannel, 4) * mResource->mKernelWidth * mResource->mKernelHeight)}; + std::shared_ptr filterBuffer(Tensor::createDevice({mResource->mOutputChannel, ROUND_UP(mResource->mInputChannel, 4), mResource->mKernelWidth, mResource->mKernelHeight})); // int buffer_size = filterBuffer->elementSize(); size_t buffer_size = filterBuffer->usize() / sizeof(float); buffer_size *= sizeof(int8_t); @@ -170,17 +154,17 @@ void ConvLowMemoryExecution::setGeneralWeightLowMemory(void* filterDataPtr, std: if(ptrCL != nullptr && res == CL_SUCCESS) { ::memset(ptrCL, 0, buffer_size); const int copy_size = mResource->mKernelWidth * mResource->mKernelHeight * sizeof(int8_t); - for(int oc=0; ocmOutputChannel; oc++) { float zero = 0; if(quanCommon->asymmetric){ zero = (-dequantAlpha[2 * oc + 1])/dequantAlpha[2 * oc]; } int ic = 0; - for(; icmKernelWidth * mResource->mKernelHeight, ((int8_t *)filterDataPtr) + (oc * mInputChannel + ic) * mResource->mKernelWidth * mResource->mKernelHeight, copy_size); + for(; icmInputChannel; ic++) { + ::memcpy((int8_t *)ptrCL + (oc * ROUND_UP(mResource->mInputChannel, 4) + ic) * mResource->mKernelWidth * mResource->mKernelHeight, ((int8_t *)filterDataPtr) + (oc * mResource->mInputChannel + ic) * mResource->mKernelWidth * mResource->mKernelHeight, copy_size); } - for(; icmKernelWidth * mResource->mKernelHeight] = (int8_t)(zero); + for(; icmInputChannel, 4); ic++) { + ((int8_t *)ptrCL)[(oc * ROUND_UP(mResource->mInputChannel, 4) + ic) * mResource->mKernelWidth * mResource->mKernelHeight] = (int8_t)(zero); } } } else { @@ -190,23 +174,23 @@ void ConvLowMemoryExecution::setGeneralWeightLowMemory(void* filterDataPtr, std: // convert to NC4HW4 if (mNumQuantBit == 8) { // ROUND_UP(IC, 4), UP_DIV(OC, 4) * mKernelWidth * mKernelHeight - mResource->filter.reset(Tensor::createDevice({1, filterImageShape[1], 1, 4 * filterImageShape[0]})); - mResource->kernelBuffer.reset(new cl::Buffer(mOpenCLBackend->getOpenCLRuntime()->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, buffer_size)); - mResource->filter->buffer().device = (uint64_t)(mResource->kernelBuffer.get()); + mResource->mFilter.reset(Tensor::createDevice({1, filterImageShape[1], 1, 4 * filterImageShape[0]})); + mResource->mKernelBuffer.reset(new cl::Buffer(mOpenCLBackend->getOpenCLRuntime()->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, buffer_size)); + mResource->mFilter->buffer().device = (uint64_t)(mResource->mKernelBuffer.get()); MNN::OpenCL::BufferConvertor bufferConvertor{mOpenCLBackend->getOpenCLRuntime()}; // filterBuffer shape: {OC, ROUND_UP(IC, 4), mKernelWidth, mKernelHeight} - bufferConvertor.convertToNC4HW4Buffer(filterBuffer.get(), MNN::OpenCL::CONV2D_FILTER, mResource->filter.get(), false, true, mLowMemoryFlag, mNumQuantBit); + bufferConvertor.convertToNC4HW4Buffer(filterBuffer.get(), MNN::OpenCL::CONV2D_FILTER, mResource->mFilter.get(), false, true, mLowMemoryFlag, mNumQuantBit); } else if (mNumQuantBit == 4){ // ROUND_UP(IC, 4), UP_DIV(OC, 4) * mKernelWidth * mKernelHeight // For int4 case, data stored in mFilter should be uint8_t // while "Tensor::createDevice" occupies more memory than "Tensor::createDevice". // Therefore, we use "Tensor::createDevice" currently, leaving "Tensor::createDevice" to be supported. - mResource->filter.reset(Tensor::createDevice({1, filterImageShape[1], 1, 2 * filterImageShape[0]})); - mResource->kernelBuffer.reset(new cl::Buffer(mOpenCLBackend->getOpenCLRuntime()->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, buffer_size/2)); - mResource->filter->buffer().device = (uint64_t)(mResource->kernelBuffer.get()); + mResource->mFilter.reset(Tensor::createDevice({1, filterImageShape[1], 1, 2 * filterImageShape[0]})); + mResource->mKernelBuffer.reset(new cl::Buffer(mOpenCLBackend->getOpenCLRuntime()->context(), CL_MEM_READ_WRITE | CL_MEM_ALLOC_HOST_PTR, buffer_size/2)); + mResource->mFilter->buffer().device = (uint64_t)(mResource->mKernelBuffer.get()); MNN::OpenCL::BufferConvertor bufferConvertor{mOpenCLBackend->getOpenCLRuntime()}; // filterBuffer shape: {OC, ROUND_UP(IC, 4), mKernelWidth, mKernelHeight} - bufferConvertor.convertToNC4HW4Buffer(filterBuffer.get(), MNN::OpenCL::CONV2D_FILTER, mResource->filter.get(), false, true, mLowMemoryFlag, mNumQuantBit); + bufferConvertor.convertToNC4HW4Buffer(filterBuffer.get(), MNN::OpenCL::CONV2D_FILTER, mResource->mFilter.get(), false, true, mLowMemoryFlag, mNumQuantBit); } else {/* More types to be supported. */} } else { MNN_ERROR("GetConvParams Error: filterDataPtr == nullptr. \n"); @@ -215,10 +199,10 @@ void ConvLowMemoryExecution::setGeneralWeightLowMemory(void* filterDataPtr, std: } // select the fastest kernel for the 1x1 cases by tuning void ConvLowMemoryExecution::tune1x1CaseLowMemory(Tensor * input, Tensor * output) { + auto &unit = mUnits[0]; std::vector inputShape = tensorShapeFormat(input); std::vector outputShape = tensorShapeFormat(output); auto runTime = ((OpenCLBackend *)backend())->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); const int height = outputShape.at(1); const int width = outputShape.at(2); const int outChannel = outputShape.at(3); @@ -226,7 +210,7 @@ void ConvLowMemoryExecution::tune1x1CaseLowMemory(Tensor * input, Tensor * outpu const int inputWidth = inputShape.at(2); const int inputChannels = inputShape.at(3); const int inputChannelBlocks = UP_DIV(inputChannels, 4); - std::string info = std::to_string(inputChannels) + "_" + std::to_string(mResource->mKernelHeight) + "_" + std::to_string(mResource->mKernelWidth) + "_" + std::to_string(mResource->mStrides[0]) + "_" + std::to_string(mResource->mStrides[1]) + "_" + std::to_string(mResource->mDilations[0]) + "_" + std::to_string(mResource->mDilations[1]); + std::string info = std::to_string(inputChannels) + "_" + std::to_string(outChannel) + "_" + std::to_string(mResource->mKernelHeight) + "_" + std::to_string(mResource->mKernelWidth) + "_" + std::to_string(mResource->mStrides[0]) + "_" + std::to_string(mResource->mStrides[1]) + "_" + std::to_string(mResource->mDilations[0]) + "_" + std::to_string(mResource->mDilations[1]); int inputImageShape[2] = {inputHeight, inputWidth}; int outputImageShape[2] = {height, width}; int stideShape[2] = {mResource->mStrides[0], mResource->mStrides[1]}; @@ -237,32 +221,32 @@ void ConvLowMemoryExecution::tune1x1CaseLowMemory(Tensor * input, Tensor * outpu int itemW[total_kernel] = {4, 4}; int actual_kernel = total_kernel; - cl::Kernel kernel[total_kernel]; + std::shared_ptr kernel[total_kernel]; std::vector globalWorkSize[total_kernel]; std::vector localWorkSize[total_kernel]; std::pair min_cost(INT_MAX, 0);//(min_time, min_index) cl_int ret = CL_SUCCESS; for(int knl_idx = 0; knl_idx < actual_kernel; knl_idx++) { - std::set buildOption = mResource->buildOptions; + std::set buildOption = mResource->mBuildOptions; kernel[knl_idx] = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d", kernelName[knl_idx], buildOption); uint32_t maxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(kernel[knl_idx])); globalWorkSize[knl_idx] = {static_cast(UP_DIV(outputShape.at(3), itemC[knl_idx]) * UP_DIV(outputShape.at(2), itemW[knl_idx])), static_cast(outputShape.at(0) * UP_DIV(outputShape.at(1), itemH[knl_idx]))}; uint32_t idx = 0; - ret |= kernel[knl_idx].setArg(idx++, globalWorkSize[knl_idx][0]); - ret |= kernel[knl_idx].setArg(idx++, globalWorkSize[knl_idx][1]); - ret |= kernel[knl_idx].setArg(idx++, openCLImage(input)); - ret |= kernel[knl_idx].setArg(idx++, *mResource->kernelBuffer.get()); - ret |= kernel[knl_idx].setArg(idx++, *mResource->dequantScaleBuffer.get()); - ret |= kernel[knl_idx].setArg(idx++, *mResource->dequantOffsetBuffer.get()); - ret |= kernel[knl_idx].setArg(idx++, *mResource->biasBuffer.get()); - ret |= kernel[knl_idx].setArg(idx++, openCLImage(output)); - ret |= kernel[knl_idx].setArg(idx++, sizeof(inputImageShape), inputImageShape); - ret |= kernel[knl_idx].setArg(idx++, static_cast(inputChannelBlocks)); - ret |= kernel[knl_idx].setArg(idx++, sizeof(outputImageShape), outputImageShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(stideShape), stideShape); - ret |= kernel[knl_idx].setArg(idx++, UP_DIV(width, 4)); - ret |= kernel[knl_idx].setArg(idx++, UP_DIV(outputShape.at(3), 4)); + ret |= kernel[knl_idx]->get().setArg(idx++, globalWorkSize[knl_idx][0]); + ret |= kernel[knl_idx]->get().setArg(idx++, globalWorkSize[knl_idx][1]); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLImage(input)); + ret |= kernel[knl_idx]->get().setArg(idx++, *mResource->mKernelBuffer.get()); + ret |= kernel[knl_idx]->get().setArg(idx++, *mResource->dequantScaleBuffer.get()); + ret |= kernel[knl_idx]->get().setArg(idx++, *mResource->dequantOffsetBuffer.get()); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLImage(mResource->mBias.get())); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLImage(output)); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(inputImageShape), inputImageShape); + ret |= kernel[knl_idx]->get().setArg(idx++, static_cast(inputChannelBlocks)); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(outputImageShape), outputImageShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(stideShape), stideShape); + ret |= kernel[knl_idx]->get().setArg(idx++, UP_DIV(width, 4)); + ret |= kernel[knl_idx]->get().setArg(idx++, UP_DIV(outputShape.at(3), 4)); std::pair, uint32_t> retTune; retTune = localWS2DDefault(globalWorkSize[knl_idx], maxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), kernelName[knl_idx] + info, kernel[knl_idx]); @@ -277,34 +261,36 @@ void ConvLowMemoryExecution::tune1x1CaseLowMemory(Tensor * input, Tensor * outpu int min_index = min_cost.second; mGlobalWorkSize = {globalWorkSize[min_index][0], globalWorkSize[min_index][1]}; - std::set buildOption = mResource->buildOptions; - mKernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d", kernelName[min_index], buildOption); + std::set buildOption = mResource->mBuildOptions; + unit.kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d", kernelName[min_index], buildOption); uint32_t idx = 0; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, openCLImage(input)); - ret |= mKernel.setArg(idx++, *mResource->kernelBuffer.get()); - ret |= mKernel.setArg(idx++, *mResource->dequantScaleBuffer.get()); - ret |= mKernel.setArg(idx++, *mResource->dequantOffsetBuffer.get()); - ret |= mKernel.setArg(idx++, *mResource->biasBuffer.get()); - ret |= mKernel.setArg(idx++, openCLImage(output)); - ret |= mKernel.setArg(idx++, sizeof(inputImageShape), inputImageShape); - ret |= mKernel.setArg(idx++, static_cast(inputChannelBlocks)); - ret |= mKernel.setArg(idx++, sizeof(outputImageShape), outputImageShape); - ret |= mKernel.setArg(idx++, sizeof(stideShape), stideShape); - ret |= mKernel.setArg(idx++, UP_DIV(width, 4)); - ret |= mKernel.setArg(idx++, UP_DIV(outputShape.at(3), 4)); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, openCLImage(input)); + ret |= unit.kernel->get().setArg(idx++, *mResource->mKernelBuffer.get()); + ret |= unit.kernel->get().setArg(idx++, *mResource->dequantScaleBuffer.get()); + ret |= unit.kernel->get().setArg(idx++, *mResource->dequantOffsetBuffer.get()); + ret |= unit.kernel->get().setArg(idx++, openCLImage(mResource->mBias.get())); + ret |= unit.kernel->get().setArg(idx++, openCLImage(output)); + ret |= unit.kernel->get().setArg(idx++, sizeof(inputImageShape), inputImageShape); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputChannelBlocks)); + ret |= unit.kernel->get().setArg(idx++, sizeof(outputImageShape), outputImageShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(stideShape), stideShape); + ret |= unit.kernel->get().setArg(idx++, UP_DIV(width, 4)); + ret |= unit.kernel->get().setArg(idx++, UP_DIV(outputShape.at(3), 4)); MNN_CHECK_CL_SUCCESS(ret, "setArg Conv1x1LowMemory"); - mOpenCLBackend->recordKernel2d(mKernel, mGlobalWorkSize, mLocalWorkSize); - mOpenCLBackend->endRecord(mRecording); + mOpenCLBackend->recordKernel2d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); + + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1]}; return; } // select the fastest kernel for the general cases by tuning void ConvLowMemoryExecution::tuneGeneralCaseLowMemory(Tensor * input, Tensor * output) { + auto &unit = mUnits[0]; std::vector inputShape = tensorShapeFormat(input); std::vector outputShape = tensorShapeFormat(output); auto runTime = ((OpenCLBackend *)backend())->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); const int height = outputShape.at(1); const int width = outputShape.at(2); const int outChannel = outputShape.at(3); @@ -312,7 +298,7 @@ void ConvLowMemoryExecution::tuneGeneralCaseLowMemory(Tensor * input, Tensor * o const int inputWidth = inputShape.at(2); const int inputChannels = inputShape.at(3); const int inputChannelBlocks = UP_DIV(inputChannels, 4); - std::string info = std::to_string(inputChannels) + "_" + std::to_string(mResource->mKernelHeight) + "_" + std::to_string(mResource->mKernelWidth) + "_" + std::to_string(mResource->mStrides[0]) + "_" + std::to_string(mResource->mStrides[1]) + "_" + std::to_string(mResource->mDilations[0]) + "_" + std::to_string(mResource->mDilations[1]); + std::string info = std::to_string(inputChannels) + "_" + std::to_string(outChannel) + "_" + std::to_string(mResource->mKernelHeight) + "_" + std::to_string(mResource->mKernelWidth) + "_" + std::to_string(mResource->mStrides[0]) + "_" + std::to_string(mResource->mStrides[1]) + "_" + std::to_string(mResource->mDilations[0]) + "_" + std::to_string(mResource->mDilations[1]); int inputImageShape[2] = {inputHeight, inputWidth}; int outputImageShape[2] = {height, width}; int kernelShape[2] = {mResource->mKernelHeight, mResource->mKernelWidth}; @@ -325,37 +311,37 @@ void ConvLowMemoryExecution::tuneGeneralCaseLowMemory(Tensor * input, Tensor * o int itemH[total_kernel] = {1, 4, 4}; int itemW[total_kernel] = {4, 1, 1}; int actual_kernel = total_kernel; - cl::Kernel kernel[total_kernel]; + std::shared_ptr kernel[total_kernel]; std::vector globalWorkSize[total_kernel]; std::vector localWorkSize[total_kernel]; std::pair min_cost(INT_MAX, 0);//(min_time, min_index) // MNN_PRINT("Checking kernel %d.\n", knlCheck); for (int knl_idx = 0; knl_idx < actual_kernel; knl_idx++) { - std::set buildOption = mResource->buildOptions; + std::set buildOption = mResource->mBuildOptions; kernel[knl_idx] = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d", kernelName[knl_idx], buildOption); uint32_t maxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(kernel[knl_idx])); globalWorkSize[knl_idx] = {static_cast(UP_DIV(outputShape.at(3), itemC[knl_idx]) * UP_DIV(outputShape.at(2), itemW[knl_idx])), static_cast(outputShape.at(0) * UP_DIV(outputShape.at(1), itemH[knl_idx]))}; uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= kernel[knl_idx].setArg(idx++, globalWorkSize[knl_idx][0]); - ret |= kernel[knl_idx].setArg(idx++, globalWorkSize[knl_idx][1]); - ret |= kernel[knl_idx].setArg(idx++, openCLImage(input)); - ret |= kernel[knl_idx].setArg(idx++, openCLBuffer(mResource->filter.get())); - ret |= kernel[knl_idx].setArg(idx++, *mResource->dequantScaleBuffer.get()); - ret |= kernel[knl_idx].setArg(idx++, *mResource->dequantOffsetBuffer.get()); - ret |= kernel[knl_idx].setArg(idx++, *mResource->biasBuffer.get()); - ret |= kernel[knl_idx].setArg(idx++, openCLImage(output)); - ret |= kernel[knl_idx].setArg(idx++, sizeof(inputImageShape), inputImageShape); - ret |= kernel[knl_idx].setArg(idx++, inputChannelBlocks); - ret |= kernel[knl_idx].setArg(idx++, sizeof(outputImageShape), outputImageShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(kernelShape), kernelShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(strideShape), strideShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(paddingShape), paddingShape); - ret |= kernel[knl_idx].setArg(idx++, sizeof(dilationShape), dilationShape); - ret |= kernel[knl_idx].setArg(idx++, UP_DIV(width, itemW[knl_idx])); - ret |= kernel[knl_idx].setArg(idx++, UP_DIV(outputShape.at(3), 4)); - ret |= kernel[knl_idx].setArg(idx++, UP_DIV(height, itemH[knl_idx])); + ret |= kernel[knl_idx]->get().setArg(idx++, globalWorkSize[knl_idx][0]); + ret |= kernel[knl_idx]->get().setArg(idx++, globalWorkSize[knl_idx][1]); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLImage(input)); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLBuffer(mResource->mFilter.get())); + ret |= kernel[knl_idx]->get().setArg(idx++, *mResource->dequantScaleBuffer.get()); + ret |= kernel[knl_idx]->get().setArg(idx++, *mResource->dequantOffsetBuffer.get()); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLImage(mResource->mBias.get())); + ret |= kernel[knl_idx]->get().setArg(idx++, openCLImage(output)); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(inputImageShape), inputImageShape); + ret |= kernel[knl_idx]->get().setArg(idx++, inputChannelBlocks); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(outputImageShape), outputImageShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(kernelShape), kernelShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(strideShape), strideShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(paddingShape), paddingShape); + ret |= kernel[knl_idx]->get().setArg(idx++, sizeof(dilationShape), dilationShape); + ret |= kernel[knl_idx]->get().setArg(idx++, UP_DIV(width, itemW[knl_idx])); + ret |= kernel[knl_idx]->get().setArg(idx++, UP_DIV(outputShape.at(3), 4)); + ret |= kernel[knl_idx]->get().setArg(idx++, UP_DIV(height, itemH[knl_idx])); MNN_CHECK_CL_SUCCESS(ret, "setArg ConvLowMemory Kernel Select"); std::pair, int> retTune; retTune = localWS2DDefault(globalWorkSize[knl_idx], maxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), kernelName[knl_idx] + info, kernel[knl_idx]); @@ -368,39 +354,41 @@ void ConvLowMemoryExecution::tuneGeneralCaseLowMemory(Tensor * input, Tensor * o int min_index = min_cost.second; mGlobalWorkSize = {globalWorkSize[min_index][0], globalWorkSize[min_index][1]}; - std::set buildOption = mResource->buildOptions; - mKernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d", kernelName[min_index], buildOption); + std::set buildOption = mResource->mBuildOptions; + unit.kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("conv_2d", kernelName[min_index], buildOption); uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, openCLImage(input)); - ret |= mKernel.setArg(idx++, openCLBuffer(mResource->filter.get())); - ret |= mKernel.setArg(idx++, *mResource->dequantScaleBuffer.get()); - ret |= mKernel.setArg(idx++, *mResource->dequantOffsetBuffer.get()); - ret |= mKernel.setArg(idx++, *mResource->biasBuffer.get()); - ret |= mKernel.setArg(idx++, openCLImage(output)); - ret |= mKernel.setArg(idx++, sizeof(inputImageShape), inputImageShape); - ret |= mKernel.setArg(idx++, inputChannelBlocks); - ret |= mKernel.setArg(idx++, sizeof(outputImageShape), outputImageShape); - ret |= mKernel.setArg(idx++, sizeof(kernelShape), kernelShape); - ret |= mKernel.setArg(idx++, sizeof(strideShape), strideShape); - ret |= mKernel.setArg(idx++, sizeof(paddingShape), paddingShape); - ret |= mKernel.setArg(idx++, sizeof(dilationShape), dilationShape); - ret |= mKernel.setArg(idx++, UP_DIV(width, itemW[min_index])); - ret |= mKernel.setArg(idx++, UP_DIV(outputShape.at(3), 4)); - ret |= mKernel.setArg(idx++, UP_DIV(height, itemH[min_index])); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, openCLImage(input)); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(mResource->mFilter.get())); + ret |= unit.kernel->get().setArg(idx++, *mResource->dequantScaleBuffer.get()); + ret |= unit.kernel->get().setArg(idx++, *mResource->dequantOffsetBuffer.get()); + ret |= unit.kernel->get().setArg(idx++, openCLImage(mResource->mBias.get())); + ret |= unit.kernel->get().setArg(idx++, openCLImage(output)); + ret |= unit.kernel->get().setArg(idx++, sizeof(inputImageShape), inputImageShape); + ret |= unit.kernel->get().setArg(idx++, inputChannelBlocks); + ret |= unit.kernel->get().setArg(idx++, sizeof(outputImageShape), outputImageShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(kernelShape), kernelShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(strideShape), strideShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(paddingShape), paddingShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(dilationShape), dilationShape); + ret |= unit.kernel->get().setArg(idx++, UP_DIV(width, itemW[min_index])); + ret |= unit.kernel->get().setArg(idx++, UP_DIV(outputShape.at(3), 4)); + ret |= unit.kernel->get().setArg(idx++, UP_DIV(height, itemH[min_index])); MNN_CHECK_CL_SUCCESS(ret, "setArg ConvLowMemory"); - mOpenCLBackend->recordKernel2d(mKernel, mGlobalWorkSize, mLocalWorkSize); - mOpenCLBackend->endRecord(mRecording); + mOpenCLBackend->recordKernel2d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); + + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1]}; return; } void ConvLowMemoryExecution::tuneGemmLowMemory(Tensor * input, Tensor * output) { + auto &unit = mUnits[0]; std::vector inputShape = tensorShapeFormat(input); std::vector outputShape = tensorShapeFormat(output); auto runTime = ((OpenCLBackend *)backend())->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); const int outChannel = outputShape.at(3); const int inputChannels = inputShape.at(3); const int batch = outputShape.at(0); @@ -414,41 +402,44 @@ void ConvLowMemoryExecution::tuneGemmLowMemory(Tensor * input, Tensor * output) kernelname = "gemm_conv_b2"; global_y = UP_DIV(batch, 2); } - mKernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("gemm", kernelname, mResource->buildOptions); - uint32_t maxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(mKernel)); + std::string info = std::to_string(inputChannels) + "_" + std::to_string(outChannel); + unit.kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("gemm", kernelname, mResource->mBuildOptions); + uint32_t maxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(unit.kernel)); mGlobalWorkSize = {static_cast(global_x), static_cast(global_y)}; // MNN_PRINT("Kernel is %d.\n", min_index); uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, openCLImage(input)); - ret |= mKernel.setArg(idx++, *mResource->kernelBuffer.get()); - ret |= mKernel.setArg(idx++, *mResource->dequantScaleBuffer.get()); - ret |= mKernel.setArg(idx++, *mResource->dequantOffsetBuffer.get()); - ret |= mKernel.setArg(idx++, *mResource->biasBuffer.get()); - ret |= mKernel.setArg(idx++, openCLImage(output)); - ret |= mKernel.setArg(idx++, static_cast(outputChannelBlocks)); - ret |= mKernel.setArg(idx++, static_cast(inputChannelBlocks)); - ret |= mKernel.setArg(idx++, static_cast(batch)); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, openCLImage(input)); + ret |= unit.kernel->get().setArg(idx++, *mResource->mKernelBuffer.get()); + ret |= unit.kernel->get().setArg(idx++, *mResource->dequantScaleBuffer.get()); + ret |= unit.kernel->get().setArg(idx++, *mResource->dequantOffsetBuffer.get()); + ret |= unit.kernel->get().setArg(idx++, openCLImage(mResource->mBias.get())); + ret |= unit.kernel->get().setArg(idx++, openCLImage(output)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputChannelBlocks)); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputChannelBlocks)); + ret |= unit.kernel->get().setArg(idx++, static_cast(batch)); MNN_CHECK_CL_SUCCESS(ret, "setArg gemm_conv"); - mLocalWorkSize = localWS2DDefault(mGlobalWorkSize, maxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), kernelname, mKernel).first; - mOpenCLBackend->recordKernel2d(mKernel, mGlobalWorkSize, mLocalWorkSize); - mOpenCLBackend->endRecord(mRecording); + mLocalWorkSize = localWS2DDefault(mGlobalWorkSize, maxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), kernelname + info, unit.kernel).first; + mOpenCLBackend->recordKernel2d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); + + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1]}; return; } ConvLowMemoryExecution::ConvLowMemoryExecution(const std::vector &inputs, const std::vector &outputs, const MNN::Op *op, Backend *backend) - : ConvCommonExecution(backend) { + : ConvCommonExecution(op->main_as_Convolution2D(), backend), CommonExecution(backend, op) { #ifdef LOG_VERBOSE MNN_PRINT("Start ConvLowMemoryExecution init !\n"); #endif - mResource.reset(new ConvResource); + auto &unit = mUnits[0]; mOpenCLBackend = static_cast(backend); const auto *conv2dParams = op->main_as_Convolution2D(); const auto *conv2dCommonParams = conv2dParams->common(); - mConv2dParams = conv2dParams; - mResource->conv2dCommonParams = conv2dCommonParams; + mResource->mConv2dParams = conv2dParams; + mResource->mConv2dCommonParams = conv2dCommonParams; mResource->mStrides = {conv2dCommonParams->strideY(), conv2dCommonParams->strideX()}; mResource->mDilations = {conv2dCommonParams->dilateY(), conv2dCommonParams->dilateX()}; auto padding = ConvolutionCommon::convolutionPad(inputs[0], outputs[0], conv2dCommonParams); @@ -457,19 +448,14 @@ ConvLowMemoryExecution::ConvLowMemoryExecution(const std::vector &inpu mResource->mKernelWidth = conv2dCommonParams->kernelX(); mResource->mKernelHeight = conv2dCommonParams->kernelY(); - mOutputChannel = conv2dCommonParams->outputCount(); - mInputChannel = conv2dCommonParams->inputCount(); + mResource->mOutputChannel = conv2dCommonParams->outputCount(); + mResource->mInputChannel = conv2dCommonParams->inputCount(); std::shared_ptr quanCommon; // set mDequantScale, mDequantOffset, mFilterDataPtr // prepare mDequantScale mDequantOffset mFilterDataPtr getInfoFromOpLowMemory(quanCommon); //select opt conv method - //std::vector inputShape = tensorShapeFormat(inputs[0]); - //const int inputChannels = inputShape.at(3); - //const int batch = inputShape.at(0); - //printf("mConv1x1Opt = %d mKernelHeight = %d mKernelWidth = %d mPaddings[0] = %d mPaddings[1] = %d mStrides[0] = %d mStrides[1] = %d inputs[0]->width() = %d inputs[0]->height() = %d mOutputChannel = %d inputChannels = %d batch = %d\n", mConv1x1Opt, mKernelHeight, mKernelWidth, - //mPaddings[0], mPaddings[1], mStrides[0], mStrides[1], inputs[0]->width(), inputs[0]->height(), mOutputChannel, inputChannels, batch); - if (mResource->mKernelHeight == mResource->mKernelWidth && mResource->mKernelHeight == 1 && mResource->mStrides[0] == 1 && mResource->mStrides[1] == 1 ) { + if (mResource->mKernelHeight == mResource->mKernelWidth && mResource->mKernelHeight == 1 && mResource->mStrides[0] == 1 && mResource->mStrides[1] == 1) { // set mKernelBuffer for 1x1 case // At first, set packCout equal to 4 set1x1WeightLowMemory(4, 4, mFilterDataPtr, quanCommon); @@ -478,31 +464,31 @@ ConvLowMemoryExecution::ConvLowMemoryExecution(const std::vector &inpu setGeneralWeightLowMemory(mFilterDataPtr, quanCommon); } // Create Kernel - mResource->buildOptions.emplace("-DBIAS"); + mResource->mBuildOptions.emplace("-DBIAS"); if (conv2dCommonParams->relu()) { - mResource->buildOptions.emplace("-DRELU"); + mResource->mBuildOptions.emplace("-DRELU"); } else if (conv2dCommonParams->relu6()) { - mResource->buildOptions.emplace("-DRELU6"); + mResource->mBuildOptions.emplace("-DRELU6"); } if (mNumQuantBit == 8) { // int8 case - mResource->buildOptions.emplace("-DUSE_LOW_BIT_WEIGHT_INT8"); + mResource->mBuildOptions.emplace("-DUSE_LOW_BIT_WEIGHT_INT8"); } else if (mNumQuantBit == 4){ // int4 case - mResource->buildOptions.emplace("-DUSE_LOW_BIT_WEIGHT_INT4"); + mResource->mBuildOptions.emplace("-DUSE_LOW_BIT_WEIGHT_INT4"); } else {/* More types to be supported. */} #ifdef LOG_VERBOSE MNN_PRINT("end ConvExecution init !\n"); #endif } -ConvLowMemoryExecution::ConvLowMemoryExecution(std::shared_ptr resource, const Op* op, Backend *backend) - : ConvCommonExecution(backend) { +ConvLowMemoryExecution::ConvLowMemoryExecution(std::shared_ptr resource, const MNN::Op* op, Backend *backend) + : ConvCommonExecution(backend), CommonExecution(backend, op) { mResource = resource; const auto *conv2dParams = op->main_as_Convolution2D(); const auto *conv2dCommonParams = conv2dParams->common(); - mConv2dParams = conv2dParams; - mResource->conv2dCommonParams = conv2dCommonParams; + mResource->mConv2dParams = conv2dParams; + mResource->mConv2dCommonParams = conv2dCommonParams; } ConvLowMemoryExecution::~ConvLowMemoryExecution() { @@ -520,18 +506,19 @@ bool ConvLowMemoryExecution::onClone(Backend* bn, const Op* op, Execution** dst) return true; } -ErrorCode ConvLowMemoryExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode ConvLowMemoryExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { #ifdef LOG_VERBOSE MNN_PRINT("Start ConvExecution onResize !\n"); #endif + mUnits.resize(1); auto input = inputs[0]; auto output = outputs[0]; - auto padding = ConvolutionCommon::convolutionPad(input, output, mResource->conv2dCommonParams); + auto padding = ConvolutionCommon::convolutionPad(input, output, mResource->mConv2dCommonParams); mPaddings[0] = padding.second;//padY mPaddings[1] = padding.first;//padX mResource->gemmOpt = (mResource->mKernelHeight == mResource->mKernelWidth && mResource->mKernelHeight == 1 && mPaddings[0] == 0 && mPaddings[1] == 0 && mResource->mStrides[0] == 1 && mResource->mStrides[1] == 1 && inputs[0]->width() == 1 && inputs[0]->height() == 1); - mResource->conv1x1Opt = (mResource->mKernelHeight == mResource->mKernelWidth && mResource->mKernelHeight == 1 && mPaddings[0] == 0 && mPaddings[1] == 0 && mResource->mStrides[0] == 1 && mResource->mStrides[1] == 1 && inputs[0]->width() >= 4); - if (mResource->conv1x1Opt) { + mResource->mConv1x1Opt = (mResource->mKernelHeight == mResource->mKernelWidth && mResource->mKernelHeight == 1 && mPaddings[0] == 0 && mPaddings[1] == 0 && mResource->mStrides[0] == 1 && mResource->mStrides[1] == 1 && inputs[0]->width() >= 4); + if (mResource->mConv1x1Opt) { tune1x1CaseLowMemory(input, output); } else if(mResource->gemmOpt){ tuneGemmLowMemory(input, output); @@ -543,35 +530,7 @@ ErrorCode ConvLowMemoryExecution::onResize(const std::vector &inputs, #endif return NO_ERROR; } -ErrorCode ConvLowMemoryExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("Start ConvExecution onExecute !\n"); -#endif -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - runKernel2D(mKernel, mGlobalWorkSize, mLocalWorkSize, mOpenCLBackend->getOpenCLRuntime(), &event); - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Conv2D", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End ConvExecution onExecute... \n"); -#endif - return NO_ERROR; - } - // gemm/gemv: - // input : (batch, ic/4, 4) - // weight: (ic/4, oc, 4) - // output: (batch, oc, 4) - runKernel2D(mKernel, mGlobalWorkSize, mLocalWorkSize, mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end ConvExecution onExecute !\n"); -#endif - return NO_ERROR; -} } // namespace OpenCL } // namespace MNN +#endif /* MNN_OPENCL_BUFFER_CLOSED */ #endif /* MNN_LOW_MEMORY */ diff --git a/source/backend/opencl/execution/image/ConvLowMemoryExecution.hpp b/source/backend/opencl/execution/image/ConvLowMemoryExecution.hpp index ba24be5d1..af6d7d897 100644 --- a/source/backend/opencl/execution/image/ConvLowMemoryExecution.hpp +++ b/source/backend/opencl/execution/image/ConvLowMemoryExecution.hpp @@ -7,6 +7,7 @@ // #ifdef MNN_LOW_MEMORY +#ifndef MNN_OPENCL_BUFFER_CLOSED #ifndef ConvLowMemoryExecution_hpp #define ConvLowMemoryExecution_hpp #include "core/ConvolutionCommon.hpp" @@ -15,29 +16,12 @@ namespace MNN { namespace OpenCL { -struct ConvResource { - const Convolution2DCommon *conv2dCommonParams; - std::shared_ptr filter; - std::shared_ptr kernelBuffer; - std::shared_ptr dequantScaleBuffer; - std::shared_ptr dequantOffsetBuffer; - std::shared_ptr biasBuffer; - std::set buildOptions; - bool conv1x1Opt = false; - bool gemmOpt = false; - std::vector mStrides{1, 1}; - std::vector mDilations{1, 1}; - int mKernelWidth; - int mKernelHeight; -}; - -class ConvLowMemoryExecution : public ConvCommonExecution { +class ConvLowMemoryExecution : public ConvCommonExecution, public CommonExecution { public: ConvLowMemoryExecution(const std::vector &inputs, const std::vector &outputs, const MNN::Op *op, Backend *backend); - ConvLowMemoryExecution(std::shared_ptr resource, const Op* op, Backend* b); + ConvLowMemoryExecution(std::shared_ptr resource, const Op* op, Backend* backend); virtual ~ConvLowMemoryExecution(); - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; virtual bool onClone(Backend* bn, const Op* op, Execution** dst) override; private: void getInfoFromOpLowMemory(std::shared_ptr & quanCommon); @@ -46,15 +30,10 @@ class ConvLowMemoryExecution : public ConvCommonExecution { void tune1x1CaseLowMemory(Tensor * input, Tensor * output); void tuneGeneralCaseLowMemory(Tensor * input, Tensor * output); void tuneGemmLowMemory(Tensor * input, Tensor * output); - std::shared_ptr mResource; - const Convolution2D *mConv2dParams; std::vector mPaddings{0, 0}; std::vector mGlobalWorkSize{1, 1, 1}; std::vector mLocalWorkSize{1, 1, 1, 1}; - cl::Kernel mKernel; uint32_t mMaxWorkGroupSize; - int mOutputChannel; - int mInputChannel; void *mFilterDataPtr = nullptr; bool mLowMemoryFlag = false; int mNumQuantBit = 0; @@ -63,4 +42,5 @@ class ConvLowMemoryExecution : public ConvCommonExecution { } // namespace OpenCL } // namespace MNN #endif /* ConvLowMemoryExecution_hpp */ +#endif /* MNN_OPENCL_BUFFER_CLOSED */ #endif /* MNN_LOW_MEMORY */ diff --git a/source/backend/opencl/execution/image/ConvWinograd.cpp b/source/backend/opencl/execution/image/ConvWinograd.cpp index f3ad017ce..547c7081b 100644 --- a/source/backend/opencl/execution/image/ConvWinograd.cpp +++ b/source/backend/opencl/execution/image/ConvWinograd.cpp @@ -7,11 +7,8 @@ // #include "backend/opencl/execution/image/ConvWinograd.hpp" -#include -#include "core/Backend.hpp" #include "core/ConvolutionCommon.hpp" #include "math/WingoradGenerater.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" #define UNIT 2 #define INTERP 1 namespace MNN { @@ -53,23 +50,25 @@ bool ConvWinograd::valid(const Convolution2DCommon* common, const Tensor* input, } -ConvWinograd::ConvWinograd(const MNN::Convolution2D* op, Backend* backend) : Execution(backend) { +ConvWinograd::ConvWinograd(const MNN::Op *op, Backend* backend) : CommonExecution(backend, op) { mOpenCLBackend = static_cast(backend); - mCommon = op->common(); - MNN_ASSERT((3 == mCommon->kernelY() && 3 == mCommon->kernelX()) || - (5 == mCommon->kernelX() && 5 == mCommon->kernelY())); - MNN_ASSERT(1 == mCommon->strideX() && 1 == mCommon->strideY()); - MNN_ASSERT(1 == mCommon->dilateX() && 1 == mCommon->dilateY()); + mResource.reset(new ConvWinoResource); + auto conv2D = op->main_as_Convolution2D(); + mResource->mCommon = conv2D->common(); + MNN_ASSERT((3 == mResource->mCommon->kernelY() && 3 == mResource->mCommon->kernelX()) || + (5 == mResource->mCommon->kernelX() && 5 == mResource->mCommon->kernelY())); + MNN_ASSERT(1 == mResource->mCommon->strideX() && 1 == mResource->mCommon->strideY()); + MNN_ASSERT(1 == mResource->mCommon->dilateX() && 1 == mResource->mCommon->dilateY()); auto runTime = mOpenCLBackend->getOpenCLRuntime(); - int ky = mCommon->kernelY(); - int kx = mCommon->kernelX(); + int ky = mResource->mCommon->kernelY(); + int kx = mResource->mCommon->kernelX(); int weightSize = 0; const float* filterDataPtr = nullptr; std::shared_ptr quanCommon; - if (nullptr != op->quanParameter()) { - quanCommon = ConvolutionCommon::load(op, backend, true); + if (nullptr != conv2D->quanParameter()) { + quanCommon = ConvolutionCommon::load(conv2D, backend, true); if (nullptr == quanCommon) { MNN_ERROR("Memory not Enough, can't extract IDST Convolution \n"); } @@ -82,12 +81,12 @@ ConvWinograd::ConvWinograd(const MNN::Convolution2D* op, Backend* backend) : Exe } if (nullptr == filterDataPtr) { - weightSize = op->weight()->size(); - filterDataPtr = op->weight()->data(); + weightSize = conv2D->weight()->size(); + filterDataPtr = conv2D->weight()->data(); } - int co = mCommon->outputCount(); - int ci = weightSize / co / mCommon->kernelX() / mCommon->kernelY(); + int co = mResource->mCommon->outputCount(); + int ci = weightSize / co / mResource->mCommon->kernelX() / mResource->mCommon->kernelY(); auto coC4 = UP_DIV(co, 4); auto ciC4 = UP_DIV(ci, 4); auto queue = runTime->commandQueue(); @@ -98,7 +97,7 @@ ConvWinograd::ConvWinograd(const MNN::Convolution2D* op, Backend* backend) : Exe } // Create Image { - mBias.reset(new cl::Image2D(runTime->context(), CL_MEM_READ_WRITE, cl::ImageFormat(CL_RGBA, imageChannelType), + mResource->mBias.reset(new cl::Image2D(runTime->context(), CL_MEM_READ_WRITE, cl::ImageFormat(CL_RGBA, imageChannelType), UP_DIV(co, 4), 1, 0, nullptr, nullptr)); int buffer_size = ALIGN_UP4(co); @@ -115,20 +114,20 @@ ConvWinograd::ConvWinograd(const MNN::Convolution2D* op, Backend* backend) : Exe if(biasC != nullptr && error == CL_SUCCESS){ if(mOpenCLBackend->getOpenCLRuntime()->isWeightCpuTransHalf()){ for(int i=0; ibias()->data()[i]); + ((half_float::half*)biasC)[i] = (half_float::half)(conv2D->bias()->data()[i]); } for(int i=co; ibias()->data(), co * sizeof(float)); + ::memcpy(biasC, conv2D->bias()->data(), co * sizeof(float)); } }else{ MNN_ERROR("Map error biasC == nullptr \n"); } queue.enqueueUnmapMemObject(*biasBuffer, biasC); - copyBufferToImage(runTime, *biasBuffer, *mBias, coC4, 1); + copyBufferToImage(runTime, *biasBuffer, *mResource->mBias, coC4, 1); std::shared_ptr sourceWeight( Tensor::create(std::vector{co, ci, ky, kx}, (void*)(filterDataPtr), Tensor::CAFFE)); @@ -165,31 +164,48 @@ ConvWinograd::ConvWinograd(const MNN::Convolution2D* op, Backend* backend) : Exe queue.enqueueUnmapMemObject(weightBuffer, weightPtr); } - mWeight.reset(new cl::Image2D(runTime->context(), CL_MEM_READ_WRITE, cl::ImageFormat(CL_RGBA, imageChannelType), + mResource->mWeight.reset(new cl::Image2D(runTime->context(), CL_MEM_READ_WRITE, cl::ImageFormat(CL_RGBA, imageChannelType), ciC4 * 4, coC4 * alpha * alpha, 0, nullptr, nullptr)); - copyBufferToImage(runTime, weightBuffer, *mWeight, ciC4 * 4, coC4 * alpha * alpha); + copyBufferToImage(runTime, weightBuffer, *mResource->mWeight, ciC4 * 4, coC4 * alpha * alpha); } } -ErrorCode ConvWinograd::onResize(const std::vector& inputs, const std::vector& outputs) { +ConvWinograd::ConvWinograd(std::shared_ptr resource, const MNN::Op* op, Backend *backend) : CommonExecution(backend, op) { + mResource = resource; + mOpenCLBackend = static_cast(backend); + auto conv2D = op->main_as_Convolution2D(); + mResource->mCommon = conv2D->common(); +} + +bool ConvWinograd::onClone(Backend* bn, const Op* op, Execution** dst) { + if (!mValid) { + return false; + } + if (nullptr == dst) { + return true; + } + *dst = new ConvWinograd(mResource, op, bn); + return true; +} + +ErrorCode ConvWinograd::onEncode(const std::vector& inputs, const std::vector& outputs) { auto input = inputs[0]; auto output = outputs[0]; - mKernelX = mCommon->kernelX(); - mKernelY = mCommon->kernelY(); - mStrideX = mCommon->strideX(); - mStrideY = mCommon->strideY(); - mPadMode = mCommon->padMode(); + mKernelX = mResource->mCommon->kernelX(); + mKernelY = mResource->mCommon->kernelY(); + mStrideX = mResource->mCommon->strideX(); + mStrideY = mResource->mCommon->strideY(); + mPadMode = mResource->mCommon->padMode(); - int alpha = mCommon->kernelX() + UNIT - 1; + int alpha = mResource->mCommon->kernelX() + UNIT - 1; auto wUnit = UP_DIV(output->width(), UNIT); auto hUnit = UP_DIV(output->height(), UNIT); - auto pad = ConvolutionCommon::convolutionPad(inputs[0], outputs[0], mCommon); + auto pad = ConvolutionCommon::convolutionPad(inputs[0], outputs[0], mResource->mCommon); const int padY = pad.second; const int padX = pad.first; auto runTime = mOpenCLBackend->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); auto bn = backend(); mSource.reset(Tensor::createDevice( @@ -206,12 +222,9 @@ ErrorCode ConvWinograd::onResize(const std::vector& inputs, const std:: auto ocC4 = UP_DIV(output->channel(), 4); uint32_t total_num = input->batch(); - mSourceTransform.resize(total_num); - mMatMul.resize(total_num); - mDestTransform.resize(total_num); mMaxWGS_S.resize(total_num); mMaxWGS_D.resize(total_num); - mMaxWGS_M.resize(total_num); + mUnits.resize(total_num * 3); std::set basic; /*Create Kernel*/ @@ -220,25 +233,25 @@ ErrorCode ConvWinograd::onResize(const std::vector& inputs, const std:: ::memset(format, 0, sizeof(format)); sprintf(format, "%d_%d_%d", UNIT, mKernelX, INTERP); auto formatStr = std::string(format); - mSourceTransform[i] = + mUnits[i * 3].kernel = runTime->buildKernel("winogradTransformSource" + formatStr, "winogradTransformSource", basic); - mMaxWGS_S[i] = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(mSourceTransform[i])); + mMaxWGS_S[i] = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(mUnits[i * 3].kernel)); { std::set buildOptions = basic; - if (mCommon->relu()) { + if (mResource->mCommon->relu()) { buildOptions.emplace("-DRELU"); } - if (mCommon->relu6()) { + if (mResource->mCommon->relu6()) { buildOptions.emplace("-DRELU6"); } - mDestTransform[i] = + mUnits[i * 3 + 2].kernel = runTime->buildKernel("winogradTransformDest" + formatStr, "winogradTransformDest", buildOptions); - mMaxWGS_D[i] = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(mDestTransform[i])); + mMaxWGS_D[i] = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(mUnits[i * 3 + 2].kernel)); } - mMaxWGS_M[i] = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(mMatMul[i])); } + std::string info = std::to_string(input->channel()) + "_" + std::to_string(output->channel()); mGWS_S.resize(total_num); mGWS_D.resize(total_num); @@ -249,35 +262,37 @@ ErrorCode ConvWinograd::onResize(const std::vector& inputs, const std:: for (int b = 0; b < input->batch(); ++b) { cl_int ret = CL_SUCCESS; - ret |= mSourceTransform[b].setArg(0, openCLImage(input)); - ret |= mSourceTransform[b].setArg(1, openCLImage(mSource.get())); - ret |= mSourceTransform[b].setArg(2, wUnit); - ret |= mSourceTransform[b].setArg(3, hUnit); - ret |= mSourceTransform[b].setArg(4, padX); - ret |= mSourceTransform[b].setArg(5, padY); - ret |= mSourceTransform[b].setArg(6, input->width()); - ret |= mSourceTransform[b].setArg(7, input->height()); - ret |= mSourceTransform[b].setArg(8, icC4); - ret |= mSourceTransform[b].setArg(9, b); - - - ret |= mDestTransform[b].setArg(0, openCLImage(mDest.get())); - ret |= mDestTransform[b].setArg(1, *mBias); - ret |= mDestTransform[b].setArg(2, openCLImage(output)); - ret |= mDestTransform[b].setArg(3, wUnit); - ret |= mDestTransform[b].setArg(4, hUnit); - ret |= mDestTransform[b].setArg(5, output->width()); - ret |= mDestTransform[b].setArg(6, output->height()); - ret |= mDestTransform[b].setArg(7, ocC4); - ret |= mDestTransform[b].setArg(8, b); + ret |= mUnits[b * 3].kernel->get().setArg(0, openCLImage(input)); + ret |= mUnits[b * 3].kernel->get().setArg(1, openCLImage(mSource.get())); + ret |= mUnits[b * 3].kernel->get().setArg(2, wUnit); + ret |= mUnits[b * 3].kernel->get().setArg(3, hUnit); + ret |= mUnits[b * 3].kernel->get().setArg(4, padX); + ret |= mUnits[b * 3].kernel->get().setArg(5, padY); + ret |= mUnits[b * 3].kernel->get().setArg(6, input->width()); + ret |= mUnits[b * 3].kernel->get().setArg(7, input->height()); + ret |= mUnits[b * 3].kernel->get().setArg(8, icC4); + ret |= mUnits[b * 3].kernel->get().setArg(9, b); + + + ret |= mUnits[b * 3 + 2].kernel->get().setArg(0, openCLImage(mDest.get())); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(1, *mResource->mBias); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(2, openCLImage(output)); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(3, wUnit); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(4, hUnit); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(5, output->width()); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(6, output->height()); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(7, ocC4); + ret |= mUnits[b * 3 + 2].kernel->get().setArg(8, b); MNN_CHECK_CL_SUCCESS(ret, "setArg ConvWinogradExecution"); /*Source Transform*/ { mGWS_S[b] = {static_cast(wUnit * hUnit), static_cast(icC4)}; std::string kernelName = "winogradTransformSource"; - mLWS_S[b] = localWS2DDefault(mGWS_S[b], mMaxWGS_S[b], mOpenCLBackend->getOpenCLRuntime(), kernelName, mSourceTransform[b]).first; - mOpenCLBackend->recordKernel2d(mSourceTransform[b], mGWS_S[b], mLWS_S[b]); + mLWS_S[b] = localWS2DDefault(mGWS_S[b], mMaxWGS_S[b], mOpenCLBackend->getOpenCLRuntime(), kernelName + info, mUnits[b * 3].kernel).first; + mOpenCLBackend->recordKernel2d(mUnits[b * 3].kernel, mGWS_S[b], mLWS_S[b]); + mUnits[b * 3].globalWorkSize = {mGWS_S[b][0], mGWS_S[b][1]}; + mUnits[b * 3].localWorkSize = {mLWS_S[b][0], mLWS_S[b][1]}; } /*MatMul*/ @@ -288,7 +303,7 @@ ErrorCode ConvWinograd::onResize(const std::vector& inputs, const std:: auto gemmHeight = ocC4; int actual_kernel = total_kernel; - cl::Kernel kernel[total_kernel]; + std::shared_ptr kernel[total_kernel]; std::vector globalWorkSize[total_kernel]; std::vector localWorkSize[total_kernel]; std::pair min_cost(UINT_MAX, 0); //(min_time, min_index) @@ -298,18 +313,18 @@ ErrorCode ConvWinograd::onResize(const std::vector& inputs, const std:: uint32_t maxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(kernel[knl_idx])); globalWorkSize[knl_idx] = {static_cast(UP_DIV(wUnit, itemW[knl_idx]) * hUnit), static_cast(alpha * alpha * ocC4)}; - ret |= kernel[knl_idx].setArg(0, openCLImage(mSource.get())); - ret |= kernel[knl_idx].setArg(1, *mWeight); - ret |= kernel[knl_idx].setArg(2, openCLImage(mDest.get())); - ret |= kernel[knl_idx].setArg(3, wUnit); - ret |= kernel[knl_idx].setArg(4, hUnit); - ret |= kernel[knl_idx].setArg(5, ocC4); - ret |= kernel[knl_idx].setArg(6, icC4); - ret |= kernel[knl_idx].setArg(7, alpha*alpha); + ret |= kernel[knl_idx]->get().setArg(0, openCLImage(mSource.get())); + ret |= kernel[knl_idx]->get().setArg(1, *mResource->mWeight); + ret |= kernel[knl_idx]->get().setArg(2, openCLImage(mDest.get())); + ret |= kernel[knl_idx]->get().setArg(3, wUnit); + ret |= kernel[knl_idx]->get().setArg(4, hUnit); + ret |= kernel[knl_idx]->get().setArg(5, ocC4); + ret |= kernel[knl_idx]->get().setArg(6, icC4); + ret |= kernel[knl_idx]->get().setArg(7, alpha*alpha); MNN_CHECK_CL_SUCCESS(ret, "setArg ConvWinogradExecution gemm"); std::pair, uint32_t> retTune; - retTune = localWS2DDefault(globalWorkSize[knl_idx], maxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), kernelName[knl_idx], kernel[knl_idx]); + retTune = localWS2DDefault(globalWorkSize[knl_idx], maxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), kernelName[knl_idx] + info, kernel[knl_idx]); // printf("gemm %d, %d\n", knl_idx, retTune.second); if (min_cost.first > retTune.second) { min_cost.first = retTune.second; @@ -320,91 +335,36 @@ ErrorCode ConvWinograd::onResize(const std::vector& inputs, const std:: cl_int ret = CL_SUCCESS; int min_index = min_cost.second; //printf("gemm min_index = %d %d\n", min_index, min_cost.first); - mMatMul[b] = runTime->buildKernel("gemm", kernelName[min_index], basic); + mUnits[b * 3 + 1].kernel = runTime->buildKernel("gemm", kernelName[min_index], basic); - ret |= mMatMul[b].setArg(0, openCLImage(mSource.get())); - ret |= mMatMul[b].setArg(1, *mWeight); - ret |= mMatMul[b].setArg(2, openCLImage(mDest.get())); - ret |= mMatMul[b].setArg(3, wUnit); - ret |= mMatMul[b].setArg(4, hUnit); - ret |= mMatMul[b].setArg(5, ocC4); - ret |= mMatMul[b].setArg(6, icC4); - ret |= mMatMul[b].setArg(7, alpha*alpha); + ret |= mUnits[b * 3 + 1].kernel->get().setArg(0, openCLImage(mSource.get())); + ret |= mUnits[b * 3 + 1].kernel->get().setArg(1, *mResource->mWeight); + ret |= mUnits[b * 3 + 1].kernel->get().setArg(2, openCLImage(mDest.get())); + ret |= mUnits[b * 3 + 1].kernel->get().setArg(3, wUnit); + ret |= mUnits[b * 3 + 1].kernel->get().setArg(4, hUnit); + ret |= mUnits[b * 3 + 1].kernel->get().setArg(5, ocC4); + ret |= mUnits[b * 3 + 1].kernel->get().setArg(6, icC4); + ret |= mUnits[b * 3 + 1].kernel->get().setArg(7, alpha*alpha); MNN_CHECK_CL_SUCCESS(ret, "setArg ConvWinogradExecution gemm"); mGWS_M[b] = {globalWorkSize[min_index][0], globalWorkSize[min_index][1]}; - mOpenCLBackend->recordKernel2d(mMatMul[b], mGWS_M[b], mLWS_M[b]); + mOpenCLBackend->recordKernel2d(mUnits[b * 3 + 1].kernel, mGWS_M[b], mLWS_M[b]); + mUnits[b * 3 + 1].globalWorkSize = {mGWS_M[b][0], mGWS_M[b][1]}; + mUnits[b * 3 + 1].localWorkSize = {mLWS_M[b][0], mLWS_M[b][1]}; } // Dest Transform { mGWS_D[b] = {static_cast(wUnit*hUnit), static_cast(ocC4)}; std::string kernelName = "winogradTransformDest"; - mLWS_D[b] = localWS2DDefault(mGWS_D[b], mMaxWGS_D[b], mOpenCLBackend->getOpenCLRuntime(), kernelName, mDestTransform[b]).first; - mOpenCLBackend->recordKernel2d(mDestTransform[b], mGWS_D[b], mLWS_D[b]); + mLWS_D[b] = localWS2DDefault(mGWS_D[b], mMaxWGS_D[b], mOpenCLBackend->getOpenCLRuntime(), kernelName + info, mUnits[b * 3 + 2].kernel).first; + mOpenCLBackend->recordKernel2d(mUnits[b * 3 + 2].kernel, mGWS_D[b], mLWS_D[b]); + mUnits[b * 3 + 2].globalWorkSize = {mGWS_D[b][0], mGWS_D[b][1]}; + mUnits[b * 3 + 2].localWorkSize = {mLWS_D[b][0], mLWS_D[b][1]}; } } - mOpenCLBackend->endRecord(mRecording); return NO_ERROR; } -ErrorCode ConvWinograd::onExecute(const std::vector& inputs, const std::vector& outputs) { - auto input = inputs[0]; - auto output = outputs[0]; - - #ifndef ENABLE_OPENCL_TIME_PROFILER - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); - return NO_ERROR; - } - #endif - for (int b = 0; b < input->batch(); ++b) { - /*Source Transform*/ - { - #ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - runKernel2D(mSourceTransform[b], mGWS_S[b], mLWS_S[b], - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"ConvWino0", event}); - #else - runKernel2D(mSourceTransform[b], mGWS_S[b], mLWS_S[b], - mOpenCLBackend->getOpenCLRuntime()); - #endif - } - - /*MatMul*/ - { - #ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - runKernel2D(mMatMul[b], mGWS_M[b], mLWS_M[b], - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"ConvWino1", event}); -#else - runKernel2D(mMatMul[b], mGWS_M[b], mLWS_M[b], - mOpenCLBackend->getOpenCLRuntime()); -#endif - } - - // Dest Transform - { - #ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - runKernel2D(mDestTransform[b], mGWS_D[b], mLWS_D[b], - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"ConvWino2", event}); - #else - runKernel2D(mDestTransform[b], mGWS_D[b], mLWS_D[b], - mOpenCLBackend->getOpenCLRuntime()); - #endif - } - } - - return NO_ERROR; -} - } // namespace OpenCL } // namespace MNN diff --git a/source/backend/opencl/execution/image/ConvWinograd.hpp b/source/backend/opencl/execution/image/ConvWinograd.hpp index 9e2799ade..78ec761f6 100644 --- a/source/backend/opencl/execution/image/ConvWinograd.hpp +++ b/source/backend/opencl/execution/image/ConvWinograd.hpp @@ -9,29 +9,29 @@ #ifndef conv_winograd_hpp #define conv_winograd_hpp -#include "core/Execution.hpp" - -#include -#include -#include #include "backend/opencl/execution/image/ConvExecution.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" namespace MNN { namespace OpenCL { -class ConvWinograd : public Execution, public CommonExtension { +struct ConvWinoResource { + const Convolution2DCommon* mCommon; + std::shared_ptr mWeight; + std::shared_ptr mBias; +}; + +class ConvWinograd : public CommonExecution { public: virtual ~ConvWinograd() = default; - ConvWinograd(const MNN::Convolution2D* op, Backend* backend); + ConvWinograd(const MNN::Op *op, Backend* backend); + ConvWinograd(std::shared_ptr resource, const MNN::Op* op, Backend* backend); - virtual ErrorCode onResize(const std::vector& inputs, const std::vector& outputs) override; - virtual ErrorCode onExecute(const std::vector& inputs, const std::vector& outputs) override; + virtual ErrorCode onEncode(const std::vector& inputs, const std::vector& outputs) override; + virtual bool onClone(Backend* bn, const Op* op, Execution** dst) override; static bool valid(const Convolution2DCommon* common, const Tensor* input, const Tensor* output, int maxWidth, int maxHeight, int limit = 8192); private: OpenCLBackend* mOpenCLBackend; - const Convolution2DCommon* mCommon; + std::shared_ptr mResource; int mKernelX; int mKernelY; int mPadX; @@ -39,19 +39,12 @@ class ConvWinograd : public Execution, public CommonExtension { int mStrideX; int mStrideY; MNN::PadMode mPadMode; - std::shared_ptr mWeight; - std::shared_ptr mBias; std::shared_ptr mSource; std::shared_ptr mDest; - std::vector mSourceTransform; - std::vector mDestTransform; - std::vector mMatMul; - std::vector mMaxWGS_S; std::vector mMaxWGS_D; - std::vector mMaxWGS_M; std::vector > mGWS_S; std::vector > mGWS_D; @@ -61,7 +54,6 @@ class ConvWinograd : public Execution, public CommonExtension { std::vector > mLWS_D; std::vector > mLWS_M; - int mSliceNumber; }; } // namespace OpenCL diff --git a/source/backend/opencl/execution/image/DeconvExecution.cpp b/source/backend/opencl/execution/image/DeconvExecution.cpp index b177f1457..c61e93d1c 100644 --- a/source/backend/opencl/execution/image/DeconvExecution.cpp +++ b/source/backend/opencl/execution/image/DeconvExecution.cpp @@ -7,27 +7,22 @@ // #include "backend/opencl/execution/image/DeconvExecution.hpp" -#include "core/Macro.h" -#include "core/TensorUtils.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" #include "core/ConvolutionCommon.hpp" namespace MNN { namespace OpenCL { DeconvExecution::DeconvExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend) - : ConvCommonExecution(op->main_as_Convolution2D(), backend) { + : ConvCommonExecution(op->main_as_Convolution2D(), backend), CommonExecution(backend, op) { mOpenCLBackend = static_cast(backend); const auto *conv2dParams = op->main_as_Convolution2D(); const auto *conv2dCommonParams = conv2dParams->common(); - mConv2dCommonParams = conv2dCommonParams; - mStrides = {conv2dCommonParams->strideY(), conv2dCommonParams->strideX()}; - mDilations = {conv2dCommonParams->dilateY(), conv2dCommonParams->dilateX()}; + mResource->mConv2dCommonParams = conv2dCommonParams; + mResource->mStrides = {conv2dCommonParams->strideY(), conv2dCommonParams->strideX()}; + mResource->mDilations = {conv2dCommonParams->dilateY(), conv2dCommonParams->dilateX()}; int kernelWidth = conv2dCommonParams->kernelX(); int kernelHeight = conv2dCommonParams->kernelY(); - MNN_ASSERT(mStrides[0] > 0 && mStrides[1] > 0); int outputChannel = conv2dCommonParams->outputCount(); const float* filterDataPtr = nullptr; @@ -69,35 +64,51 @@ DeconvExecution::DeconvExecution(const std::vector &inputs, const MNN: } mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(filterBufferCL, ptrCL); - mFilter.reset(Tensor::createDevice({1, filterImageShape[1], 1, 4 * filterImageShape[0]})); - mOpenCLBackend->onAcquireBuffer(mFilter.get(), Backend::STATIC); + mResource->mFilter.reset(Tensor::createDevice({1, filterImageShape[1], 1, 4 * filterImageShape[0]})); + mOpenCLBackend->onAcquireBuffer(mResource->mFilter.get(), Backend::STATIC); MNN::OpenCL::ImageBufferConvertor imageBufferConvertor{mOpenCLBackend->getOpenCLRuntime()}; std::string buildOption = ""; if(mOpenCLBackend->getOpenCLRuntime()->isWeightCpuTransHalf() == false){ buildOption = "-DBUFFER_INP_FP32"; } - imageBufferConvertor.convertBufferToImage(filterBuffer.get(), MNN::OpenCL::CONV2D_FILTER, mFilter.get(), false, buildOption); - - auto runtime = mOpenCLBackend->getOpenCLRuntime(); + imageBufferConvertor.convertBufferToImage(filterBuffer.get(), MNN::OpenCL::CONV2D_FILTER, mResource->mFilter.get(), false, buildOption); - std::set buildOptions; - std::string kernelName = "deconv_2d"; - buildOptions.emplace("-DBIAS"); + mResource->mBuildOptions.emplace("-DBIAS"); if (conv2dCommonParams->relu() == true) { - buildOptions.emplace("-DRELU"); + mResource->mBuildOptions.emplace("-DRELU"); } else if (conv2dCommonParams->relu6() == true) { - buildOptions.emplace("-DRELU6"); + mResource->mBuildOptions.emplace("-DRELU6"); } - mKernel = runtime->buildKernel("deconv_2d", kernelName, buildOptions); } DeconvExecution::~DeconvExecution() { - mOpenCLBackend->onReleaseBuffer(mFilter.get(), Backend::STATIC); + // Do nothing +} + +DeconvExecution::DeconvExecution(std::shared_ptr resource, const MNN::Op* op, Backend *backend) + : ConvCommonExecution(backend), CommonExecution(backend, op) { + mResource = resource; + const auto *conv2dParams = op->main_as_Convolution2D(); + const auto *conv2dCommonParams = conv2dParams->common(); + mResource->mConv2dParams = conv2dParams; + mResource->mConv2dCommonParams = conv2dCommonParams; +} + +bool DeconvExecution::onClone(Backend* bn, const Op* op, Execution** dst) { + if (!mValid) { + return false; + } + if (nullptr == dst) { + return true; + } + *dst = new DeconvExecution(mResource, op, bn); + return true; } -ErrorCode DeconvExecution::onResize(const std::vector &inputs, const std::vector &outputs) { - mOpenCLBackend->startRecord(mRecording); +ErrorCode DeconvExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { + mUnits.resize(1); + auto &unit = mUnits[0]; auto output = outputs[0]; auto input = inputs[0]; @@ -112,26 +123,26 @@ ErrorCode DeconvExecution::onResize(const std::vector &inputs, const s const int inputChannels = inputShape.at(3); const int outputChannelBlocks = UP_DIV(outputChannels, 4); - const int strideHeight = mStrides[0]; - const int strideWidth = mStrides[1]; + const int strideHeight = mResource->mStrides[0]; + const int strideWidth = mResource->mStrides[1]; - auto pad = ConvolutionCommon::convolutionTransposePad(input, output, mConv2dCommonParams); + auto pad = ConvolutionCommon::convolutionTransposePad(input, output, mResource->mConv2dCommonParams); const int paddingHeight = pad.second; const int paddingWidth = pad.first; - auto ky = mConv2dCommonParams->kernelY(); - auto kx = mConv2dCommonParams->kernelX(); + auto ky = mResource->mConv2dCommonParams->kernelY(); + auto kx = mResource->mConv2dCommonParams->kernelX(); auto kernelSize = kx * ky; const int transPadH = ky - 1 - pad.second; const int transPadW = kx - 1 - pad.first; - const int alignHeight = mStrides[0] - 1 - transPadH; - const int alignWidth = mStrides[1] - 1 - transPadW; + const int alignHeight = mResource->mStrides[0] - 1 - transPadH; + const int alignWidth = mResource->mStrides[1] - 1 - transPadW; auto runtime = mOpenCLBackend->getOpenCLRuntime(); - auto kernel = &mKernel; - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + unit.kernel = runtime->buildKernel("deconv_2d", "deconv_2d", mResource->mBuildOptions); + auto maxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); mGWS = {static_cast(outputChannelBlocks), static_cast(outputWidth), static_cast(outputHeight * outputBatch)}; @@ -143,58 +154,29 @@ ErrorCode DeconvExecution::onResize(const std::vector &inputs, const s int kernelShape[2] = {ky, kx}; uint32_t idx = 0; - kernel->setArg(idx++, mGWS[0]); - kernel->setArg(idx++, mGWS[1]); - kernel->setArg(idx++, mGWS[2]); - kernel->setArg(idx++, openCLImage(input)); - kernel->setArg(idx++, openCLImage(mFilter.get())); - kernel->setArg(idx++, openCLImage(mBias.get())); - kernel->setArg(idx++, openCLImage(output)); - kernel->setArg(idx++, sizeof(inputImageShape), inputImageShape); - kernel->setArg(idx++, sizeof(outputImageShape), outputImageShape); - kernel->setArg(idx++, sizeof(strideShape), strideShape); - kernel->setArg(idx++, sizeof(alignShape), alignShape); - kernel->setArg(idx++, sizeof(paddingShape), paddingShape); - kernel->setArg(idx++, sizeof(kernelShape), kernelShape); - kernel->setArg(idx++, static_cast(kernelSize)); - kernel->setArg(idx++, static_cast(UP_DIV(inputChannels, 4))); - kernel->setArg(idx++, static_cast(outputChannelBlocks)); + unit.kernel->get().setArg(idx++, mGWS[0]); + unit.kernel->get().setArg(idx++, mGWS[1]); + unit.kernel->get().setArg(idx++, mGWS[2]); + unit.kernel->get().setArg(idx++, openCLImage(input)); + unit.kernel->get().setArg(idx++, openCLImage(mResource->mFilter.get())); + unit.kernel->get().setArg(idx++, openCLImage(mResource->mBias.get())); + unit.kernel->get().setArg(idx++, openCLImage(output)); + unit.kernel->get().setArg(idx++, sizeof(inputImageShape), inputImageShape); + unit.kernel->get().setArg(idx++, sizeof(outputImageShape), outputImageShape); + unit.kernel->get().setArg(idx++, sizeof(strideShape), strideShape); + unit.kernel->get().setArg(idx++, sizeof(alignShape), alignShape); + unit.kernel->get().setArg(idx++, sizeof(paddingShape), paddingShape); + unit.kernel->get().setArg(idx++, sizeof(kernelShape), kernelShape); + unit.kernel->get().setArg(idx++, static_cast(kernelSize)); + unit.kernel->get().setArg(idx++, static_cast(UP_DIV(inputChannels, 4))); + unit.kernel->get().setArg(idx++, static_cast(outputChannelBlocks)); std::string name = "deconv2d"; - mLWS = localWS3DDefault(mGWS, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), name, mKernel).first; - mOpenCLBackend->recordKernel3d(mKernel, mGWS, mLWS); - mOpenCLBackend->endRecord(mRecording); - return NO_ERROR; -} - -ErrorCode DeconvExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("Start DeconvExecution onExecute... \n"); -#endif - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGWS, mLWS, - mOpenCLBackend->getOpenCLRuntime(), - &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Deconv", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End DeconvExecution onExecute... \n"); -#endif - return NO_ERROR; - } - run3DKernelDefault(mKernel, mGWS, mLWS, - mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("End DeconvExecution onExecute... \n"); -#endif + std::string info = std::to_string(inputChannels) + "_" + std::to_string(outputChannels) + "_" + std::to_string(ky) + "_" + std::to_string(kx) + "_" + std::to_string(strideHeight) + "_" + std::to_string(strideWidth); + mLWS = localWS3DDefault(mGWS, maxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), name + info, unit.kernel).first; + mOpenCLBackend->recordKernel3d(unit.kernel, mGWS, mLWS); + unit.globalWorkSize = {mGWS[0], mGWS[1], mGWS[2]}; + unit.localWorkSize = {mLWS[0], mLWS[1], mLWS[2]}; return NO_ERROR; } diff --git a/source/backend/opencl/execution/image/DeconvExecution.hpp b/source/backend/opencl/execution/image/DeconvExecution.hpp index a6a425a43..c2cb3b504 100644 --- a/source/backend/opencl/execution/image/DeconvExecution.hpp +++ b/source/backend/opencl/execution/image/DeconvExecution.hpp @@ -13,25 +13,19 @@ namespace MNN { namespace OpenCL { -class DeconvExecution : public ConvCommonExecution { +class DeconvExecution : public ConvCommonExecution, public CommonExecution { public: DeconvExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend); + DeconvExecution(std::shared_ptr resource, const Op* op, Backend* backend); virtual ~DeconvExecution(); - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; + virtual bool onClone(Backend* bn, const Op* op, Execution** dst) override; private: - const Convolution2DCommon *mConv2dCommonParams; std::vector mLWS{0, 0, 0, 0}; std::vector mGWS{0, 0, 0, 0}; - std::vector mStrides{0, 0}; std::vector mPaddings{0, 0}; - std::vector mDilations{0, 0}; - std::shared_ptr mFilter; - cl::Kernel mKernel; - uint32_t mMaxWorkGroupSize; - OpenCLBackend *mOpenCLBackend; }; } // namespace OpenCL diff --git a/source/backend/opencl/execution/image/DepthwiseConvExecution.cpp b/source/backend/opencl/execution/image/DepthwiseConvExecution.cpp index 4ac5d1fe2..ba5bc93bc 100644 --- a/source/backend/opencl/execution/image/DepthwiseConvExecution.cpp +++ b/source/backend/opencl/execution/image/DepthwiseConvExecution.cpp @@ -19,16 +19,16 @@ namespace OpenCL { DepthwiseConvExecution::DepthwiseConvExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend) - : ConvCommonExecution(op->main_as_Convolution2D(), backend) { + : ConvCommonExecution(op->main_as_Convolution2D(), backend), CommonExecution(backend, op) { mOpenCLBackend = static_cast(backend); - mCon2dParams = op->main_as_Convolution2D(); - mConv2dCommonParams = mCon2dParams->common(); - mStrides = {mConv2dCommonParams->strideY(), mConv2dCommonParams->strideX()}; - mDilations = {mConv2dCommonParams->dilateY(), mConv2dCommonParams->dilateX()}; + mResource->mConv2dParams = op->main_as_Convolution2D(); + mResource->mConv2dCommonParams = mResource->mConv2dParams->common(); + mResource->mStrides = {mResource->mConv2dCommonParams->strideY(), mResource->mConv2dCommonParams->strideX()}; + mResource->mDilations = {mResource->mConv2dCommonParams->dilateY(), mResource->mConv2dCommonParams->dilateX()}; - int kernelWidth = mConv2dCommonParams->kernelX(); - int kernelHeight = mConv2dCommonParams->kernelY(); - int outputChannel = mConv2dCommonParams->outputCount(); + int kernelWidth = mResource->mConv2dCommonParams->kernelX(); + int kernelHeight = mResource->mConv2dCommonParams->kernelY(); + int outputChannel = mResource->mConv2dCommonParams->outputCount(); std::vector filterShape{1, outputChannel, kernelHeight, kernelWidth}; std::vector filterImageShape{(int)kernelHeight * kernelWidth, (int)UP_DIV(outputChannel, 4)}; @@ -37,9 +37,9 @@ DepthwiseConvExecution::DepthwiseConvExecution(const std::vector &inpu const float* filterDataPtr = nullptr; int filterDataSize = 0; std::shared_ptr quanCommon; - ConvolutionCommon::getConvParameters(&quanCommon, backend, mCon2dParams, &filterDataPtr, &filterDataSize); + ConvolutionCommon::getConvParameters(&quanCommon, backend, mResource->mConv2dParams, &filterDataPtr, &filterDataSize); - mFilter.reset(Tensor::createDevice({1, filterImageShape[1], 1, 4 * filterImageShape[0]})); + mResource->mFilter.reset(Tensor::createDevice({1, filterImageShape[1], 1, 4 * filterImageShape[0]})); std::shared_ptr filterBuffer(Tensor::createDevice(filterShape)); int buffer_size = filterBuffer->elementSize(); @@ -65,123 +65,114 @@ DepthwiseConvExecution::DepthwiseConvExecution(const std::vector &inpu } mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(filterBufferCL, ptrCL); - mOpenCLBackend->onAcquireBuffer(mFilter.get(), Backend::STATIC); + mOpenCLBackend->onAcquireBuffer(mResource->mFilter.get(), Backend::STATIC); MNN::OpenCL::ImageBufferConvertor imageBufferConvertor{mOpenCLBackend->getOpenCLRuntime()}; std::string buildOption = ""; if(mOpenCLBackend->getOpenCLRuntime()->isWeightCpuTransHalf() == false){ buildOption = "-DBUFFER_INP_FP32"; } - imageBufferConvertor.convertBufferToImage(filterBuffer.get(), MNN::OpenCL::DW_CONV2D_FILTER, mFilter.get(), false, buildOption); - auto runtime = mOpenCLBackend->getOpenCLRuntime(); - std::set buildOptions; - std::string kernelName = "depthwise_conv2d"; - if (mConv2dCommonParams->strideX() == 1 && mConv2dCommonParams->strideY() == 1 && - mConv2dCommonParams->dilateX() == 1 && mConv2dCommonParams->dilateY() == 1) { - kernelName = "depthwise_conv2d_s1"; - } + imageBufferConvertor.convertBufferToImage(filterBuffer.get(), MNN::OpenCL::DW_CONV2D_FILTER, mResource->mFilter.get(), false, buildOption); - if (mConv2dCommonParams->relu() == true) { - buildOptions.emplace("-DRELU"); - } else if (mConv2dCommonParams->relu6() == true) { - buildOptions.emplace("-DRELU6"); + if (mResource->mConv2dCommonParams->relu() == true) { + mResource->mBuildOptions.emplace("-DRELU"); + } else if (mResource->mConv2dCommonParams->relu6() == true) { + mResource->mBuildOptions.emplace("-DRELU6"); } - - mKernel = runtime->buildKernel("depthwise_conv2d", kernelName, buildOptions); - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); } DepthwiseConvExecution::~DepthwiseConvExecution() { - mOpenCLBackend->onReleaseBuffer(mFilter.get(), Backend::STATIC); + // Do nothing +} + +DepthwiseConvExecution::DepthwiseConvExecution(std::shared_ptr resource, const MNN::Op* op, Backend *backend) + : ConvCommonExecution(backend), CommonExecution(backend, op) { + mResource = resource; + const auto *conv2dParams = op->main_as_Convolution2D(); + const auto *conv2dCommonParams = conv2dParams->common(); + mResource->mConv2dParams = conv2dParams; + mResource->mConv2dCommonParams = conv2dCommonParams; +} + +bool DepthwiseConvExecution::onClone(Backend* bn, const Op* op, Execution** dst) { + if (!mValid) { + return false; + } + if (nullptr == dst) { + return true; + } + *dst = new DepthwiseConvExecution(mResource, op, bn); + return true; } -ErrorCode DepthwiseConvExecution::onResize(const std::vector &inputs, const std::vector &outputs) { - mOpenCLBackend->startRecord(mRecording); +ErrorCode DepthwiseConvExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { + mUnits.resize(1); + auto &unit = mUnits[0]; + auto runtime = mOpenCLBackend->getOpenCLRuntime(); auto input = inputs[0]; auto output = outputs[0]; std::vector inputShape = tensorShapeFormat(input); std::vector outputShape = tensorShapeFormat(output); + + std::string kernelName = "depthwise_conv2d"; + bool S1D1 = false; + if (mResource->mConv2dCommonParams->strideX() == 1 && mResource->mConv2dCommonParams->strideY() == 1 && + mResource->mConv2dCommonParams->dilateX() == 1 && mResource->mConv2dCommonParams->dilateY() == 1) { + kernelName = "depthwise_conv2d_s1"; + S1D1 = true; + } + unit.kernel = runtime->buildKernel("depthwise_conv2d", kernelName, mResource->mBuildOptions); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); mGlobalWorkSize = {static_cast(UP_DIV(outputShape.at(3), 4) * UP_DIV(outputShape.at(2), 4)), static_cast(outputShape.at(0) * outputShape.at(1))}; - auto padding = ConvolutionCommon::convolutionPad(input, output, mConv2dCommonParams); + auto padding = ConvolutionCommon::convolutionPad(input, output, mResource->mConv2dCommonParams); mPaddings[0] = padding.second;//padY mPaddings[1] = padding.first;//padX const int outputHeight = outputShape.at(1); const int outputWidth = outputShape.at(2); + const int outputChannels = outputShape.at(3); const int inputHeight = inputShape.at(1); const int inputWidth = inputShape.at(2); const int inputChannels = inputShape.at(3); const int inputChannelBlocks = UP_DIV(inputChannels, 4); - const int filterHeight = mCon2dParams->common()->kernelY(); - const int filterWidth = mCon2dParams->common()->kernelX(); + const int filterHeight = mResource->mConv2dParams->common()->kernelY(); + const int filterWidth = mResource->mConv2dParams->common()->kernelX(); uint32_t idx = 0; - auto kernel = &mKernel; int inputImageShape[2] = {inputHeight, inputWidth}; int outputImageShape[2] = {outputHeight, outputWidth}; - int strideShape[2] = {mStrides[0], mStrides[1]}; + int strideShape[2] = {mResource->mStrides[0], mResource->mStrides[1]}; int paddingShape[2] = {mPaddings[0], mPaddings[1]}; int kernelShape[2] = {filterHeight, filterWidth}; - int dilationShape[2] = {mDilations[0], mDilations[1]}; - - std::string kernelName = "depthwise_conv2d_s1"; - - kernel->setArg(idx++, mGlobalWorkSize[0]); - kernel->setArg(idx++, mGlobalWorkSize[1]); - kernel->setArg(idx++, openCLImage(input)); - kernel->setArg(idx++, openCLImage(mFilter.get())); - kernel->setArg(idx++, openCLImage(mBias.get())); - kernel->setArg(idx++, openCLImage(output)); - kernel->setArg(idx++, sizeof(inputImageShape), inputImageShape); - kernel->setArg(idx++, static_cast(inputChannelBlocks)); - kernel->setArg(idx++, sizeof(outputImageShape), outputImageShape); - kernel->setArg(idx++, sizeof(kernelShape), kernelShape); - kernel->setArg(idx++, sizeof(paddingShape), paddingShape); - if (mStrides[0] != 1 || mStrides[1] != 1 || mDilations[0] != 1 || mDilations[1] != 1) { - kernel->setArg(idx++, sizeof(dilationShape), dilationShape); - kernel->setArg(idx++, sizeof(strideShape), strideShape); - kernelName = "depthwise_conv2d"; - } - - mLocalWorkSize = localWS2DDefault(mGlobalWorkSize, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), kernelName, mKernel).first; - mOpenCLBackend->recordKernel2d(mKernel, mGlobalWorkSize, mLocalWorkSize); - mOpenCLBackend->endRecord(mRecording); - return NO_ERROR; -} - -ErrorCode DepthwiseConvExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("start DepthwiseConvExecution onExecute !\n"); -#endif - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - runKernel2D(mKernel, mGlobalWorkSize, mLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime(), - &event); + int dilationShape[2] = {mResource->mDilations[0], mResource->mDilations[1]}; - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"DepthwiseConv", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End DepthwiseConvExecution onExecute... \n"); -#endif - return NO_ERROR; + std::string info = std::to_string(inputChannels) + "_" + std::to_string(outputChannels) + "_" + std::to_string(filterHeight) + "_" + std::to_string(filterWidth) + "_" + std::to_string(mResource->mStrides[0]) + "_" + std::to_string(mResource->mStrides[1]) + std::to_string(mResource->mDilations[0]) + "_" + std::to_string(mResource->mDilations[1]); + + unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + unit.kernel->get().setArg(idx++, openCLImage(input)); + unit.kernel->get().setArg(idx++, openCLImage(mResource->mFilter.get())); + unit.kernel->get().setArg(idx++, openCLImage(mResource->mBias.get())); + unit.kernel->get().setArg(idx++, openCLImage(output)); + unit.kernel->get().setArg(idx++, sizeof(inputImageShape), inputImageShape); + unit.kernel->get().setArg(idx++, static_cast(inputChannelBlocks)); + unit.kernel->get().setArg(idx++, sizeof(outputImageShape), outputImageShape); + unit.kernel->get().setArg(idx++, sizeof(kernelShape), kernelShape); + unit.kernel->get().setArg(idx++, sizeof(paddingShape), paddingShape); + if (!S1D1) { + unit.kernel->get().setArg(idx++, sizeof(dilationShape), dilationShape); + unit.kernel->get().setArg(idx++, sizeof(strideShape), strideShape); } - runKernel2D(mKernel, mGlobalWorkSize, mLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end DepthwiseConvExecution onExecute !\n"); -#endif + + mLocalWorkSize = localWS2DDefault(mGlobalWorkSize, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), kernelName + info, unit.kernel).first; + mOpenCLBackend->recordKernel2d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1]}; return NO_ERROR; } diff --git a/source/backend/opencl/execution/image/DepthwiseConvExecution.hpp b/source/backend/opencl/execution/image/DepthwiseConvExecution.hpp index ba3aa026c..b643b27b2 100644 --- a/source/backend/opencl/execution/image/DepthwiseConvExecution.hpp +++ b/source/backend/opencl/execution/image/DepthwiseConvExecution.hpp @@ -13,26 +13,20 @@ namespace MNN { namespace OpenCL { -class DepthwiseConvExecution : public ConvCommonExecution { +class DepthwiseConvExecution : public ConvCommonExecution, public CommonExecution { public: DepthwiseConvExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend); + DepthwiseConvExecution(std::shared_ptr resource, const Op* op, Backend* backend); virtual ~DepthwiseConvExecution(); - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; + virtual bool onClone(Backend* bn, const Op* op, Execution** dst) override; private: - const Convolution2DCommon *mConv2dCommonParams; - const Convolution2D *mCon2dParams; - std::vector mStrides{1, 1}; std::vector mPaddings{0, 0}; - std::vector mDilations{1, 1}; - std::shared_ptr mFilter; - cl::Kernel mKernel; uint32_t mMaxWorkGroupSize; std::vector mGlobalWorkSize{1, 1, 1}; std::vector mLocalWorkSize{1, 1, 1, 1}; - OpenCLBackend *mOpenCLBackend; }; } // namespace OpenCL diff --git a/source/backend/opencl/execution/image/DepthwiseDeconvExecution.cpp b/source/backend/opencl/execution/image/DepthwiseDeconvExecution.cpp index c0e0059cb..d157373ea 100644 --- a/source/backend/opencl/execution/image/DepthwiseDeconvExecution.cpp +++ b/source/backend/opencl/execution/image/DepthwiseDeconvExecution.cpp @@ -17,18 +17,15 @@ namespace OpenCL { DepthwiseDeconvExecution::DepthwiseDeconvExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend) - : ConvCommonExecution(op->main_as_Convolution2D(), backend) { - mOpenCLBackend = static_cast(backend); - mCon2dParams = op->main_as_Convolution2D(); - mConv2dCommonParams = mCon2dParams->common(); - mStrides = {mConv2dCommonParams->strideY(), mConv2dCommonParams->strideX()}; - mDilations = {mConv2dCommonParams->dilateY(), mConv2dCommonParams->dilateX()}; + : ConvCommonExecution(op->main_as_Convolution2D(), backend), CommonExecution(backend, op){ + mResource->mConv2dParams = op->main_as_Convolution2D(); + mResource->mConv2dCommonParams = mResource->mConv2dParams->common(); + mResource->mStrides = {mResource->mConv2dCommonParams->strideY(), mResource->mConv2dCommonParams->strideX()}; + mResource->mDilations = {mResource->mConv2dCommonParams->dilateY(), mResource->mConv2dCommonParams->dilateX()}; - MNN_ASSERT(mStrides[0] > 0 && mStrides[1] > 0); - - int kernelWidth = mConv2dCommonParams->kernelX(); - int kernelHeight = mConv2dCommonParams->kernelY(); - int outputChannel = mConv2dCommonParams->outputCount(); + int kernelWidth = mResource->mConv2dCommonParams->kernelX(); + int kernelHeight = mResource->mConv2dCommonParams->kernelY(); + int outputChannel = mResource->mConv2dCommonParams->outputCount(); std::vector filterShape{1, outputChannel, kernelHeight, kernelWidth}; std::vector filterImageShape{(int)kernelHeight * kernelWidth, (int)UP_DIV(outputChannel, 4)}; @@ -36,9 +33,9 @@ DepthwiseDeconvExecution::DepthwiseDeconvExecution(const std::vector & const float* filterDataPtr = nullptr; int tempWeightSize = 0; std::shared_ptr quanCommon; - ConvolutionCommon::getConvParameters(&quanCommon, backend, mCon2dParams, &filterDataPtr, &tempWeightSize); + ConvolutionCommon::getConvParameters(&quanCommon, backend, mResource->mConv2dParams, &filterDataPtr, &tempWeightSize); - mFilter.reset(Tensor::createDevice({1, filterImageShape[1], 1, 4 * filterImageShape[0]})); + mResource->mFilter.reset(Tensor::createDevice({1, filterImageShape[1], 1, 4 * filterImageShape[0]})); std::shared_ptr filterBuffer(Tensor::createDevice(filterShape)); int buffer_size = filterBuffer->elementSize(); @@ -63,32 +60,46 @@ DepthwiseDeconvExecution::DepthwiseDeconvExecution(const std::vector & MNN_ERROR("Map error ptrCL == nullptr \n"); } mOpenCLBackend->getOpenCLRuntime()->commandQueue().enqueueUnmapMemObject(filterBufferCL, ptrCL); - mOpenCLBackend->onAcquireBuffer(mFilter.get(), Backend::STATIC); + mOpenCLBackend->onAcquireBuffer(mResource->mFilter.get(), Backend::STATIC); MNN::OpenCL::ImageBufferConvertor imageBufferConvertor{mOpenCLBackend->getOpenCLRuntime()}; std::string buildOption = ""; if(mOpenCLBackend->getOpenCLRuntime()->isWeightCpuTransHalf() == false){ buildOption = "-DBUFFER_INP_FP32"; } - imageBufferConvertor.convertBufferToImage(filterBuffer.get(), MNN::OpenCL::DW_CONV2D_FILTER, mFilter.get(), false, buildOption); - std::set buildOptions; - std::string kernelName = "depthwise_deconv2d"; - if (mConv2dCommonParams->relu() == true) { - buildOptions.emplace("-DRELU"); - } else if (mConv2dCommonParams->relu6() == true) { - buildOptions.emplace("-DRELU6"); + imageBufferConvertor.convertBufferToImage(filterBuffer.get(), MNN::OpenCL::DW_CONV2D_FILTER, mResource->mFilter.get(), false, buildOption); + if (mResource->mConv2dCommonParams->relu() == true) { + mResource->mBuildOptions.emplace("-DRELU"); + } else if (mResource->mConv2dCommonParams->relu6() == true) { + mResource->mBuildOptions.emplace("-DRELU6"); } - auto runtime = mOpenCLBackend->getOpenCLRuntime(); - - mKernel = runtime->buildKernel("depthwise_deconv2d", kernelName, buildOptions); - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); } DepthwiseDeconvExecution::~DepthwiseDeconvExecution() { - mOpenCLBackend->onReleaseBuffer(mFilter.get(), Backend::STATIC); + // Do nothing +} +DepthwiseDeconvExecution::DepthwiseDeconvExecution(std::shared_ptr resource, const MNN::Op* op, Backend *backend) + : ConvCommonExecution(backend), CommonExecution(backend, op) { + mResource = resource; + const auto *conv2dParams = op->main_as_Convolution2D(); + const auto *conv2dCommonParams = conv2dParams->common(); + mResource->mConv2dParams = conv2dParams; + mResource->mConv2dCommonParams = conv2dCommonParams; +} + +bool DepthwiseDeconvExecution::onClone(Backend* bn, const Op* op, Execution** dst) { + if (!mValid) { + return false; + } + if (nullptr == dst) { + return true; + } + *dst = new DepthwiseDeconvExecution(mResource, op, bn); + return true; } -ErrorCode DepthwiseDeconvExecution::onResize(const std::vector &inputs, +ErrorCode DepthwiseDeconvExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { - mOpenCLBackend->startRecord(mRecording); + mUnits.resize(1); + auto &unit = mUnits[0]; auto input = inputs[0]; auto output = outputs[0]; @@ -104,25 +115,28 @@ ErrorCode DepthwiseDeconvExecution::onResize(const std::vector &inputs const int inputWidth = inputShape.at(2); const int inputChannels = inputShape.at(3); - const int strideHeight = mStrides[0]; - const int strideWidth = mStrides[1]; + const int strideHeight = mResource->mStrides[0]; + const int strideWidth = mResource->mStrides[1]; const int channelBlocks = UP_DIV(outputChannels, 4); - auto pad = ConvolutionCommon::convolutionTransposePad(input, output, mConv2dCommonParams); + auto pad = ConvolutionCommon::convolutionTransposePad(input, output, mResource->mConv2dCommonParams); const int paddingHeight = pad.second; const int paddingWidth = pad.first; const int alignHeight = strideHeight - 1 - paddingHeight; const int alignWidth = strideWidth - 1 - paddingWidth; - const int filterHeight = mConv2dCommonParams->kernelY(); - const int filterWidth = mConv2dCommonParams->kernelX(); + const int filterHeight = mResource->mConv2dCommonParams->kernelY(); + const int filterWidth = mResource->mConv2dCommonParams->kernelX(); const int kernelSize = filterHeight * filterWidth; mGWS = {static_cast(channelBlocks), static_cast(outputWidth), static_cast(outputHeight * outputBatch)}; - auto kernel = &mKernel; + std::string info = std::to_string(inputChannels) + "_" + std::to_string(outputChannels) + "_" + std::to_string(filterHeight) + "_" + std::to_string(filterWidth) + "_" + std::to_string(strideHeight) + "_" + std::to_string(strideWidth); + auto runtime = mOpenCLBackend->getOpenCLRuntime(); + unit.kernel = runtime->buildKernel("depthwise_deconv2d", "depthwise_deconv2d", mResource->mBuildOptions); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); int inputImageShape[2] = {inputHeight, inputWidth}; int outputImageShape[2] = {outputHeight, outputWidth}; @@ -132,63 +146,31 @@ ErrorCode DepthwiseDeconvExecution::onResize(const std::vector &inputs int kernelShape[2] = {filterHeight, filterWidth}; uint32_t idx = 0; - kernel->setArg(idx++, mGWS[0]); - kernel->setArg(idx++, mGWS[1]); - kernel->setArg(idx++, mGWS[2]); - - kernel->setArg(idx++, openCLImage(input)); - kernel->setArg(idx++, openCLImage(mFilter.get())); - kernel->setArg(idx++, openCLImage(mBias.get())); - kernel->setArg(idx++, openCLImage(output)); - kernel->setArg(idx++, sizeof(inputImageShape), inputImageShape); - kernel->setArg(idx++, sizeof(outputImageShape), outputImageShape); - kernel->setArg(idx++, sizeof(strideShape), strideShape); - kernel->setArg(idx++, sizeof(alignShape), alignShape); - kernel->setArg(idx++, sizeof(paddingShape), paddingShape); - kernel->setArg(idx++, sizeof(kernelShape), kernelShape); - kernel->setArg(idx++, static_cast(kernelSize)); - kernel->setArg(idx++, static_cast(channelBlocks)); + unit.kernel->get().setArg(idx++, mGWS[0]); + unit.kernel->get().setArg(idx++, mGWS[1]); + unit.kernel->get().setArg(idx++, mGWS[2]); + + unit.kernel->get().setArg(idx++, openCLImage(input)); + unit.kernel->get().setArg(idx++, openCLImage(mResource->mFilter.get())); + unit.kernel->get().setArg(idx++, openCLImage(mResource->mBias.get())); + unit.kernel->get().setArg(idx++, openCLImage(output)); + unit.kernel->get().setArg(idx++, sizeof(inputImageShape), inputImageShape); + unit.kernel->get().setArg(idx++, sizeof(outputImageShape), outputImageShape); + unit.kernel->get().setArg(idx++, sizeof(strideShape), strideShape); + unit.kernel->get().setArg(idx++, sizeof(alignShape), alignShape); + unit.kernel->get().setArg(idx++, sizeof(paddingShape), paddingShape); + unit.kernel->get().setArg(idx++, sizeof(kernelShape), kernelShape); + unit.kernel->get().setArg(idx++, static_cast(kernelSize)); + unit.kernel->get().setArg(idx++, static_cast(channelBlocks)); std::string name = "depthwiseDeconv"; - mLWS = localWS3DDefault(mGWS, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), name, mKernel).first; - mOpenCLBackend->recordKernel3d(mKernel, mGWS, mLWS); - mOpenCLBackend->endRecord(mRecording); + mLWS = localWS3DDefault(mGWS, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), name + info, unit.kernel).first; + mOpenCLBackend->recordKernel3d(unit.kernel, mGWS, mLWS); + unit.globalWorkSize = {mGWS[0], mGWS[1], mGWS[2]}; + unit.localWorkSize = {mLWS[0], mLWS[1], mLWS[2]}; return NO_ERROR; } -ErrorCode DepthwiseDeconvExecution::onExecute(const std::vector &inputs, - const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("Start DepthwiseDeconvExecution onExecute !\n"); -#endif - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGWS, mLWS, - mOpenCLBackend->getOpenCLRuntime(), - &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"DepthwiseDeconv", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End DepthwiseDeconvExecution onExecute... \n"); -#endif - return NO_ERROR; - } - run3DKernelDefault(mKernel, mGWS, mLWS, - mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("End DepthwiseDeconvExecution onExecute !\n"); -#endif - return NO_ERROR; -} - - class DepthwiseDeconvolutionCreator : public OpenCLBackend::Creator { public: virtual ~DepthwiseDeconvolutionCreator() = default; diff --git a/source/backend/opencl/execution/image/DepthwiseDeconvExecution.hpp b/source/backend/opencl/execution/image/DepthwiseDeconvExecution.hpp index 42624c404..8a98c13c3 100644 --- a/source/backend/opencl/execution/image/DepthwiseDeconvExecution.hpp +++ b/source/backend/opencl/execution/image/DepthwiseDeconvExecution.hpp @@ -13,26 +13,20 @@ namespace MNN { namespace OpenCL { -class DepthwiseDeconvExecution : public ConvCommonExecution { +class DepthwiseDeconvExecution : public ConvCommonExecution, public CommonExecution { public: DepthwiseDeconvExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend); + DepthwiseDeconvExecution(std::shared_ptr resource, const Op* op, Backend* backend); virtual ~DepthwiseDeconvExecution(); - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; + virtual bool onClone(Backend* bn, const Op* op, Execution** dst) override; private: - const Convolution2DCommon *mConv2dCommonParams; - const Convolution2D *mCon2dParams; std::vector mLWS{0, 0, 0, 0}; std::vector mGWS{0, 0, 0, 0}; - std::vector mStrides{1, 1}; std::vector mPaddings{0, 0}; - std::vector mDilations{1, 1}; - std::shared_ptr mFilter; - cl::Kernel mKernel; uint32_t mMaxWorkGroupSize; - OpenCLBackend *mOpenCLBackend; }; } // namespace OpenCL diff --git a/source/backend/opencl/execution/image/EltwiseExecution.cpp b/source/backend/opencl/execution/image/EltwiseExecution.cpp index 191d469f7..c00752875 100644 --- a/source/backend/opencl/execution/image/EltwiseExecution.cpp +++ b/source/backend/opencl/execution/image/EltwiseExecution.cpp @@ -27,12 +27,17 @@ static string swapComputeIn0In1(const string& computeOrigin) { return compute; } -EltwiseExecution::EltwiseExecution(const std::vector &inputs, const std::string &compute, const MNN::Op *op, Backend *backend) +EltwiseExecution::EltwiseExecution(const std::vector &inputs, const std::vector &outputs, const std::string &compute, const MNN::Op *op, Backend *backend) : CommonExecution(backend, op), mCompute(compute) { - mBuildOptions.emplace("-DOPERATOR=" + compute); - auto dataType = inputs[0]->getType(); - if (dataType.code == halide_type_int){ - mBuildOptions.emplace("-DOPENCL_INPUT_INT"); + MNN_ASSERT(inputs.size() >= 2); + mUnits.resize(inputs.size() - 1); + mMaxWorkGroupSize.resize(inputs.size() - 1); + auto runTime = static_cast(backend)->getOpenCLRuntime(); + std::set buildOptions; + buildOptions.emplace("-DOPERATOR=" + compute); + for(int i = 0; i < mUnits.size(); ++i){ + mUnits[i].kernel = runTime->buildKernel("binary", "binary", buildOptions, inputs[i], outputs[0]); + mMaxWorkGroupSize[i] = static_cast(runTime->getMaxWorkGroupSize(mUnits[i].kernel)); } } @@ -44,18 +49,16 @@ uint32_t EltwiseExecution::realSize(const Tensor* tensor) { return num; } -ErrorCode EltwiseExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode EltwiseExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { MNN_ASSERT(inputs.size() >= 2); - mUnits.resize(inputs.size() - 1); auto openCLBackend = static_cast(backend()); - openCLBackend->startRecord(mRecording); + auto runTime = openCLBackend->getOpenCLRuntime(); auto output = outputs[0]; auto inputShape0 = tensorShapeFormat(inputs[0]); auto inputShape1 = tensorShapeFormat(inputs[1]); auto outputShape = tensorShapeFormat(output); - auto runTime = ((OpenCLBackend *)backend())->getOpenCLRuntime(); int shape[4] = {outputShape[0], outputShape[1], outputShape[2], UP_DIV(outputShape[3], 4)}; int fullCount[2] = {1, 1}; int activationType = 0; @@ -64,10 +67,8 @@ ErrorCode EltwiseExecution::onResize(const std::vector &inputs, const } auto &unit = mUnits[0]; - unit.kernel = runTime->buildKernel("binary", "binary", mBuildOptions); - mMaxWorkGroupSize = static_cast(runTime->getMaxWorkGroupSize(unit.kernel)); - mGlobalWorkSize = {(uint32_t)UP_DIV(outputShape[3], 4)*outputShape[2], + std::vector globalWorkSize = {(uint32_t)UP_DIV(outputShape[3], 4)*outputShape[2], (uint32_t)outputShape[0] * outputShape[1]}; if(inputs.size() == 2) { @@ -76,24 +77,23 @@ ErrorCode EltwiseExecution::onResize(const std::vector &inputs, const uint32_t index = 0; cl_int ret = CL_SUCCESS; - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[0]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[1]); - ret |= unit.kernel.setArg(index++, openCLImage(inputs[0])); - ret |= unit.kernel.setArg(index++, openCLImage(inputs[1])); - ret |= unit.kernel.setArg(index++, openCLImage(output)); - ret |= unit.kernel.setArg(index++, shape); - ret |= unit.kernel.setArg(index++, fullCount); - ret |= unit.kernel.setArg(index++, activationType); + ret |= unit.kernel->get().setArg(index++, globalWorkSize[0]); + ret |= unit.kernel->get().setArg(index++, globalWorkSize[1]); + ret |= unit.kernel->get().setArg(index++, openCLImage(inputs[0])); + ret |= unit.kernel->get().setArg(index++, openCLImage(inputs[1])); + ret |= unit.kernel->get().setArg(index++, openCLImage(output)); + ret |= unit.kernel->get().setArg(index++, shape); + ret |= unit.kernel->get().setArg(index++, fullCount); + ret |= unit.kernel->get().setArg(index++, activationType); MNN_CHECK_CL_SUCCESS(ret, "setArg eltwiseExecution"); std::string name = "binary"; - mLocalWorkSize = localWS2DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), name, unit.kernel).first; + std::vector localWorkSize = localWS2DDefault(globalWorkSize, mMaxWorkGroupSize[0], openCLBackend->getOpenCLRuntime(), name, unit.kernel).first; - unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1]}; - unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1]}; + unit.globalWorkSize = {globalWorkSize[0], globalWorkSize[1]}; + unit.localWorkSize = {localWorkSize[0], localWorkSize[1]}; - openCLBackend->recordKernel2d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); - openCLBackend->endRecord(mRecording); + openCLBackend->recordKernel2d(unit.kernel, globalWorkSize, localWorkSize); return NO_ERROR; } @@ -109,13 +109,12 @@ ErrorCode EltwiseExecution::onResize(const std::vector &inputs, const bool useTempAsOutput = (inputs.size() % 2 != 0); fullCount[1] = 1; - + std::vector lws; for (int i = 0; i < inputs.size(); ++i) { if (i == 1) continue; auto &unit = (i >= 2) ? mUnits[i - 1] : mUnits[i]; - unit.kernel = runTime->buildKernel("binary", "binary", mBuildOptions); auto input0 = inputs[0]; fullCount[0] = realSize(input0) == 1 ? 0 : 1; @@ -132,27 +131,26 @@ ErrorCode EltwiseExecution::onResize(const std::vector &inputs, const uint32_t index = 0; cl_int ret = CL_SUCCESS; - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[0]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[1]); - ret |= unit.kernel.setArg(index++, openCLImage(input0)); - ret |= unit.kernel.setArg(index++, openCLImage(input1)); - ret |= unit.kernel.setArg(index++, openCLImage(output)); - ret |= unit.kernel.setArg(index++, shape); - ret |= unit.kernel.setArg(index++, fullCount); - ret |= unit.kernel.setArg(index++, activationType); + ret |= unit.kernel->get().setArg(index++, globalWorkSize[0]); + ret |= unit.kernel->get().setArg(index++, globalWorkSize[1]); + ret |= unit.kernel->get().setArg(index++, openCLImage(input0)); + ret |= unit.kernel->get().setArg(index++, openCLImage(input1)); + ret |= unit.kernel->get().setArg(index++, openCLImage(output)); + ret |= unit.kernel->get().setArg(index++, shape); + ret |= unit.kernel->get().setArg(index++, fullCount); + ret |= unit.kernel->get().setArg(index++, activationType); MNN_CHECK_CL_SUCCESS(ret, "setArg eltwiseExecution multiinput"); if(i == 0) { std::string name = "binary"; - mLocalWorkSize = localWS2DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), name, unit.kernel).first; + lws = localWS2DDefault(globalWorkSize, mMaxWorkGroupSize[i], openCLBackend->getOpenCLRuntime(), name, unit.kernel).first; } - unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1]}; - unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1]}; + unit.globalWorkSize = {globalWorkSize[0], globalWorkSize[1]}; + unit.localWorkSize = {lws[0], lws[1]}; - openCLBackend->recordKernel2d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); + openCLBackend->recordKernel2d(unit.kernel, globalWorkSize, lws); } - openCLBackend->endRecord(mRecording); return NO_ERROR; } @@ -163,13 +161,13 @@ class EltwiseCreator : public OpenCLBackend::Creator { if (op->type() == OpType_Eltwise) { switch (op->main_as_Eltwise()->type()) { case EltwiseType_SUM: - return new EltwiseExecution(inputs, "in0+in1", op, backend); + return new EltwiseExecution(inputs, outputs, "in0+in1", op, backend); case EltwiseType_SUB: - return new EltwiseExecution(inputs, "in0-in1", op, backend); + return new EltwiseExecution(inputs, outputs, "in0-in1", op, backend); case EltwiseType_PROD: - return new EltwiseExecution(inputs, "in0*in1", op, backend); + return new EltwiseExecution(inputs, outputs, "in0*in1", op, backend); case EltwiseType_MAXIMUM: - return new EltwiseExecution(inputs, "in0>in1?in0:in1", op, backend); + return new EltwiseExecution(inputs, outputs, "in0>in1?in0:in1", op, backend); default: break; } @@ -181,41 +179,41 @@ class EltwiseCreator : public OpenCLBackend::Creator { switch (op->main_as_BinaryOp()->opType()) { case BinaryOpOperation_MUL: - return new EltwiseExecution(inputs, "in0*in1", op, backend); + return new EltwiseExecution(inputs, outputs, "in0*in1", op, backend); case BinaryOpOperation_ADD: - return new EltwiseExecution(inputs, "in0+in1", op, backend); + return new EltwiseExecution(inputs, outputs, "in0+in1", op, backend); case BinaryOpOperation_SUB: - return new EltwiseExecution(inputs, "in0-in1", op, backend); + return new EltwiseExecution(inputs, outputs, "in0-in1", op, backend); case BinaryOpOperation_REALDIV: - return new EltwiseExecution(inputs, "sign(in1)*in0/(fabs(in1)>(FLOAT4)((FLOAT)0.0000001)?fabs(in1):(FLOAT4)((FLOAT)0.0000001))", op, backend); + return new EltwiseExecution(inputs, outputs, "sign(in1)*in0/(fabs(in1)>(float4)((float)0.0000001)?fabs(in1):(float4)((float)0.0000001))", op, backend); case BinaryOpOperation_MINIMUM: - return new EltwiseExecution(inputs, "in0>in1?in1:in0", op, backend); + return new EltwiseExecution(inputs, outputs, "in0>in1?in1:in0", op, backend); case BinaryOpOperation_MAXIMUM: - return new EltwiseExecution(inputs, "in0>in1?in0:in1", op, backend); + return new EltwiseExecution(inputs, outputs, "in0>in1?in0:in1", op, backend); case BinaryOpOperation_GREATER: - return new EltwiseExecution(inputs, "convert_float4(-isgreater(in0,in1))", op, backend); + return new EltwiseExecution(inputs, outputs, "convert_float4(-isgreater(in0,in1))", op, backend); case BinaryOpOperation_LESS: - return new EltwiseExecution(inputs, "convert_float4(-isless(in0,in1))", op, backend); + return new EltwiseExecution(inputs, outputs, "convert_float4(-isless(in0,in1))", op, backend); case BinaryOpOperation_LESS_EQUAL: - return new EltwiseExecution(inputs, "convert_float4(-islessequal(in0,in1))", op, backend); + return new EltwiseExecution(inputs, outputs, "convert_float4(-islessequal(in0,in1))", op, backend); case BinaryOpOperation_GREATER_EQUAL: - return new EltwiseExecution(inputs, "convert_float4(-isgreaterequal(in0,in1))", op, backend); + return new EltwiseExecution(inputs, outputs, "convert_float4(-isgreaterequal(in0,in1))", op, backend); case BinaryOpOperation_EQUAL: - return new EltwiseExecution(inputs, "convert_float4(-isequal(in0,in1))", op, backend); + return new EltwiseExecution(inputs, outputs, "convert_float4(-isequal(in0,in1))", op, backend); case BinaryOpOperation_FLOORDIV: - return new EltwiseExecution(inputs, "floor(sign(in1)*in0/(fabs(in1)>(FLOAT4)((FLOAT)0.0000001)?fabs(in1):(FLOAT4)((FLOAT)0.0000001)))", op, backend); + return new EltwiseExecution(inputs, outputs, "floor(sign(in1)*in0/(fabs(in1)>(float4)((float)0.0000001)?fabs(in1):(float4)((float)0.0000001)))", op, backend); case BinaryOpOperation_FLOORMOD: - return new EltwiseExecution(inputs, "in0-floor(sign(in1)*in0/(fabs(in1)>(FLOAT4)((FLOAT)0.0000001)?fabs(in1):(FLOAT4)((FLOAT)0.0000001)))*in1", op, backend); + return new EltwiseExecution(inputs, outputs, "in0-floor(sign(in1)*in0/(fabs(in1)>(float4)((float)0.0000001)?fabs(in1):(float4)((float)0.0000001)))*in1", op, backend); case BinaryOpOperation_POW: - return new EltwiseExecution(inputs, "pow(in0,in1)", op, backend); + return new EltwiseExecution(inputs, outputs, "pow(in0,in1)", op, backend); case BinaryOpOperation_SquaredDifference: - return new EltwiseExecution(inputs, "(in0-in1)*(in0-in1)", op, backend); + return new EltwiseExecution(inputs, outputs, "(in0-in1)*(in0-in1)", op, backend); case BinaryOpOperation_ATAN2: - return new EltwiseExecution(inputs, "(in1==(FLOAT4)0?(sign(in0)*(FLOAT4)(PI/2)):(atan(in0/in1)+(in1>(FLOAT4)0?(FLOAT4)0:sign(in0)*(FLOAT4)PI)))", op, backend); + return new EltwiseExecution(inputs, outputs, "(in1==(float4)0?(sign(in0)*(float4)(PI/2)):(atan(in0/in1)+(in1>(float4)0?(float4)0:sign(in0)*(float4)PI)))", op, backend); case BinaryOpOperation_NOTEQUAL: - return new EltwiseExecution(inputs, "convert_float4(-isnotequal(in0,in1))", op, backend); + return new EltwiseExecution(inputs, outputs, "convert_float4(-isnotequal(in0,in1))", op, backend); case BinaryOpOperation_MOD: - return new EltwiseExecution(inputs, "in0-floor(sign(in1)*in0/(fabs(in1)>(FLOAT4)((FLOAT)0.0000001)?fabs(in1):(FLOAT4)((FLOAT)0.0000001)))*in1", op, backend); + return new EltwiseExecution(inputs, outputs, "in0-floor(sign(in1)*in0/(fabs(in1)>(float4)((float)0.0000001)?fabs(in1):(float4)((float)0.0000001)))*in1", op, backend); default: break; } diff --git a/source/backend/opencl/execution/image/EltwiseExecution.hpp b/source/backend/opencl/execution/image/EltwiseExecution.hpp index f0125c514..c49fcd94b 100644 --- a/source/backend/opencl/execution/image/EltwiseExecution.hpp +++ b/source/backend/opencl/execution/image/EltwiseExecution.hpp @@ -16,22 +16,17 @@ namespace OpenCL { class EltwiseExecution : public CommonExecution { public: - EltwiseExecution(const std::vector &inputs, const std::string &compute, const MNN::Op *op, Backend *backend); + EltwiseExecution(const std::vector &inputs, const std::vector &outputs, const std::string &compute, const MNN::Op *op, Backend *backend); virtual ~EltwiseExecution() = default; uint32_t realSize(const Tensor* tensor); - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: - bool mBroadCast; - float mOperatorData; std::string mCompute; - std::set mBuildOptions; std::shared_ptr mTempOutput; - uint32_t mMaxWorkGroupSize; - std::vector mGlobalWorkSize = {1, 1, 1}; - std::vector mLocalWorkSize = {1, 1, 1}; + std::vector mMaxWorkGroupSize; }; } // namespace OpenCL diff --git a/source/backend/opencl/execution/image/FuseExecution.cpp b/source/backend/opencl/execution/image/FuseExecution.cpp index b46523387..5943daf8a 100644 --- a/source/backend/opencl/execution/image/FuseExecution.cpp +++ b/source/backend/opencl/execution/image/FuseExecution.cpp @@ -14,33 +14,27 @@ namespace MNN { namespace OpenCL { FuseExecution::FuseExecution(const std::vector &inputs, Backend *backend, const Op* op) - : Execution(backend) { + : CommonExecution(backend, op) { + mUnits.resize(1); mOpenCLBackend = static_cast(backend); - buildFuseKernel(op); -} - -bool FuseExecution::buildFuseKernel(const Op* op) { auto runtime = mOpenCLBackend->getOpenCLRuntime(); - if (mKernel.get() == nullptr) { - std::set buildOptions; - std::string kernelName; - auto extra = op->main_as_Extra(); - auto source = reinterpret_cast(extra->info()->data()); - auto name = extra->type()->c_str(); - mKernelName = extra->type()->str(); - mKernel = runtime->buildKernelFromSource(source, name, buildOptions); - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); - } - return true; + std::set buildOptions; + std::string kernelName; + auto extra = op->main_as_Extra(); + auto source = reinterpret_cast(extra->info()->data()); + auto name = extra->type()->c_str(); + mKernelName = extra->type()->str(); + mUnits[0].kernel = runtime->buildKernelFromSource(source, name, buildOptions); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mUnits[0].kernel)); } -ErrorCode FuseExecution::onResize(const std::vector &inputs, const std::vector &outputs) { - mOpenCLBackend->startRecord(mRecording); +ErrorCode FuseExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { Tensor *input = inputs[0]; Tensor *output = outputs[0]; std::vector inputShape = tensorShapeFormat(input); std::vector outputShape = tensorShapeFormat(output); + auto &unit = mUnits[0]; const int outputBatch = outputShape.at(0); const int outputHeight = outputShape.at(1); @@ -58,48 +52,20 @@ ErrorCode FuseExecution::onResize(const std::vector &inputs, const std uint32_t idx = 0; cl_int ret = CL_SUCCESS; for (auto input : inputs) { - ret |= mKernel.setArg(idx++, openCLImage(input)); + ret |= unit.kernel->get().setArg(idx++, openCLImage(input)); } for (auto output : outputs) { - ret |= mKernel.setArg(idx++, openCLImage(output)); + ret |= unit.kernel->get().setArg(idx++, openCLImage(output)); } - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[2]); MNN_CHECK_CL_SUCCESS(ret, "setArg FuseExecution"); - mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), mKernelName, mKernel).first; - mOpenCLBackend->recordKernel3d(mKernel, mGlobalWorkSize, mLocalWorkSize); - mOpenCLBackend->endRecord(mRecording); - return NO_ERROR; -} - -ErrorCode FuseExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("start FuseExecution onExecute !\n"); -#endif -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Fuse", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("end SoftmaxExecution onExecute !\n"); -#endif - return NO_ERROR; - } - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalWorkSize, mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end SoftmaxExecution onExecute !\n"); -#endif - + mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), mKernelName, unit.kernel).first; + mOpenCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1], mLocalWorkSize[2]}; return NO_ERROR; } diff --git a/source/backend/opencl/execution/image/FuseExecution.hpp b/source/backend/opencl/execution/image/FuseExecution.hpp index 2228d1a83..4da4954df 100644 --- a/source/backend/opencl/execution/image/FuseExecution.hpp +++ b/source/backend/opencl/execution/image/FuseExecution.hpp @@ -9,27 +9,19 @@ #ifndef FuseExecution_hpp #define FuseExecution_hpp -#include -#include "core/Execution.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "CommonExecution.hpp" namespace MNN { namespace OpenCL { -class FuseExecution : public Execution, public CommonExtension { +class FuseExecution : public CommonExecution { public: FuseExecution(const std::vector &inputs, Backend *backend, const Op* op); virtual ~FuseExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; - - bool buildFuseKernel(const Op* op); + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: std::string mKernelName; - cl::Kernel mKernel; uint32_t mMaxWorkGroupSize; OpenCLBackend *mOpenCLBackend; std::vector mGlobalWorkSize{1, 1, 1}; diff --git a/source/backend/opencl/execution/image/GridSampleExecution.cpp b/source/backend/opencl/execution/image/GridSampleExecution.cpp index 21d7625a2..7cc2a0ff1 100644 --- a/source/backend/opencl/execution/image/GridSampleExecution.cpp +++ b/source/backend/opencl/execution/image/GridSampleExecution.cpp @@ -13,7 +13,9 @@ namespace MNN { namespace OpenCL { GridSampleExecution::GridSampleExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend) - : Execution(backend) { + : CommonExecution(backend, op) { + mUnits.resize(1); + auto &unit = mUnits[0]; mPaddingMode = op->main_as_GridSample()->paddingMode(); if (op->main_as_GridSample()->alignCorners()) { mAlignCorners = 1; @@ -29,19 +31,19 @@ GridSampleExecution::GridSampleExecution(const std::vector &inputs, co std::set buildOptions; if (op->main_as_GridSample()->mode() == 0) { mKernelName = "bilinear"; - mKernel = runtime->buildKernel("grid_sample", mKernelName, buildOptions); + unit.kernel = runtime->buildKernel("grid_sample", mKernelName, buildOptions); } else { mKernelName = "nearest"; - mKernel = runtime->buildKernel("grid_sample", mKernelName, buildOptions); + unit.kernel = runtime->buildKernel("grid_sample", mKernelName, buildOptions); } - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); } -ErrorCode GridSampleExecution::onResize(const std::vector &inputs, const std::vector &outputs) { - mOpenCLBackend->startRecord(mRecording); +ErrorCode GridSampleExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { + auto &unit = mUnits[0]; auto inputTensor = inputs[0]; auto gridTensor = inputs[1]; auto outputTensor = outputs[0]; @@ -65,41 +67,24 @@ ErrorCode GridSampleExecution::onResize(const std::vector &inputs, con uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[2]); - ret |= mKernel.setArg(idx++, openCLImage(inputTensor)); - ret |= mKernel.setArg(idx++, openCLImage(gridTensor)); - ret |= mKernel.setArg(idx++, openCLImage(outputTensor)); - ret |= mKernel.setArg(idx++, static_cast(inH)); - ret |= mKernel.setArg(idx++, static_cast(inW)); - ret |= mKernel.setArg(idx++, static_cast(outH)); - ret |= mKernel.setArg(idx++, static_cast(outW)); - ret |= mKernel.setArg(idx++, mPaddingMode); - ret |= mKernel.setArg(idx++, mAlignCorners); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(idx++, openCLImage(inputTensor)); + ret |= unit.kernel->get().setArg(idx++, openCLImage(gridTensor)); + ret |= unit.kernel->get().setArg(idx++, openCLImage(outputTensor)); + ret |= unit.kernel->get().setArg(idx++, static_cast(inH)); + ret |= unit.kernel->get().setArg(idx++, static_cast(inW)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outH)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outW)); + ret |= unit.kernel->get().setArg(idx++, mPaddingMode); + ret |= unit.kernel->get().setArg(idx++, mAlignCorners); MNN_CHECK_CL_SUCCESS(ret, "setArg GridSampleExecution"); - mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), mKernelName, mKernel).first; - mOpenCLBackend->recordKernel3d(mKernel, mGlobalWorkSize, mLocalWorkSize); - mOpenCLBackend->endRecord(mRecording); - return NO_ERROR; -} - -ErrorCode GridSampleExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"GridSample", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); - return NO_ERROR; - } - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalWorkSize, mOpenCLBackend->getOpenCLRuntime()); -#endif + mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), mKernelName, unit.kernel).first; + mOpenCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1], mLocalWorkSize[2]}; return NO_ERROR; } diff --git a/source/backend/opencl/execution/image/GridSampleExecution.hpp b/source/backend/opencl/execution/image/GridSampleExecution.hpp index 42697b200..0c3122aa3 100644 --- a/source/backend/opencl/execution/image/GridSampleExecution.hpp +++ b/source/backend/opencl/execution/image/GridSampleExecution.hpp @@ -9,20 +9,16 @@ #ifndef GridSampleExecution_hpp #define GridSampleExecution_hpp -#include "core/Execution.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "CommonExecution.hpp" namespace MNN { namespace OpenCL { -class GridSampleExecution : public Execution, public CommonExtension { +class GridSampleExecution : public CommonExecution { public: GridSampleExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend); virtual ~GridSampleExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: SampleMode mMode; @@ -31,8 +27,6 @@ class GridSampleExecution : public Execution, public CommonExtension { std::vector mGlobalWorkSize{ 0,0,0,0 }; std::vector mLocalWorkSize{ 0,0,0,0 }; - - cl::Kernel mKernel; std::string mKernelName; uint32_t mMaxWorkGroupSize; OpenCLBackend *mOpenCLBackend; diff --git a/source/backend/opencl/execution/image/Interp3DExecution.cpp b/source/backend/opencl/execution/image/Interp3DExecution.cpp index 2e52545b3..53c9336a8 100644 --- a/source/backend/opencl/execution/image/Interp3DExecution.cpp +++ b/source/backend/opencl/execution/image/Interp3DExecution.cpp @@ -13,7 +13,9 @@ namespace MNN { namespace OpenCL { Interp3DExecution::Interp3DExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend) - : Execution(backend) { + : CommonExecution(backend, op) { + mUnits.resize(1); + auto &unit = mUnits[0]; mOpenCLBackend = static_cast(backend); auto runtime = mOpenCLBackend->getOpenCLRuntime(); auto interp3DParam = op->main_as_Interp(); @@ -27,19 +29,19 @@ Interp3DExecution::Interp3DExecution(const std::vector &inputs, const std::set buildOptions; std::string kernelName = "interp3D"; if (op->main_as_Interp()->resizeType() == 1) { - mKernel = runtime->buildKernel("nearest", kernelName, buildOptions); + unit.kernel = runtime->buildKernel("nearest", kernelName, buildOptions); } else { MNN_ERROR("Resize types other than nearest are not supported in Interp3D opencl! Using nearest instead\n"); - mKernel = runtime->buildKernel("nearest", kernelName, buildOptions); + unit.kernel = runtime->buildKernel("nearest", kernelName, buildOptions); } - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); } -ErrorCode Interp3DExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode Interp3DExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { Tensor *input = inputs[0]; Tensor *output = outputs[0]; - mOpenCLBackend->startRecord(mRecording); + auto &unit = mUnits[0]; std::vector inputImageShape = tensorShapeFormat(input); // {C/4 * H * W, N * D} for 5-D Tensor std::vector outputImageShape = tensorShapeFormat(output); @@ -66,62 +68,33 @@ ErrorCode Interp3DExecution::onResize(const std::vector &inputs, const uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGWS[0]); - ret |= mKernel.setArg(idx++, mGWS[1]); - ret |= mKernel.setArg(idx++, mGWS[2]); - ret |= mKernel.setArg(idx++, openCLImage(input)); - ret |= mKernel.setArg(idx++, openCLImage(output)); - ret |= mKernel.setArg(idx++, mCordTransform[4]); - ret |= mKernel.setArg(idx++, mCordTransform[2]); - ret |= mKernel.setArg(idx++, mCordTransform[0]); - ret |= mKernel.setArg(idx++, mCordTransform[5]); - ret |= mKernel.setArg(idx++, mCordTransform[3]); - ret |= mKernel.setArg(idx++, mCordTransform[1]); - ret |= mKernel.setArg(idx++, static_cast(inputDepth)); - ret |= mKernel.setArg(idx++, static_cast(inputHeight)); - ret |= mKernel.setArg(idx++, static_cast(inputWidth)); - ret |= mKernel.setArg(idx++, static_cast(outputDepth)); - ret |= mKernel.setArg(idx++, static_cast(outputHeight)); + ret |= unit.kernel->get().setArg(idx++, mGWS[0]); + ret |= unit.kernel->get().setArg(idx++, mGWS[1]); + ret |= unit.kernel->get().setArg(idx++, mGWS[2]); + ret |= unit.kernel->get().setArg(idx++, openCLImage(input)); + ret |= unit.kernel->get().setArg(idx++, openCLImage(output)); + ret |= unit.kernel->get().setArg(idx++, mCordTransform[4]); + ret |= unit.kernel->get().setArg(idx++, mCordTransform[2]); + ret |= unit.kernel->get().setArg(idx++, mCordTransform[0]); + ret |= unit.kernel->get().setArg(idx++, mCordTransform[5]); + ret |= unit.kernel->get().setArg(idx++, mCordTransform[3]); + ret |= unit.kernel->get().setArg(idx++, mCordTransform[1]); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputDepth)); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputHeight)); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputWidth)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputDepth)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputHeight)); MNN_CHECK_CL_SUCCESS(ret, "setArg Intep3DExecution"); std::string name = "interp3D"; - mLWS = localWS3DDefault(mGWS, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), name, mKernel).first; - mOpenCLBackend->recordKernel3d(mKernel, mGWS, mLWS); - mOpenCLBackend->endRecord(mRecording); + mLWS = localWS3DDefault(mGWS, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), name, unit.kernel).first; + mOpenCLBackend->recordKernel3d(unit.kernel, mGWS, mLWS); + unit.globalWorkSize = {mGWS[0], mGWS[1], mGWS[2]}; + unit.localWorkSize = {mLWS[0], mLWS[1], mLWS[2]}; return NO_ERROR; } -ErrorCode Interp3DExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("Start Interp3DExecution onExecute... \n"); -#endif - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGWS, mLWS, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Interp3D", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End Interp3DExecution onExecute... \n"); -#endif - return NO_ERROR; - } - run3DKernelDefault(mKernel, mGWS, mLWS, mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end Interp3DExecution onExecute... \n"); -#endif - - return NO_ERROR; -} - using Interp3DCreator = TypedCreator; REGISTER_OPENCL_OP_CREATOR(Interp3DCreator, OpType_Interp3D, IMAGE); diff --git a/source/backend/opencl/execution/image/Interp3DExecution.hpp b/source/backend/opencl/execution/image/Interp3DExecution.hpp index 6bb2ec202..1e8bcd180 100644 --- a/source/backend/opencl/execution/image/Interp3DExecution.hpp +++ b/source/backend/opencl/execution/image/Interp3DExecution.hpp @@ -9,28 +9,20 @@ #ifndef Interp3DExecution_hpp #define Interp3DExecution_hpp -#include -#include -#include -#include "core/Execution.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "CommonExecution.hpp" namespace MNN { namespace OpenCL { -class Interp3DExecution : public Execution, public CommonExtension { +class Interp3DExecution : public CommonExecution { public: Interp3DExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend); virtual ~Interp3DExecution() = default; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: - cl::Kernel mKernel; std::vector mLWS{0, 0, 0, 0}; std::vector mGWS{0, 0, 0, 0}; uint32_t mMaxWorkGroupSize; diff --git a/source/backend/opencl/execution/image/InterpExecution.cpp b/source/backend/opencl/execution/image/InterpExecution.cpp index 3d84b195f..a408c180f 100644 --- a/source/backend/opencl/execution/image/InterpExecution.cpp +++ b/source/backend/opencl/execution/image/InterpExecution.cpp @@ -13,7 +13,9 @@ namespace MNN { namespace OpenCL { InterpExecution::InterpExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend) - : Execution(backend) { + : CommonExecution(backend, op) { + mUnits.resize(1); + auto &unit = mUnits[0]; mOpenCLBackend = static_cast(backend); auto runtime = mOpenCLBackend->getOpenCLRuntime(); auto interpParam = op->main_as_Interp(); @@ -25,22 +27,22 @@ InterpExecution::InterpExecution(const std::vector &inputs, const MNN: std::set buildOptions; std::string kernelName = "interp"; if (op->main_as_Interp()->resizeType() == 1) { - mKernel = runtime->buildKernel("nearest", kernelName, buildOptions); + unit.kernel = runtime->buildKernel("nearest", kernelName, buildOptions); }else if (op->main_as_Interp()->resizeType() == 4) { buildOptions.emplace("-DUSE_ROUND"); - mKernel = runtime->buildKernel("nearest", kernelName, buildOptions); + unit.kernel = runtime->buildKernel("nearest", kernelName, buildOptions); }else { - mKernel = runtime->buildKernel("interp", kernelName, buildOptions); + unit.kernel = runtime->buildKernel("interp", kernelName, buildOptions); } - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel )); } -ErrorCode InterpExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode InterpExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { Tensor *input = inputs[0]; Tensor *output = outputs[0]; auto runtime = ((OpenCLBackend *)backend())->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); + auto &unit = mUnits[0]; std::vector inputShape = tensorShapeFormat(input); std::vector outputShape = tensorShapeFormat(output); @@ -63,58 +65,29 @@ ErrorCode InterpExecution::onResize(const std::vector &inputs, const s uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGWS[0]); - ret |= mKernel.setArg(idx++, mGWS[1]); - ret |= mKernel.setArg(idx++, mGWS[2]); - ret |= mKernel.setArg(idx++, openCLImage(input)); - ret |= mKernel.setArg(idx++, openCLImage(output)); - ret |= mKernel.setArg(idx++, mCordTransform[2]); - ret |= mKernel.setArg(idx++, mCordTransform[0]); - ret |= mKernel.setArg(idx++, mCordTransform[3]); - ret |= mKernel.setArg(idx++, mCordTransform[1]); - ret |= mKernel.setArg(idx++, static_cast(inputHeight)); - ret |= mKernel.setArg(idx++, static_cast(inputWidth)); - ret |= mKernel.setArg(idx++, static_cast(outputHeight)); + ret |= unit.kernel->get().setArg(idx++, mGWS[0]); + ret |= unit.kernel->get().setArg(idx++, mGWS[1]); + ret |= unit.kernel->get().setArg(idx++, mGWS[2]); + ret |= unit.kernel->get().setArg(idx++, openCLImage(input)); + ret |= unit.kernel->get().setArg(idx++, openCLImage(output)); + ret |= unit.kernel->get().setArg(idx++, mCordTransform[2]); + ret |= unit.kernel->get().setArg(idx++, mCordTransform[0]); + ret |= unit.kernel->get().setArg(idx++, mCordTransform[3]); + ret |= unit.kernel->get().setArg(idx++, mCordTransform[1]); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputHeight)); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputWidth)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputHeight)); MNN_CHECK_CL_SUCCESS(ret, "setArg InterpExecution"); std::string name = "interp"; - mLWS = localWS3DDefault(mGWS, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), name, mKernel).first; - mOpenCLBackend->recordKernel3d(mKernel, mGWS, mLWS); - mOpenCLBackend->endRecord(mRecording); + mLWS = localWS3DDefault(mGWS, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), name, unit.kernel).first; + mOpenCLBackend->recordKernel3d(unit.kernel, mGWS, mLWS); + unit.globalWorkSize = {mGWS[0], mGWS[1], mGWS[2]}; + unit.localWorkSize = {mLWS[0], mLWS[1], mLWS[2]}; return NO_ERROR; } -ErrorCode InterpExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("Start InterpExecution onExecute... \n"); -#endif - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGWS, mLWS, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Interp", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End InterpExecution onExecute... \n"); -#endif - return NO_ERROR; - } - run3DKernelDefault(mKernel, mGWS, mLWS, mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end InterpExecution onExecute... \n"); -#endif - - return NO_ERROR; -} - class InterpCreator : public OpenCLBackend::Creator { public: virtual ~InterpCreator() = default; diff --git a/source/backend/opencl/execution/image/InterpExecution.hpp b/source/backend/opencl/execution/image/InterpExecution.hpp index 96aa33c30..01836209d 100644 --- a/source/backend/opencl/execution/image/InterpExecution.hpp +++ b/source/backend/opencl/execution/image/InterpExecution.hpp @@ -9,28 +9,20 @@ #ifndef InterpExecution_hpp #define InterpExecution_hpp -#include -#include -#include -#include "core/Execution.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "CommonExecution.hpp" namespace MNN { namespace OpenCL { -class InterpExecution : public Execution, public CommonExtension { +class InterpExecution : public CommonExecution { public: InterpExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend); virtual ~InterpExecution() = default; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: - cl::Kernel mKernel; std::vector mLWS{0, 0, 0, 0}; std::vector mGWS{0, 0, 0, 0}; uint32_t mMaxWorkGroupSize; diff --git a/source/backend/opencl/execution/image/LayerNormExecution.cpp b/source/backend/opencl/execution/image/LayerNormExecution.cpp index c09305497..8408165d8 100644 --- a/source/backend/opencl/execution/image/LayerNormExecution.cpp +++ b/source/backend/opencl/execution/image/LayerNormExecution.cpp @@ -13,16 +13,21 @@ namespace MNN { namespace OpenCL { LayerNormExecution::LayerNormExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend) - : Execution(backend) { + : CommonExecution(backend, op) { + mUnits.resize(1); + auto &unit = mUnits[0]; mOpenCLBackend = static_cast(backend); auto runtime = mOpenCLBackend->getOpenCLRuntime(); const auto* layer_norm_param = op->main_as_LayerNorm(); - axis_size = layer_norm_param->axis()->size(); + if (nullptr != layer_norm_param->axis()) { + axis_size = layer_norm_param->axis()->size(); + } epsilon_ = layer_norm_param->epsilon(); group_ = layer_norm_param->group(); + RMSNorm = layer_norm_param->useRMSNorm(); auto bufferUnitSize = runtime->isSupportedFP16() ? sizeof(half_float::half) : sizeof(float); - auto kernel = runtime->buildKernel("layernorm", "layernorm_w", {"-DLOCAL_SIZE=512"}); - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(kernel)); + unit.kernel = runtime->buildKernel("layernorm", "layernorm_w", {"-DLOCAL_SIZE=512"}); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); if(layer_norm_param->gamma() && layer_norm_param->beta()){ has_gamma_beta_ = true; @@ -85,11 +90,11 @@ int LayerNormExecution::getLocalSize(int size, int maxGroupSize){ return local_size; } -ErrorCode LayerNormExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode LayerNormExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { + auto &unit = mUnits[0]; Tensor *input = inputs[0]; Tensor *output = outputs[0]; auto runtime = ((OpenCLBackend *)backend())->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); auto MaxLocalSize = std::min(runtime->getMaxWorkItemSizes()[0], mMaxWorkGroupSize); std::vector inputShape = tensorShapeFormat(input); @@ -110,7 +115,12 @@ ErrorCode LayerNormExecution::onResize(const std::vector &inputs, cons inner_size *= inputs.at(0)->length(i); } + std::vector mLWS{0, 0, 0, 0}; + std::vector mGWS{0, 0, 0, 0}; std::set buildOptions; + if(RMSNorm){ + buildOptions.emplace("-DRMSNORM"); + } if(has_gamma_beta_){ buildOptions.emplace("-DGAMMA_BETA"); } @@ -119,7 +129,7 @@ ErrorCode LayerNormExecution::onResize(const std::vector &inputs, cons kernelName = "layernorm_w"; local_size = getLocalSize(inputWidth, MaxLocalSize); buildOptions.emplace("-DLOCAL_SIZE=" + std::to_string(local_size)); - mKernel = runtime->buildKernel("layernorm", kernelName, buildOptions); + unit.kernel = runtime->buildKernel("layernorm", kernelName, buildOptions); mGWS = {static_cast(local_size), static_cast(inputHeight * UP_DIV(inputChannels, 4)), @@ -128,7 +138,7 @@ ErrorCode LayerNormExecution::onResize(const std::vector &inputs, cons kernelName = "layernorm_hw"; local_size = getLocalSize(inputWidth * inputHeight, MaxLocalSize); buildOptions.emplace("-DLOCAL_SIZE=" + std::to_string(local_size)); - mKernel = runtime->buildKernel("layernorm", kernelName, buildOptions); + unit.kernel = runtime->buildKernel("layernorm", kernelName, buildOptions); mGWS = {static_cast(local_size), static_cast(UP_DIV(inputChannels, 4)), @@ -137,7 +147,7 @@ ErrorCode LayerNormExecution::onResize(const std::vector &inputs, cons kernelName = "layernorm_chw"; local_size = getLocalSize(inputWidth * inputHeight, MaxLocalSize); buildOptions.emplace("-DLOCAL_SIZE=" + std::to_string(local_size)); - mKernel = runtime->buildKernel("layernorm", kernelName, buildOptions); + unit.kernel = runtime->buildKernel("layernorm", kernelName, buildOptions); mGWS = {static_cast(local_size), static_cast(1), @@ -147,64 +157,34 @@ ErrorCode LayerNormExecution::onResize(const std::vector &inputs, cons uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGWS[0]); - ret |= mKernel.setArg(idx++, mGWS[1]); - ret |= mKernel.setArg(idx++, mGWS[2]); - ret |= mKernel.setArg(idx++, openCLImage(input)); - ret |= mKernel.setArg(idx++, openCLImage(output)); - ret |= mKernel.setArg(idx++, static_cast(inputWidth)); - ret |= mKernel.setArg(idx++, static_cast(inputHeight)); - ret |= mKernel.setArg(idx++, static_cast(inputChannels)); + ret |= unit.kernel->get().setArg(idx++, mGWS[0]); + ret |= unit.kernel->get().setArg(idx++, mGWS[1]); + ret |= unit.kernel->get().setArg(idx++, mGWS[2]); + ret |= unit.kernel->get().setArg(idx++, openCLImage(input)); + ret |= unit.kernel->get().setArg(idx++, openCLImage(output)); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputWidth)); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputHeight)); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputChannels)); if(has_gamma_beta_){ - ret |= mKernel.setArg(idx++, *mGammaBuffer.get()); - ret |= mKernel.setArg(idx++, *mBetaBuffer.get()); + ret |= unit.kernel->get().setArg(idx++, *mGammaBuffer.get()); + ret |= unit.kernel->get().setArg(idx++, *mBetaBuffer.get()); } - ret |= mKernel.setArg(idx++, epsilon_); + ret |= unit.kernel->get().setArg(idx++, epsilon_); MNN_CHECK_CL_SUCCESS(ret, "setArg LayerNormExecution"); - mOpenCLBackend->recordKernel3d(mKernel, mGWS, mLWS); - mOpenCLBackend->endRecord(mRecording); + mOpenCLBackend->recordKernel3d(unit.kernel, mGWS, mLWS); + unit.globalWorkSize = {mGWS[0], mGWS[1], mGWS[2]}; + unit.localWorkSize = {mLWS[0], mLWS[1], mLWS[2]}; return NO_ERROR; } -ErrorCode LayerNormExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("Start LayerNormExecution onExecute... \n"); -#endif - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGWS, mLWS, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"LayerNorm", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End LayerNormExecution onExecute... \n"); -#endif - return NO_ERROR; - } - run3DKernelDefault(mKernel, mGWS, mLWS, mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end LayerNormExecution onExecute... \n"); -#endif - - return NO_ERROR; -} - class LayerNormCreator : public OpenCLBackend::Creator { public: virtual ~LayerNormCreator() = default; virtual Execution *onCreate(const std::vector &inputs, const std::vector &outputs, const MNN::Op *op, Backend *backend) const override { const auto* layer_norm_param = op->main_as_LayerNorm(); - int axis_size = layer_norm_param->axis()->size(); int group = layer_norm_param->group(); if(group > 1){ return nullptr; diff --git a/source/backend/opencl/execution/image/LayerNormExecution.hpp b/source/backend/opencl/execution/image/LayerNormExecution.hpp index 3837666fe..edd96437b 100644 --- a/source/backend/opencl/execution/image/LayerNormExecution.hpp +++ b/source/backend/opencl/execution/image/LayerNormExecution.hpp @@ -9,34 +9,25 @@ #ifndef LayerNormExecution_hpp #define LayerNormExecution_hpp -#include -#include -#include -#include "core/Execution.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "CommonExecution.hpp" namespace MNN { namespace OpenCL { -class LayerNormExecution : public Execution, public CommonExtension { +class LayerNormExecution : public CommonExecution { public: LayerNormExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend); virtual ~LayerNormExecution() = default; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: int getLocalSize(int size, int maxGroupSize); - cl::Kernel mKernel; - std::vector mLWS{0, 0, 0, 0}; - std::vector mGWS{0, 0, 0, 0}; OpenCLBackend *mOpenCLBackend; int axis_size = 0; int group_ = 1; + bool RMSNorm = false; float epsilon_ = 0.001; std::shared_ptr mGammaBuffer; diff --git a/source/backend/opencl/execution/image/LoopExecution.cpp b/source/backend/opencl/execution/image/LoopExecution.cpp index ce6dc719b..2c290cad8 100644 --- a/source/backend/opencl/execution/image/LoopExecution.cpp +++ b/source/backend/opencl/execution/image/LoopExecution.cpp @@ -7,23 +7,22 @@ // #include "backend/opencl/execution/image/LoopExecution.hpp" -#include "core/Macro.h" #include "core/TensorUtils.hpp" namespace MNN { namespace OpenCL { -static void _TileTensor(Tensor *input, cl::Buffer *output, cl::Kernel& kernel, cl::NDRange &globalWorkSize, +static void _TileTensor(Tensor *input, cl::Buffer *output, std::shared_ptr& kernelW, cl::NDRange &globalWorkSize, cl::NDRange &localWorkSize, const int Width, const int Height, const int Channel, const int Batch, OpenCLBackend *bn, std::set buildOptions) { if (TensorUtils::getDescribe(input)->dimensionFormat == MNN::MNN_DATA_FORMAT_NHWC){ buildOptions.emplace("-DMNN_NHWC"); } - kernel = bn->getOpenCLRuntime()->buildKernel("loop", "tile", buildOptions); - uint32_t mMaxWorkGroupSize = static_cast(bn->getOpenCLRuntime()->getMaxWorkGroupSize(kernel)); + kernelW = bn->getOpenCLRuntime()->buildKernel("loop", "tile", buildOptions, input, input); + uint32_t mMaxWorkGroupSize = static_cast(bn->getOpenCLRuntime()->getMaxWorkGroupSize(kernelW)); std::vector mGlobalWorkSize = {(uint32_t)(Width * Height), (uint32_t)(UP_DIV(Channel, 4)), (uint32_t)(Batch)}; - + auto kernel = kernelW->get(); uint32_t index = 0; cl_int ret = CL_SUCCESS; ret |= kernel.setArg(index++, mGlobalWorkSize[0]); @@ -36,24 +35,24 @@ static void _TileTensor(Tensor *input, cl::Buffer *output, cl::Kernel& kernel, c ret |= kernel.setArg(index++, Channel); MNN_CHECK_CL_SUCCESS(ret, "setArg Loop _PackTensor"); - std::vector mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, bn->getOpenCLRuntime(), "tile", kernel).first; + std::vector mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, bn->getOpenCLRuntime(), "tile", kernelW).first; globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1], mLocalWorkSize[2]}; - bn->recordKernel3d(kernel, mGlobalWorkSize, mLocalWorkSize); + bn->recordKernel3d(kernelW, mGlobalWorkSize, mLocalWorkSize); } -static void _PackTensor(cl::Buffer *input, Tensor *output, cl::Kernel& kernel, cl::NDRange &globalWorkSize, +static void _PackTensor(cl::Buffer *input, Tensor *output, std::shared_ptr& kernelW, cl::NDRange &globalWorkSize, cl::NDRange &localWorkSize, const int Width, const int Height, const int Channel, const int Batch, OpenCLBackend *bn, std::set buildOptions) { if (TensorUtils::getDescribe(output)->dimensionFormat == MNN::MNN_DATA_FORMAT_NHWC){ buildOptions.emplace("-DMNN_NHWC"); } - kernel = bn->getOpenCLRuntime()->buildKernel("loop", "pack", buildOptions); - uint32_t mMaxWorkGroupSize = static_cast(bn->getOpenCLRuntime()->getMaxWorkGroupSize(kernel)); + kernelW = bn->getOpenCLRuntime()->buildKernel("loop", "pack", buildOptions, output, output); + uint32_t mMaxWorkGroupSize = static_cast(bn->getOpenCLRuntime()->getMaxWorkGroupSize(kernelW)); std::vector mGlobalWorkSize = {(uint32_t)(Width * Height), (uint32_t)(UP_DIV(Channel, 4)), (uint32_t)(Batch)}; - + auto kernel = kernelW->get(); uint32_t index = 0; cl_int ret = CL_SUCCESS; ret |= kernel.setArg(index++, mGlobalWorkSize[0]); @@ -66,11 +65,11 @@ static void _PackTensor(cl::Buffer *input, Tensor *output, cl::Kernel& kernel, c ret |= kernel.setArg(index++, Channel); MNN_CHECK_CL_SUCCESS(ret, "setArg Loop _PackTensor"); - std::vector mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, bn->getOpenCLRuntime(), "pack", kernel).first; + std::vector mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, bn->getOpenCLRuntime(), "pack", kernelW).first; globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1], mLocalWorkSize[2]}; - bn->recordKernel3d(kernel, mGlobalWorkSize, mLocalWorkSize); + bn->recordKernel3d(kernelW, mGlobalWorkSize, mLocalWorkSize); } static void _setTensorStack(std::vector &result, const std::vector &inputs, @@ -90,13 +89,11 @@ static void _setTensorStack(std::vector &result, const std::vectortensorNumber()); - auto cmd = loop->commands()->GetAs(0); } - ErrorCode LoopGatherExecution::onResize(const std::vector &inputs, const std::vector &outputs) { + ErrorCode LoopGatherExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { auto cmd = mLoop->commands()->GetAs(0); OpenCLBackend *mOpenCLBackend = (OpenCLBackend *)backend(); auto runTime = mOpenCLBackend->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); auto bufferPool = mOpenCLBackend->getBufferPool(); auto bufferUnitSize = runTime->isSupportedFP16() ? sizeof(half_float::half) : sizeof(float); _setTensorStack(mTensors, inputs, outputs, mLoop); @@ -107,6 +104,7 @@ static void _setTensorStack(std::vector &result, const std::vectorsize()->data()[1]; int z = cmd->size()->data()[2]; int n = mLoop->loopNumber(); + int inputSize = mTensors[cmd->indexes()->data()[1]]->elementSize(); auto srcStride = cmd->view()->GetAs(1)->stride()->data(); auto dstStride = cmd->view()->GetAs(0)->stride()->data(); @@ -157,29 +155,30 @@ static void _setTensorStack(std::vector &result, const std::vectorbuildKernel("loop", KernelName, mBuildOptions); + unit.kernel = runTime->buildKernel("loop", KernelName, mBuildOptions, mTensors[cmd->indexes()->data()[1]], mTensors[cmd->indexes()->data()[0]]); uint32_t mMaxWorkGroupSize = static_cast(runTime->getMaxWorkGroupSize(unit.kernel)); std::vector mGlobalWorkSize = {(uint32_t)(x * y), (uint32_t)(z), (uint32_t)(n)}; uint32_t index = 0; cl_int ret = CL_SUCCESS; - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[0]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[1]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[2]); - ret |= unit.kernel.setArg(index++, *mTmpBuffers[0]); - ret |= unit.kernel.setArg(index++, *mTmpBuffers[1]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(index++, *mTmpBuffers[0]); + ret |= unit.kernel->get().setArg(index++, *mTmpBuffers[1]); for (int i = 0; i < cmd->iterIndexes()->size(); ++i) { if (mIter[i] >= 0) { - ret |= unit.kernel.setArg(index++, *mOffsetBuffers[offset_index++]); + ret |= unit.kernel->get().setArg(index++, *mOffsetBuffers[offset_index++]); } else { - ret |= unit.kernel.setArg(index++, *mTmpBuffers[0]); + ret |= unit.kernel->get().setArg(index++, *mTmpBuffers[0]); } } - ret |= unit.kernel.setArg(index++, x); - ret |= unit.kernel.setArg(index++, sizeof(mStride_src), mStride_src); - ret |= unit.kernel.setArg(index++, sizeof(mStride_dst), mStride_dst); - ret |= unit.kernel.setArg(index++, sizeof(mStep), mStep); - ret |= unit.kernel.setArg(index++, sizeof(mIter), mIter); + ret |= unit.kernel->get().setArg(index++, x); + ret |= unit.kernel->get().setArg(index++, sizeof(mStride_src), mStride_src); + ret |= unit.kernel->get().setArg(index++, sizeof(mStride_dst), mStride_dst); + ret |= unit.kernel->get().setArg(index++, sizeof(mStep), mStep); + ret |= unit.kernel->get().setArg(index++, sizeof(mIter), mIter); + ret |= unit.kernel->get().setArg(index++, inputSize); MNN_CHECK_CL_SUCCESS(ret, "setArg LoopGatherExecution"); std::vector mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, runTime, KernelName, unit.kernel).first; @@ -209,7 +208,6 @@ static void _setTensorStack(std::vector &result, const std::vectorrecycle(mOffsetBuffers[i]); } - mOpenCLBackend->endRecord(mRecording); return NO_ERROR; } @@ -219,16 +217,14 @@ LoopBatchMatMulExecution::LoopBatchMatMulExecution(const LoopParam *loop, const : CommonExecution(bn, op) { mLoop = loop; mTensors.resize(mLoop->tensorNumber()); - auto cmd = loop->commands()->GetAs(0); +} +ErrorCode LoopBatchMatMulExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { + auto cmd = mLoop->commands()->GetAs(0); mHasBias = cmd->indexes()->size() > 3; mTransposeA = cmd->op()->main_as_MatMul()->transposeA(); mTransposeB = cmd->op()->main_as_MatMul()->transposeB(); -} -ErrorCode LoopBatchMatMulExecution::onResize(const std::vector &inputs, const std::vector &outputs) { - auto cmd = mLoop->commands()->GetAs(0); OpenCLBackend *mOpenCLBackend = (OpenCLBackend *)backend(); auto runTime = mOpenCLBackend->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); auto bufferPool = mOpenCLBackend->getBufferPool(); auto bufferUnitSize = runTime->isSupportedFP16() ? sizeof(half_float::half) : sizeof(float); _setTensorStack(mTensors, inputs, outputs, mLoop); @@ -289,44 +285,45 @@ ErrorCode LoopBatchMatMulExecution::onResize(const std::vector &inputs Unit unit; std::string KernelName = "batch_matmul"; + std::set buildOptions = mBuildOptions; if (mHasBias) { - mBuildOptions.emplace("-DBIAS"); + buildOptions.emplace("-DBIAS"); } if (mTransposeA) { - mBuildOptions.emplace("-DTRANSPOSE_A"); + buildOptions.emplace("-DTRANSPOSE_A"); } if (mTransposeB) { - mBuildOptions.emplace("-DTRANSPOSE_B"); + buildOptions.emplace("-DTRANSPOSE_B"); } - mBuildOptions.emplace("-DH_LEAVES=" + std::to_string(h % 4)); - unit.kernel = runTime->buildKernel("loop", KernelName, mBuildOptions); + buildOptions.emplace("-DH_LEAVES=" + std::to_string(h % 4)); + unit.kernel = runTime->buildKernel("loop", KernelName, buildOptions, mTensors[cmd->indexes()->data()[1]], mTensors[cmd->indexes()->data()[0]]); uint32_t mMaxWorkGroupSize = static_cast(runTime->getMaxWorkGroupSize(unit.kernel)); std::vector mGlobalWorkSize = {(uint32_t)(UP_DIV(h, 4)), (uint32_t)(UP_DIV(e, 4)),(uint32_t)(n)}; uint32_t index = 0; cl_int ret = CL_SUCCESS; - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[0]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[1]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[2]); - ret |= unit.kernel.setArg(index++, *mTmpBuffers[0]); - ret |= unit.kernel.setArg(index++, *mTmpBuffers[1]); - ret |= unit.kernel.setArg(index++, *mTmpBuffers[2]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(index++, *mTmpBuffers[0]); + ret |= unit.kernel->get().setArg(index++, *mTmpBuffers[1]); + ret |= unit.kernel->get().setArg(index++, *mTmpBuffers[2]); if (mHasBias) { - ret |= unit.kernel.setArg(index++, *mTmpBuffers[3]); + ret |= unit.kernel->get().setArg(index++, *mTmpBuffers[3]); } for (int i = 0; i < cmd->iterIndexes()->size(); ++i) { if (mIter[i] >= 0) { - ret |= unit.kernel.setArg(index++, *mOffsetBuffers[offset_index++]); + ret |= unit.kernel->get().setArg(index++, *mOffsetBuffers[offset_index++]); } else { - ret |= unit.kernel.setArg(index++, *mTmpBuffers[0]); + ret |= unit.kernel->get().setArg(index++, *mTmpBuffers[0]); } } - ret |= unit.kernel.setArg(index++, e); - ret |= unit.kernel.setArg(index++, l); - ret |= unit.kernel.setArg(index++, h); - ret |= unit.kernel.setArg(index++, sizeof(mOffset), mOffset); - ret |= unit.kernel.setArg(index++, sizeof(mIter), mIter); - ret |= unit.kernel.setArg(index++, sizeof(mStep), mStep); + ret |= unit.kernel->get().setArg(index++, e); + ret |= unit.kernel->get().setArg(index++, l); + ret |= unit.kernel->get().setArg(index++, h); + ret |= unit.kernel->get().setArg(index++, sizeof(mOffset), mOffset); + ret |= unit.kernel->get().setArg(index++, sizeof(mIter), mIter); + ret |= unit.kernel->get().setArg(index++, sizeof(mStep), mStep); MNN_CHECK_CL_SUCCESS(ret, "setArg LoopBatchMatMulExecution"); std::vector mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, runTime, KernelName, unit.kernel).first; @@ -356,7 +353,6 @@ ErrorCode LoopBatchMatMulExecution::onResize(const std::vector &inputs for (int i = 0; i < mOffsetBuffers.size(); ++i) { bufferPool->recycle(mOffsetBuffers[i]); } - mOpenCLBackend->endRecord(mRecording); return NO_ERROR; } @@ -365,14 +361,12 @@ LoopBinaryExecution::LoopBinaryExecution(const LoopParam *loop, const std::strin : CommonExecution(bn, op) { mLoop = loop; mTensors.resize(mLoop->tensorNumber()); - auto cmd = loop->commands()->GetAs(0); mBuildOptions.emplace("-DLOOP_BINARY_OPERATOR=" + compute); } -ErrorCode LoopBinaryExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode LoopBinaryExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { auto cmd = mLoop->commands()->GetAs(0); OpenCLBackend *mOpenCLBackend = (OpenCLBackend *)backend(); auto runTime = mOpenCLBackend->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); _setTensorStack(mTensors, inputs, outputs, mLoop); mUnits.clear(); Unit unit; @@ -472,28 +466,28 @@ ErrorCode LoopBinaryExecution::onResize(const std::vector &inputs, con const int ChannelBlock = UP_DIV(Channel, 4); auto BuildOptions = mBuildOptions; std::string KernelName = "broadcast_binary"; - unit.kernel = runTime->buildKernel("loop", KernelName, BuildOptions); + unit.kernel = runTime->buildKernel("loop", KernelName, BuildOptions, input0, output); uint32_t mMaxWorkGroupSize = static_cast(runTime->getMaxWorkGroupSize(unit.kernel)); std::vector mGlobalWorkSize = {(uint32_t)(Width), (uint32_t)(Height), (uint32_t)(Batch * ChannelBlock)}; uint32_t index = 0; cl_int ret = CL_SUCCESS; - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[0]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[1]); - ret |= unit.kernel.setArg(index++, mGlobalWorkSize[2]); - ret |= unit.kernel.setArg(index++, openCLImage(output)); - ret |= unit.kernel.setArg(index++, openCLImage(input0)); - ret |= unit.kernel.setArg(index++, openCLImage(input1)); - ret |= unit.kernel.setArg(index++, sizeof(input0Shape), input0Shape); - ret |= unit.kernel.setArg(index++, sizeof(Input0Size), Input0Size); - ret |= unit.kernel.setArg(index++, sizeof(input1Shape), input1Shape); - ret |= unit.kernel.setArg(index++, sizeof(Input1Size), Input1Size); - ret |= unit.kernel.setArg(index++, sizeof(outputShape), outputShape); - ret |= unit.kernel.setArg(index++, Width); - ret |= unit.kernel.setArg(index++, Height); - ret |= unit.kernel.setArg(index++, Channel); - ret |= unit.kernel.setArg(index++, ChannelBlock); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(index++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(index++, openCLImage(output)); + ret |= unit.kernel->get().setArg(index++, openCLImage(input0)); + ret |= unit.kernel->get().setArg(index++, openCLImage(input1)); + ret |= unit.kernel->get().setArg(index++, sizeof(input0Shape), input0Shape); + ret |= unit.kernel->get().setArg(index++, sizeof(Input0Size), Input0Size); + ret |= unit.kernel->get().setArg(index++, sizeof(input1Shape), input1Shape); + ret |= unit.kernel->get().setArg(index++, sizeof(Input1Size), Input1Size); + ret |= unit.kernel->get().setArg(index++, sizeof(outputShape), outputShape); + ret |= unit.kernel->get().setArg(index++, Width); + ret |= unit.kernel->get().setArg(index++, Height); + ret |= unit.kernel->get().setArg(index++, Channel); + ret |= unit.kernel->get().setArg(index++, ChannelBlock); MNN_CHECK_CL_SUCCESS(ret, "setArg LoopBinaryExecution"); std::vector mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, runTime, KernelName, unit.kernel).first; @@ -503,7 +497,6 @@ ErrorCode LoopBinaryExecution::onResize(const std::vector &inputs, con mOpenCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); mUnits.emplace_back(unit); - mOpenCLBackend->endRecord(mRecording); return NO_ERROR; } @@ -539,7 +532,7 @@ class LoopCreator : public OpenCLBackend::Creator { case BinaryOpOperation_SUB: return new LoopBinaryExecution(loop, "in0-in1", op, backend); case BinaryOpOperation_REALDIV: - return new LoopBinaryExecution(loop, "sign(in1)*in0/(fabs(in1)>(FLOAT4)((FLOAT)0.0000001)?fabs(in1):(FLOAT4)((FLOAT)0.0000001))", op, backend); + return new LoopBinaryExecution(loop, "sign(in1)*in0/(fabs(in1)>(float4)((float)0.0000001)?fabs(in1):(float4)((float)0.0000001))", op, backend); case BinaryOpOperation_MINIMUM: return new LoopBinaryExecution(loop, "in0>in1?in1:in0", op, backend); case BinaryOpOperation_MAXIMUM: @@ -555,19 +548,19 @@ class LoopCreator : public OpenCLBackend::Creator { case BinaryOpOperation_EQUAL: return new LoopBinaryExecution(loop, "convert_float4(-isequal(in0,in1))", op, backend); case BinaryOpOperation_FLOORDIV: - return new LoopBinaryExecution(loop, "floor(sign(in1)*in0/(fabs(in1)>(FLOAT4)((FLOAT)0.0000001)?fabs(in1):(FLOAT4)((FLOAT)0.0000001)))", op, backend); + return new LoopBinaryExecution(loop, "floor(sign(in1)*in0/(fabs(in1)>(float4)((float)0.0000001)?fabs(in1):(float4)((float)0.0000001)))", op, backend); case BinaryOpOperation_FLOORMOD: - return new LoopBinaryExecution(loop, "in0-floor(sign(in1)*in0/(fabs(in1)>(FLOAT4)((FLOAT)0.0000001)?fabs(in1):(FLOAT4)((FLOAT)0.0000001)))*in1", op, backend); + return new LoopBinaryExecution(loop, "in0-floor(sign(in1)*in0/(fabs(in1)>(float4)((float)0.0000001)?fabs(in1):(float4)((float)0.0000001)))*in1", op, backend); case BinaryOpOperation_POW: return new LoopBinaryExecution(loop, "pow(in0,in1)", op, backend); case BinaryOpOperation_SquaredDifference: return new LoopBinaryExecution(loop, "(in0-in1)*(in0-in1)", op, backend); case BinaryOpOperation_ATAN2: - return new LoopBinaryExecution(loop, "(in1==(FLOAT4)0?(sign(in0)*(FLOAT4)(PI/2)):(atan(in0/in1)+(in1>(FLOAT4)0?(FLOAT4)0:sign(in0)*(FLOAT4)PI)))", op, backend); + return new LoopBinaryExecution(loop, "(in1==(float4)0?(sign(in0)*(float4)(PI/2)):(atan(in0/in1)+(in1>(float4)0?(float4)0:sign(in0)*(float4)PI)))", op, backend); case BinaryOpOperation_NOTEQUAL: return new LoopBinaryExecution(loop, "convert_float4(-isnotequal(in0,in1))", op, backend); case BinaryOpOperation_MOD: - return new LoopBinaryExecution(loop, "in0-floor(sign(in1)*in0/(fabs(in1)>(FLOAT4)((FLOAT)0.0000001)?fabs(in1):(FLOAT4)((FLOAT)0.0000001)))*in1", op, backend); + return new LoopBinaryExecution(loop, "in0-floor(sign(in1)*in0/(fabs(in1)>(float4)((float)0.0000001)?fabs(in1):(float4)((float)0.0000001)))*in1", op, backend); default: break; } diff --git a/source/backend/opencl/execution/image/LoopExecution.hpp b/source/backend/opencl/execution/image/LoopExecution.hpp index ae2476143..854908f88 100644 --- a/source/backend/opencl/execution/image/LoopExecution.hpp +++ b/source/backend/opencl/execution/image/LoopExecution.hpp @@ -10,7 +10,7 @@ #ifndef LoopExecution_hpp #define LoopExecution_hpp -#include "backend/opencl/execution/image/CommonExecution.hpp" +#include "CommonExecution.hpp" namespace MNN { namespace OpenCL { @@ -19,7 +19,7 @@ class LoopGatherExecution : public CommonExecution { public: LoopGatherExecution(const LoopParam *loop, const MNN::Op *op, Backend *bn); virtual ~LoopGatherExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: const LoopParam *mLoop; @@ -37,7 +37,7 @@ class LoopBatchMatMulExecution : public CommonExecution { public: LoopBatchMatMulExecution(const LoopParam *loop, const MNN::Op *op, Backend *bn); virtual ~LoopBatchMatMulExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: const LoopParam *mLoop; @@ -57,7 +57,7 @@ class LoopBinaryExecution : public CommonExecution { public: LoopBinaryExecution(const LoopParam *loop, const std::string &compute, const MNN::Op *op, Backend *bn); virtual ~LoopBinaryExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: const LoopParam *mLoop; diff --git a/source/backend/opencl/execution/image/MatmulExecution.cpp b/source/backend/opencl/execution/image/MatmulExecution.cpp index e2ee9cf8e..26ac0bcaf 100644 --- a/source/backend/opencl/execution/image/MatmulExecution.cpp +++ b/source/backend/opencl/execution/image/MatmulExecution.cpp @@ -12,39 +12,41 @@ namespace MNN { namespace OpenCL { MatMulExecution::MatMulExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend, - bool transposeA, bool transposeB) : Execution(backend) + bool transposeA, bool transposeB) : CommonExecution(backend, op) , mTransposeA(transposeA), mTransposeB(transposeB){ mOpenCLBackend = static_cast(backend); mAreadySetArg = false; } -ErrorCode MatMulExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode MatMulExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { + mUnits.resize(1); + auto &unit = mUnits[0]; auto runtime = mOpenCLBackend->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); - + Tensor *input0 = inputs[0]; Tensor *input1 = inputs[1]; Tensor *output = outputs[0]; - + std::vector input0Shape = tensorShapeFormat(input0); std::vector input1Shape = tensorShapeFormat(input1); std::vector outputShape = tensorShapeFormat(output); - if (mKernel.get() == nullptr) { - - std::string kernelName; - std::set buildOptions; - if(mTransposeA) { - kernelName = mTransposeB ? "matmul_transA_transB":"matmul_transA"; - } else { - kernelName = mTransposeB ? "matmul_transB":"matmul"; - } - - if(inputs.size() > 2) { - buildOptions.emplace("-DBIAS"); - } - mKernel = runtime->buildKernel("matmul", kernelName, buildOptions); - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + std::vector mGlobalWorkSize{1, 1}; + std::vector mLocalWorkSize{1, 1, 1, 1}; + + + std::string kernelName; + std::set buildOptions; + if(mTransposeA) { + kernelName = mTransposeB ? "matmul_transA_transB":"matmul_transA"; + } else { + kernelName = mTransposeB ? "matmul_transB":"matmul"; } + + if(inputs.size() > 2) { + buildOptions.emplace("-DBIAS"); + } + unit.kernel = runtime->buildKernel("matmul", kernelName, buildOptions); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); //处理二维矩阵相乘,N C相当于H W //二维矩阵相乘 @@ -59,17 +61,17 @@ ErrorCode MatMulExecution::onResize(const std::vector &inputs, const s mGlobalWorkSize = {static_cast(widthblocks), static_cast(heightblocks)}; cl_int ret = CL_SUCCESS; int idx = 0; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, openCLImage(input0)); - ret |= mKernel.setArg(idx++, openCLImage(input1)); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, openCLImage(input0)); + ret |= unit.kernel->get().setArg(idx++, openCLImage(input1)); if(inputs.size() > 2) { - ret |= mKernel.setArg(idx++, openCLImage(inputs[2])); + ret |= unit.kernel->get().setArg(idx++, openCLImage(inputs[2])); } - ret |= mKernel.setArg(idx++, openCLImage(output)); - ret |= mKernel.setArg(idx++, static_cast(outputChannel)); - ret |= mKernel.setArg(idx++, static_cast(outputChannelBlocks)); - ret |= mKernel.setArg(idx++, static_cast(height)); + ret |= unit.kernel->get().setArg(idx++, openCLImage(output)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputChannel)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputChannelBlocks)); + ret |= unit.kernel->get().setArg(idx++, static_cast(height)); MNN_CHECK_CL_SUCCESS(ret, "setArg MatMulExecution transposeA"); mLocalWorkSize = {mMaxWorkGroupSize / 64, 64, 0}; @@ -85,53 +87,24 @@ ErrorCode MatMulExecution::onResize(const std::vector &inputs, const s int idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, openCLImage(input0)); - ret |= mKernel.setArg(idx++, openCLImage(input1)); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, openCLImage(input0)); + ret |= unit.kernel->get().setArg(idx++, openCLImage(input1)); if(inputs.size() > 2) { - ret |= mKernel.setArg(idx++, openCLImage(inputs[2])); + ret |= unit.kernel->get().setArg(idx++, openCLImage(inputs[2])); } - ret |= mKernel.setArg(idx++, openCLImage(output)); - ret |= mKernel.setArg(idx++, static_cast(outputChannel)); - ret |= mKernel.setArg(idx++, static_cast(outputChannelBlocks)); + ret |= unit.kernel->get().setArg(idx++, openCLImage(output)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputChannel)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputChannelBlocks)); MNN_CHECK_CL_SUCCESS(ret, "setArg MatMulExecution transposeA"); mLocalWorkSize = {mMaxWorkGroupSize / 64, 64, 0}; } - mOpenCLBackend->recordKernel2d(mKernel, mGlobalWorkSize, mLocalWorkSize); - mOpenCLBackend->endRecord(mRecording); - return NO_ERROR; -} - -ErrorCode MatMulExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("Start MatMulExecution onExecute... \n"); -#endif - - auto runtime = mOpenCLBackend->getOpenCLRuntime(); - - #ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - runKernel2D(mKernel, mGlobalWorkSize, mLocalWorkSize, runtime, &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Matmul", event}); - #else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End MatMulExecution onExecute... \n"); -#endif - return NO_ERROR; - } - runKernel2D(mKernel, mGlobalWorkSize, mLocalWorkSize, runtime, nullptr); - #endif - -#ifdef LOG_VERBOSE - MNN_PRINT("End MatMulExecution onExecute... \n"); -#endif + mOpenCLBackend->recordKernel2d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1]}; return NO_ERROR; } diff --git a/source/backend/opencl/execution/image/MatmulExecution.hpp b/source/backend/opencl/execution/image/MatmulExecution.hpp index 5f386c375..4f625ac8a 100644 --- a/source/backend/opencl/execution/image/MatmulExecution.hpp +++ b/source/backend/opencl/execution/image/MatmulExecution.hpp @@ -9,33 +9,26 @@ #ifndef MatMulExecution_hpp #define MatMulExecution_hpp -#include "core/Execution.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "CommonExecution.hpp" namespace MNN { namespace OpenCL { -class MatMulExecution : public Execution, public CommonExtension { +class MatMulExecution : public CommonExecution { public: MatMulExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend, bool transposeA, bool transposeB); virtual ~MatMulExecution() = default; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: bool mTransposeA; bool mTransposeB; - cl::Kernel mKernel; uint32_t mMaxWorkGroupSize; std::vector mInput0Shape; std::vector mInput1Shape; bool mAreadySetArg; OpenCLBackend *mOpenCLBackend; - std::vector mGlobalWorkSize{1, 1}; - std::vector mLocalWorkSize{1, 1, 1, 1}; }; } // namespace OpenCL diff --git a/source/backend/opencl/execution/image/MultiInputDWConvExecution.cpp b/source/backend/opencl/execution/image/MultiInputDWConvExecution.cpp index 63a9b5b84..f999cf11d 100644 --- a/source/backend/opencl/execution/image/MultiInputDWConvExecution.cpp +++ b/source/backend/opencl/execution/image/MultiInputDWConvExecution.cpp @@ -31,14 +31,13 @@ MultiInputDWConvExecution::~MultiInputDWConvExecution() { // do nothing } -ErrorCode MultiInputDWConvExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode MultiInputDWConvExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { mUnits.clear(); mUnits.resize(3); auto originLayout = TensorUtils::getDescribe(inputs[1])->dimensionFormat; auto openclBackend = static_cast(backend()); auto runtime = openclBackend->getOpenCLRuntime(); - openclBackend->startRecord(mRecording); auto inputShape = tensorShapeFormat(inputs[0]); auto outputShape = tensorShapeFormat(outputs[0]); @@ -82,7 +81,8 @@ ErrorCode MultiInputDWConvExecution::onResize(const std::vector &input auto shape = tensorShapeFormat(inputs[1]); std::vector gws = {static_cast(shape[2] * UP_DIV(shape[3], 4)), static_cast(shape[0] * shape[1])}; - cl::Kernel kernel = runtime->buildKernel("buffer_to_image", kernelName, {}); + auto kernelW = runtime->buildKernel("buffer_to_image", kernelName, {}, inputs[1], inputs[1]); + auto kernel = kernelW->get(); cl_int ret = CL_SUCCESS; ret |= kernel.setArg(0, gws[0]); ret |= kernel.setArg(1, gws[1]); @@ -93,13 +93,13 @@ ErrorCode MultiInputDWConvExecution::onResize(const std::vector &input ret |= kernel.setArg(6, openCLImage(inputs[1])); MNN_CHECK_CL_SUCCESS(ret, "setArg MultiInputDWConvExecution transform input"); - const uint32_t maxWorkGroupSize = runtime->getMaxWorkGroupSize(kernel); + const uint32_t maxWorkGroupSize = runtime->getMaxWorkGroupSize(kernelW); std::vector lws = {16, std::max((uint32_t)1, maxWorkGroupSize / 16)}; for (size_t i = 0; i < lws.size(); ++i) { gws[i] = ROUND_UP(gws[i], lws[i]); } - mUnits[0].kernel = kernel; + mUnits[0].kernel = kernelW; mUnits[0].localWorkSize = {lws[0], lws[1]}; mUnits[0].globalWorkSize = {gws[0], gws[1]}; openclBackend->recordKernel2d(mUnits[0].kernel, gws, lws); @@ -125,7 +125,8 @@ ErrorCode MultiInputDWConvExecution::onResize(const std::vector &input std::set buildOptions; - cl::Kernel kernel = runtime->buildKernel("buffer_to_image", kernelName, buildOptions); + auto kernelW = runtime->buildKernel("buffer_to_image", kernelName, buildOptions, buffer, image); + auto kernel = kernelW->get(); uint32_t idx = 0; cl_int ret = CL_SUCCESS; @@ -141,13 +142,13 @@ ErrorCode MultiInputDWConvExecution::onResize(const std::vector &input MNN_CHECK_CL_SUCCESS(ret, "setArg MultiInputDWConvExecution transform kernel"); - const uint32_t maxWorkGroupSize = runtime->getMaxWorkGroupSize(kernel); + const uint32_t maxWorkGroupSize = runtime->getMaxWorkGroupSize(kernelW); std::vector lws = {16, std::max((uint32_t)1, maxWorkGroupSize / 16)}; for (size_t i = 0; i < lws.size(); ++i) { gws[i] = ROUND_UP(gws[i], lws[i]); } - mUnits[1].kernel = kernel; + mUnits[1].kernel = kernelW; mUnits[1].localWorkSize = {lws[0], lws[1]}; mUnits[1].globalWorkSize = {gws[0], gws[1]}; openclBackend->recordKernel2d(mUnits[1].kernel, {gws[0], gws[1]}, {lws[0], lws[1]}); @@ -196,7 +197,8 @@ ErrorCode MultiInputDWConvExecution::onResize(const std::vector &input buildOptions.emplace("-DNO_BIAS"); } - cl::Kernel kernel = runtime->buildKernel("depthwise_conv2d", kernelName, buildOptions); + auto kernelW = runtime->buildKernel("depthwise_conv2d", kernelName, buildOptions); + auto kernel = kernelW->get(); cl_int ret = CL_SUCCESS; ret |= kernel.setArg(idx++, gws[0]); ret |= kernel.setArg(idx++, gws[1]); @@ -217,13 +219,12 @@ ErrorCode MultiInputDWConvExecution::onResize(const std::vector &input } MNN_CHECK_CL_SUCCESS(ret, "setArg MultiInputDWConvExecution"); - mUnits[2].kernel = kernel; + mUnits[2].kernel = kernelW; mUnits[2].localWorkSize = {1, 1}; mUnits[2].globalWorkSize = {gws[0], gws[1]}; openclBackend->recordKernel2d(mUnits[2].kernel, gws, {1, 1}); } - openclBackend->endRecord(mRecording); return NO_ERROR; } diff --git a/source/backend/opencl/execution/image/MultiInputDWConvExecution.hpp b/source/backend/opencl/execution/image/MultiInputDWConvExecution.hpp index fb063f17d..3597387f8 100644 --- a/source/backend/opencl/execution/image/MultiInputDWConvExecution.hpp +++ b/source/backend/opencl/execution/image/MultiInputDWConvExecution.hpp @@ -9,7 +9,7 @@ #ifndef MultiInputDWConvExecution_hpp #define MultiInputDWConvExecution_hpp -#include "backend/opencl/execution/image/CommonExecution.hpp" +#include "CommonExecution.hpp" namespace MNN { namespace OpenCL { @@ -19,7 +19,7 @@ class MultiInputDWConvExecution : public CommonExecution { MultiInputDWConvExecution(const MNN::Op *op, Backend *backend); virtual ~MultiInputDWConvExecution(); - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: PadMode mPadMode; diff --git a/source/backend/opencl/execution/image/MultiInputDWDeconvExecution.cpp b/source/backend/opencl/execution/image/MultiInputDWDeconvExecution.cpp index d6468ab51..af9703bb3 100644 --- a/source/backend/opencl/execution/image/MultiInputDWDeconvExecution.cpp +++ b/source/backend/opencl/execution/image/MultiInputDWDeconvExecution.cpp @@ -36,14 +36,13 @@ MultiInputDWDeconvExecution::~MultiInputDWDeconvExecution() { // do nothing } -ErrorCode MultiInputDWDeconvExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode MultiInputDWDeconvExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { mUnits.clear(); mUnits.resize(4); auto originLayout = TensorUtils::getDescribe(inputs[1])->dimensionFormat; auto openclBackend = static_cast(backend()); auto runtime = openclBackend->getOpenCLRuntime(); - openclBackend->startRecord(mRecording); auto inputShape = tensorShapeFormat(inputs[0]); auto outputShape = tensorShapeFormat(outputs[0]); @@ -86,7 +85,8 @@ ErrorCode MultiInputDWDeconvExecution::onResize(const std::vector &inp auto shape = tensorShapeFormat(inputs[1]); std::vector gws = {static_cast(shape[2] * UP_DIV(shape[3], 4)), static_cast(shape[0] * shape[1])}; - cl::Kernel kernel = runtime->buildKernel("buffer_to_image", kernelName, {}); + auto kernelW = runtime->buildKernel("buffer_to_image", kernelName, {}, inputs[1], inputs[1]); + auto kernel = kernelW->get(); cl_int ret = CL_SUCCESS; ret |= kernel.setArg(0, gws[0]); ret |= kernel.setArg(1, gws[1]); @@ -97,13 +97,13 @@ ErrorCode MultiInputDWDeconvExecution::onResize(const std::vector &inp ret |= kernel.setArg(6, openCLImage(inputs[1])); MNN_CHECK_CL_SUCCESS(ret, "setArg MultiInputDWDeconvExecution transform input"); - const uint32_t maxWorkGroupSize = runtime->getMaxWorkGroupSize(kernel); + const uint32_t maxWorkGroupSize = runtime->getMaxWorkGroupSize(kernelW); std::vector lws = {16, std::max((uint32_t)1, maxWorkGroupSize / 16)}; for (size_t i = 0; i < lws.size(); ++i) { gws[i] = ROUND_UP(gws[i], lws[i]); } - mUnits[0].kernel = kernel; + mUnits[0].kernel = kernelW; mUnits[0].localWorkSize = {lws[0], lws[1]}; mUnits[0].globalWorkSize = {gws[0], gws[1]}; openclBackend->recordKernel2d(mUnits[0].kernel, gws, lws); @@ -113,7 +113,8 @@ ErrorCode MultiInputDWDeconvExecution::onResize(const std::vector &inp { auto shape = tensorShapeFormat(inputs[1]); - cl::Kernel kernel = runtime->buildKernel("deconv_2d", "iohw2oihw", {}); + auto kernelW = runtime->buildKernel("deconv_2d", "iohw2oihw", {}); + auto kernel = kernelW->get(); cl_int ret = CL_SUCCESS; ret |= kernel.setArg(0, *rawBufferPtr); ret |= kernel.setArg(1, *bufferPtr); @@ -122,7 +123,7 @@ ErrorCode MultiInputDWDeconvExecution::onResize(const std::vector &inp ret |= kernel.setArg(4, shape[0]); MNN_CHECK_CL_SUCCESS(ret, "setArg MultiInputDWDeconvExecution transform kernel"); - mUnits[1].kernel = kernel; + mUnits[1].kernel = kernelW; mUnits[1].localWorkSize = cl::NullRange; mUnits[1].globalWorkSize = { static_cast(shape[3]), @@ -150,9 +151,9 @@ ErrorCode MultiInputDWDeconvExecution::onResize(const std::vector &inp std::string kernelName = "dw_filter_buffer_to_image"; - std::set buildOptions; - cl::Kernel kernel = runtime->buildKernel("buffer_to_image", kernelName, buildOptions); + auto kernelW = runtime->buildKernel("buffer_to_image", kernelName, buildOptions, buffer, image); + auto kernel = kernelW->get(); uint32_t idx = 0; cl_int ret = CL_SUCCESS; @@ -168,13 +169,13 @@ ErrorCode MultiInputDWDeconvExecution::onResize(const std::vector &inp ret |= kernel.setArg(idx++, openCLImage(image)); - const uint32_t maxWorkGroupSize = runtime->getMaxWorkGroupSize(kernel); + const uint32_t maxWorkGroupSize = runtime->getMaxWorkGroupSize(kernelW); std::vector lws = {16, std::max((uint32_t)1, maxWorkGroupSize / 16)}; for (size_t i = 0; i < lws.size(); ++i) { gws[i] = ROUND_UP(gws[i], lws[i]); } - mUnits[2].kernel = kernel; + mUnits[2].kernel = kernelW; mUnits[2].localWorkSize = {lws[0], lws[1]}; mUnits[2].globalWorkSize = {gws[0], gws[1]}; openclBackend->recordKernel2d(mUnits[2].kernel, {gws[0], gws[1]}, {lws[0], lws[1]}); @@ -230,7 +231,8 @@ ErrorCode MultiInputDWDeconvExecution::onResize(const std::vector &inp buildOptions.emplace("-DNO_BIAS"); } - auto kernel = runtime->buildKernel("depthwise_deconv2d", kernelName, buildOptions); + auto kernelW = runtime->buildKernel("depthwise_deconv2d", kernelName, buildOptions); + auto kernel = kernelW->get(); int index = 0; uint32_t idx = 0; @@ -255,19 +257,18 @@ ErrorCode MultiInputDWDeconvExecution::onResize(const std::vector &inp ret |= kernel.setArg(idx++, static_cast(channelBlocks)); MNN_CHECK_CL_SUCCESS(ret, "setArg MultiInputDWDeconvExecution"); - const uint32_t maxWorkGroupSize = runtime->getMaxWorkGroupSize(kernel); + const uint32_t maxWorkGroupSize = runtime->getMaxWorkGroupSize(kernelW); std::string name = "depthwiseDeconv"; - auto lws = localWS3DDefault(gws, maxWorkGroupSize, runtime, name, kernel).first; + auto lws = localWS3DDefault(gws, maxWorkGroupSize, runtime, name, kernelW).first; for (size_t i = 0; i < 3; ++i) { gws[i] = ROUND_UP(gws[i], std::max((uint32_t)1, lws[i])); } - mUnits[3].kernel = kernel; + mUnits[3].kernel = kernelW; mUnits[3].localWorkSize = {lws[0], lws[1], lws[2]}; mUnits[3].globalWorkSize = {gws[0], gws[1], gws[2]}; openclBackend->recordKernel3d(mUnits[3].kernel, gws, lws); } - openclBackend->endRecord(mRecording); return NO_ERROR; } diff --git a/source/backend/opencl/execution/image/MultiInputDWDeconvExecution.hpp b/source/backend/opencl/execution/image/MultiInputDWDeconvExecution.hpp index db8de7de0..e5d600693 100644 --- a/source/backend/opencl/execution/image/MultiInputDWDeconvExecution.hpp +++ b/source/backend/opencl/execution/image/MultiInputDWDeconvExecution.hpp @@ -9,7 +9,7 @@ #ifndef MultiInputDWDeconvExecution_hpp #define MultiInputDWDeconvExecution_hpp -#include "backend/opencl/execution/image/CommonExecution.hpp" +#include "CommonExecution.hpp" #include "backend/opencl/core/OpenCLRunningUtils.hpp" namespace MNN { @@ -20,7 +20,7 @@ class MultiInputDWDeconvExecution : public CommonExecution { MultiInputDWDeconvExecution(const MNN::Op *op, Backend *backend); virtual ~MultiInputDWDeconvExecution(); - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: std::vector mStrides; diff --git a/source/backend/opencl/execution/image/PoolExecution.cpp b/source/backend/opencl/execution/image/PoolExecution.cpp index 0f17a2ac6..a9a8c15d3 100644 --- a/source/backend/opencl/execution/image/PoolExecution.cpp +++ b/source/backend/opencl/execution/image/PoolExecution.cpp @@ -41,7 +41,9 @@ std::vector PoolExecution::poolLocalWS(const std::vector &gw } PoolExecution::PoolExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend) - : Execution(backend) { + : CommonExecution(backend, op) { + mUnits.resize(1); + auto &unit = mUnits[0]; mOpenCLBackend = static_cast(backend); mPoolParams = op->main_as_Pool(); mPoolType = mPoolParams->type(); @@ -54,8 +56,8 @@ PoolExecution::PoolExecution(const std::vector &inputs, const MNN::Op mPaddings[0] = mPoolParams->padY() * 2; mPaddings[1] = mPoolParams->padX() * 2; mPadType = mPoolParams->padType(); - auto kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("pooling", "global_pooling", {"-DLOCAL_SIZE=512"}); - mMaxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(kernel)); + unit.kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("pooling", "global_pooling", {"-DLOCAL_SIZE=512"}); + mMaxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(unit.kernel)); } int PoolExecution::getLocalSize(int size, int maxGroupSize){ @@ -66,11 +68,11 @@ int PoolExecution::getLocalSize(int size, int maxGroupSize){ return local_size; } -ErrorCode PoolExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode PoolExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { #ifdef LOG_VERBOSE MNN_PRINT("start PoolExecution onResize !\n"); #endif - mOpenCLBackend->startRecord(mRecording); + auto &unit = mUnits[0]; auto input = inputs[0]; auto output = outputs[0]; bool returnRedice = outputs.size() == 2; @@ -123,8 +125,8 @@ ErrorCode PoolExecution::onResize(const std::vector &inputs, const std if(returnRedice){ buildOptions.emplace("-DRETURN_REDICE"); } - mKernel = runtime->buildKernel("pooling", kernelName, buildOptions); - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + unit.kernel = runtime->buildKernel("pooling", kernelName, buildOptions); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); MNN_ASSERT(mDilations[0] == 1 && mDilations[1] == 1); @@ -140,6 +142,8 @@ ErrorCode PoolExecution::onResize(const std::vector &inputs, const std const int inputWidth = inputShape.at(2); int channelBlocks = (channels + 3) / 4; + std::vector mGlobalWorkSize{1, 1, 1}; + std::vector mLocalWorkSize{1, 1, 1, 1}; if (mPoolParams->isGlobal()) { mGlobalWorkSize = { static_cast(local_size), @@ -167,57 +171,28 @@ ErrorCode PoolExecution::onResize(const std::vector &inputs, const std uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[2]); - ret |= mKernel.setArg(idx++, openCLImage(input)); - ret |= mKernel.setArg(idx++, sizeof(inputImageShape), inputImageShape); - ret |= mKernel.setArg(idx++, static_cast(outputHeight)); - ret |= mKernel.setArg(idx++, sizeof(paddingShape), paddingShape); - ret |= mKernel.setArg(idx++, sizeof(strideShape), strideShape); - ret |= mKernel.setArg(idx++, sizeof(kernelShape), kernelShape); - ret |= mKernel.setArg(idx++, openCLImage(output)); - ret |= mKernel.setArg(idx++, openCLImage(redice)); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(idx++, openCLImage(input)); + ret |= unit.kernel->get().setArg(idx++, sizeof(inputImageShape), inputImageShape); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputHeight)); + ret |= unit.kernel->get().setArg(idx++, sizeof(paddingShape), paddingShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(strideShape), strideShape); + ret |= unit.kernel->get().setArg(idx++, sizeof(kernelShape), kernelShape); + ret |= unit.kernel->get().setArg(idx++, openCLImage(output)); + ret |= unit.kernel->get().setArg(idx++, openCLImage(redice)); MNN_CHECK_CL_SUCCESS(ret, "setArg PoolExecution"); - mOpenCLBackend->recordKernel3d(mKernel, mGlobalWorkSize, mLocalWorkSize); - mOpenCLBackend->endRecord(mRecording); + mOpenCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1], mLocalWorkSize[2]}; #ifdef LOG_VERBOSE MNN_PRINT("end PoolExecution onResize !\n"); #endif return NO_ERROR; } -ErrorCode PoolExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("start PoolExecution onExecute !\n"); -#endif - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Pooling", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End PoolExecution onExecute... \n"); -#endif - return NO_ERROR; - } - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end PoolExecution onExecute !\n"); -#endif - return NO_ERROR; -} - using PoolCreator = TypedCreator; REGISTER_OPENCL_OP_CREATOR(PoolCreator, OpType_Pooling, IMAGE); diff --git a/source/backend/opencl/execution/image/PoolExecution.hpp b/source/backend/opencl/execution/image/PoolExecution.hpp index b4048df8e..acb38ae1c 100644 --- a/source/backend/opencl/execution/image/PoolExecution.hpp +++ b/source/backend/opencl/execution/image/PoolExecution.hpp @@ -9,38 +9,28 @@ #ifndef PoolExecution_hpp #define PoolExecution_hpp -#include -#include -#include -#include "core/Execution.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "CommonExecution.hpp" namespace MNN { namespace OpenCL { -class PoolExecution : public Execution, public CommonExtension { +class PoolExecution : public CommonExecution { public: PoolExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend); virtual ~PoolExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; std::vector poolLocalWS(const std::vector &gws, const uint32_t maxWorkGroupSize); int getLocalSize(int size, int maxGroupSize); private: const Pool *mPoolParams; - std::vector mGlobalWorkSize{1, 1, 1}; - std::vector mLocalWorkSize{1, 1, 1, 1}; PoolType mPoolType; PoolPadType mPadType; std::vector mStrides{1, 1}; std::vector mKernels{1, 1}; std::vector mPaddings{0, 0}; std::vector mDilations{1, 1}; - cl::Kernel mKernel; uint32_t mMaxWorkGroupSize; OpenCLBackend *mOpenCLBackend; }; diff --git a/source/backend/opencl/execution/image/RangeExecution.cpp b/source/backend/opencl/execution/image/RangeExecution.cpp index d0aa5ce99..2f6f84cf0 100644 --- a/source/backend/opencl/execution/image/RangeExecution.cpp +++ b/source/backend/opencl/execution/image/RangeExecution.cpp @@ -14,16 +14,17 @@ namespace MNN { namespace OpenCL { -RangeExecution::RangeExecution(const std::string &compute, Backend* backend) : Execution(backend) { +RangeExecution::RangeExecution(const std::string &compute, const MNN::Op *op, Backend* backend) : CommonExecution(backend, op) { mBuildOptions.emplace(compute); // Do nothing } -ErrorCode RangeExecution::onResize(const std::vector& inputs, const std::vector& outputs) { +ErrorCode RangeExecution::onEncode(const std::vector& inputs, const std::vector& outputs) { + mUnits.resize(1); + auto &unit = mUnits[0]; auto openCLBackend = static_cast(backend()); auto runtime = openCLBackend->getOpenCLRuntime(); - openCLBackend->startRecord(mRecording); - mKernel = runtime->buildKernel("range", "range", mBuildOptions); - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + unit.kernel = runtime->buildKernel("range", "range", mBuildOptions, inputs[0], outputs[0]); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); std::vector outputShape = tensorShapeFormat(outputs[0]); @@ -32,7 +33,9 @@ ErrorCode RangeExecution::onResize(const std::vector& inputs, const std int outputWidth = outputShape.at(2); int channels = outputShape.at(3); int channelBlocks = (channels + 3) / 4; - + + std::vector mGlobalWorkSize = {1, 1, 1}; + std::vector mLocalSize = {1, 1, 1}; mGlobalWorkSize = { static_cast(outputWidth), static_cast(outputHeight), @@ -41,53 +44,23 @@ ErrorCode RangeExecution::onResize(const std::vector& inputs, const std uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[2]); - ret |= mKernel.setArg(idx++, openCLImage(inputs[0])); - ret |= mKernel.setArg(idx++, openCLImage(inputs[2])); - ret |= mKernel.setArg(idx++, openCLImage(outputs[0])); - ret |= mKernel.setArg(idx++, outputWidth); - ret |= mKernel.setArg(idx++, outputHeight); - ret |= mKernel.setArg(idx++, channels); - ret |= mKernel.setArg(idx++, channelBlocks); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(idx++, openCLImage(inputs[0])); + ret |= unit.kernel->get().setArg(idx++, openCLImage(inputs[2])); + ret |= unit.kernel->get().setArg(idx++, openCLImage(outputs[0])); + ret |= unit.kernel->get().setArg(idx++, outputWidth); + ret |= unit.kernel->get().setArg(idx++, outputHeight); + ret |= unit.kernel->get().setArg(idx++, channels); + ret |= unit.kernel->get().setArg(idx++, channelBlocks); MNN_CHECK_CL_SUCCESS(ret, "setArg RangeExecution"); std::string kernelName = "range"; - mLocalSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), kernelName, mKernel).first; - openCLBackend->recordKernel3d(mKernel, mGlobalWorkSize, mLocalSize); - openCLBackend->endRecord(mRecording); - return NO_ERROR; -} - -ErrorCode RangeExecution::onExecute(const std::vector& inputs, const std::vector& outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("start RangeBufExecution onExecute..."); -#endif - auto mOpenCLBackend = static_cast(backend()); - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalSize, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Range", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End RangeExecution onExecute... \n"); -#endif - return NO_ERROR; - } - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalSize, - mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end RangeBufExecution onExecute..."); -#endif + mLocalSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), kernelName, unit.kernel).first; + openCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; + unit.localWorkSize = {mLocalSize[0], mLocalSize[1], mLocalSize[2]}; return NO_ERROR; } @@ -98,9 +71,9 @@ class RangeCreator : public OpenCLBackend::Creator { auto code = inputs[0]->getType().code; switch (code) { case halide_type_int: - return new RangeExecution("-DUSE_INT", backend); + return new RangeExecution("-DUSE_INT", op, backend); case halide_type_float: - return new RangeExecution("-DUSE_FLOAT", backend); + return new RangeExecution("-DUSE_FLOAT", op, backend); default: return nullptr; } diff --git a/source/backend/opencl/execution/image/RangeExecution.hpp b/source/backend/opencl/execution/image/RangeExecution.hpp index 8ba87182f..7682d4cb7 100644 --- a/source/backend/opencl/execution/image/RangeExecution.hpp +++ b/source/backend/opencl/execution/image/RangeExecution.hpp @@ -9,30 +9,20 @@ #ifndef RangeExecution_hpp #define RangeExecution_hpp -#include "core/Execution.hpp" - -#include -#include "MNN_generated.h" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "CommonExecution.hpp" namespace MNN { namespace OpenCL { -class RangeExecution : public Execution, public CommonExtension { +class RangeExecution : public CommonExecution { public: - RangeExecution(const std::string &compute, Backend *backend); + RangeExecution(const std::string &compute, const MNN::Op *op, Backend *backend); virtual ~RangeExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: - cl::Kernel mKernel; uint32_t mMaxWorkGroupSize; - std::vector mGlobalWorkSize = {1, 1, 1}; - std::vector mLocalSize = {1, 1, 1}; std::set mBuildOptions; }; diff --git a/source/backend/opencl/execution/image/RasterExecution.cpp b/source/backend/opencl/execution/image/RasterExecution.cpp index ef3cb9836..7b2c0109f 100644 --- a/source/backend/opencl/execution/image/RasterExecution.cpp +++ b/source/backend/opencl/execution/image/RasterExecution.cpp @@ -22,11 +22,10 @@ RasterExecution::RasterExecution(const std::vector &inputs, const MNN: //nothing to do } -ErrorCode RasterExecution::onResize(const std::vector &____inputs, const std::vector &outputs) { +ErrorCode RasterExecution::onEncode(const std::vector &____inputs, const std::vector &outputs) { #ifdef LOG_VERBOSE MNN_PRINT("start RasterExecution onResize !\n"); #endif - mOpenCLBackend->startRecord(mRecording); mTempInput.clear(); mTempOutput = nullptr; MNN_ASSERT(outputs.size() == 1); @@ -39,166 +38,44 @@ ErrorCode RasterExecution::onResize(const std::vector &____inputs, con auto regionNum = des->regions.size(); auto runtime = ((OpenCLBackend *)backend())->getOpenCLRuntime(); - mFast = false; - if (outputDes->dimensionFormat == MNN_DATA_FORMAT_NC4HW4) { - mFast = true; - for (int i=0; i< des->regions.size(); ++i) { - auto& slice = des->regions[i]; - if (TensorUtils::getDescribe(slice.origin)->dimensionFormat != MNN_DATA_FORMAT_NC4HW4) { - mFast = false; - break; - } - if (!OpCommonUtils::canBlitFast(slice, output)) { - mFast = false; - break; - } - } - } - - if(mFast) - { - mUnits.resize(regionNum); - int kernel_idx = 0; - - if(mNeedZero) - { - mUnits.resize(regionNum + 1); - auto outputShape = tensorShapeFormat(output); - int region[] = {outputShape[0], UP_DIV(outputShape[3], 4), outputShape[1], outputShape[2]};//nhwc - Unit &unit = mUnits[kernel_idx++]; - unit.kernel = runtime->buildKernel("raster", "image_set_zero", {}); - unit.localWorkSize = {8, 8}; - unit.globalWorkSize = {(uint32_t)UP_DIV((region[1] * region[3]), 16)*16, - (uint32_t)UP_DIV((region[0] * region[2]), 16)*16}; - - int global_dim0 = region[1] * region[3]; - int global_dim1 = region[0] * region[2]; - - uint32_t idx = 0; - cl_int ret = CL_SUCCESS; - ret |= unit.kernel.setArg(idx++, global_dim0); - ret |= unit.kernel.setArg(idx++, global_dim1); - ret |= unit.kernel.setArg(idx++, openCLImage(output)); - if(ret != CL_SUCCESS) - { - MNN_PRINT("setArg err %d\n", (int)ret); - } - mOpenCLBackend->recordKernel2d(unit.kernel, - {(uint32_t)UP_DIV((region[1] * region[3]), 16)*16, - (uint32_t)UP_DIV((region[0] * region[2]), 16)*16}, - {8, 8}); - } - - // image raster - for (auto& slice : des->regions) - { - Tensor::InsideDescribe::Region C4Region; - OpCommonUtils::turnToPackRegion(slice, C4Region, output, 4); - - Unit &unit = mUnits[kernel_idx++]; - unit.kernel = runtime->buildKernel("raster", "raster_image", {}); - - const std::vector gws = {(uint32_t)C4Region.size[2], - (uint32_t)C4Region.size[1], - (uint32_t)C4Region.size[0]}; - uint32_t mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); - - auto outputShape = tensorShapeFormat(output); - auto sliceShape = tensorShapeFormat(slice.origin); - - uint32_t idx = 0; - cl_int ret = CL_SUCCESS; - ret |= unit.kernel.setArg(idx++, gws[0]); - ret |= unit.kernel.setArg(idx++, gws[1]); - ret |= unit.kernel.setArg(idx++, gws[2]); - ret |= unit.kernel.setArg(idx++, openCLImage(slice.origin)); - ret |= unit.kernel.setArg(idx++, C4Region.src.offset); - ret |= unit.kernel.setArg(idx++, C4Region.src.stride[0]); - ret |= unit.kernel.setArg(idx++, C4Region.src.stride[1]); - ret |= unit.kernel.setArg(idx++, C4Region.src.stride[2]); - ret |= unit.kernel.setArg(idx++, sliceShape[1]); - ret |= unit.kernel.setArg(idx++, sliceShape[2]); - ret |= unit.kernel.setArg(idx++, sliceShape[3]); - ret |= unit.kernel.setArg(idx++, openCLImage(output)); - ret |= unit.kernel.setArg(idx++, C4Region.dst.offset); - ret |= unit.kernel.setArg(idx++, C4Region.dst.stride[0]); - ret |= unit.kernel.setArg(idx++, C4Region.dst.stride[1]); - ret |= unit.kernel.setArg(idx++, C4Region.dst.stride[2]); - ret |= unit.kernel.setArg(idx++, outputShape[1]); - ret |= unit.kernel.setArg(idx++, outputShape[2]); - ret |= unit.kernel.setArg(idx++, outputShape[3]); - if(ret != CL_SUCCESS) - { - MNN_PRINT("setArg err %d\n", (int)ret); - } - std::string name = "rasterImage"; - const std::vector lws = localWS3DDefault(gws, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), name, unit.kernel).first; - - unit.localWorkSize = {lws[0], lws[1], lws[2]}; - - unit.globalWorkSize = {ROUND_UP(gws[0], std::max((uint32_t)1, lws[0])), - ROUND_UP(gws[1], std::max((uint32_t)1, lws[1])), - ROUND_UP(gws[2], std::max((uint32_t)1, lws[2]))}; - mOpenCLBackend->recordKernel3d(unit.kernel, gws, lws); - } - if(mNeedZero) - { - MNN_ASSERT((regionNum+1==kernel_idx)); - } - else - { - MNN_ASSERT((regionNum==kernel_idx)); - } - mOpenCLBackend->endRecord(mRecording); - return NO_ERROR; - } bool cancombine = CanCombine(outputs); // Alloc Temp buffer auto bufferPool = ((OpenCLBackend *)backend())->getBufferPool(); auto bufferUnitSize = runtime->isSupportedFP16() ? sizeof(half_float::half) : sizeof(float); - for(int i=0; i< regionNum; ++i) - { - auto origin = des->regions[i].origin; - if(mTempInput.find(origin) != mTempInput.end()) - { - continue; + if(output->getType().code == halide_type_int || output->getType().code == halide_type_uint) { + if(output->getType().bits == 8){ + bufferUnitSize = 1; + } else if(output->getType().bits == 32){ + bufferUnitSize = 1; } - - auto buffer = bufferPool->alloc(origin->elementSize()*bufferUnitSize); - mTempInput.insert(std::make_pair(origin, buffer)); } mTempOutput = bufferPool->alloc(output->elementSize() * bufferUnitSize); - - for(auto& iter : mTempInput) - { - bufferPool->recycle(iter.second); - } bufferPool->recycle(mTempOutput); auto originNum = mTempInput.size(); if(cancombine){ regionNum = 1; } - mUnits.resize(regionNum + originNum + 1); + mUnits.resize(regionNum + 1); int kernel_idx = 0; if(mNeedZero) { - mUnits.resize(regionNum + originNum + 2); + mUnits.resize(regionNum + 2); auto outputShape = tensorShapeFormat(output); int region[] = {outputShape[0], outputShape[3], outputShape[1], outputShape[2]};//nhwc Unit &unit = mUnits[kernel_idx++]; - unit.kernel = runtime->buildKernel("raster", "buffer_set_zero", {}); + unit.kernel = runtime->buildKernel("raster", "buffer_set_zero", {}, output, output); std::vector gws = {(uint32_t)(region[2] * region[3]), (uint32_t)(region[0] * region[1])}; uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= unit.kernel.setArg(idx++, gws[0]); - ret |= unit.kernel.setArg(idx++, gws[1]); - ret |= unit.kernel.setArg(idx++, *mTempOutput); + ret |= unit.kernel->get().setArg(idx++, gws[0]); + ret |= unit.kernel->get().setArg(idx++, gws[1]); + ret |= unit.kernel->get().setArg(idx++, *mTempOutput); if(ret != CL_SUCCESS) { MNN_PRINT("setArg err %d\n", (int)ret); @@ -215,63 +92,23 @@ ErrorCode RasterExecution::onResize(const std::vector &____inputs, con mOpenCLBackend->recordKernel2d(unit.kernel, gws, lws); } - - //image to buffer - for(auto& iter : mTempInput) - { - Tensor* origin = iter.first; - std::vector regionShape = tensorShapeFormat(origin); - int inputWH[] = {regionShape[2], regionShape[1]}; - int region[] = {regionShape[0], UP_DIV(regionShape[3], 4), regionShape[1], regionShape[2]}; - - Unit &unit = mUnits[kernel_idx++]; - if(TensorUtils::getDescribe(origin)->dimensionFormat == MNN_DATA_FORMAT_NHWC)// Image to nhwc buffer - { - unit.kernel = runtime->buildKernel("buffer_to_image", "image_to_nhwc_buffer", {}); - } - else //Image to nchw buffer - { - unit.kernel = runtime->buildKernel("buffer_to_image", "image_to_nchw_buffer", {}); - } - - std::vector gws = {(uint32_t)(region[3] * region[1]), - (uint32_t)(region[2] * region[0])}; - //MNN_CHECK_CL_SUCCESS - uint32_t idx = 0; - cl_int ret = CL_SUCCESS; - ret |= unit.kernel.setArg(idx++, gws[0]); - ret |= unit.kernel.setArg(idx++, gws[1]); - ret |= unit.kernel.setArg(idx++, *(iter.second)); - ret |= unit.kernel.setArg(idx++, inputWH[1]); - ret |= unit.kernel.setArg(idx++, inputWH[0]); - ret |= unit.kernel.setArg(idx++, regionShape[3]); - ret |= unit.kernel.setArg(idx++, openCLImage(origin)); - if(ret != CL_SUCCESS) - { - MNN_PRINT("setArg err %d\n", (int)ret); - } - - uint32_t mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); - - std::string kernelName = "raster_image_to_buffer"; - std::vector lws = localWS2DDefault(gws, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), kernelName, unit.kernel).first; - - unit.localWorkSize = {lws[0], lws[1]}; - unit.globalWorkSize = {ROUND_UP(gws[0], std::max((uint32_t)1, lws[0])), - ROUND_UP(gws[1], std::max((uint32_t)1, lws[1]))}; - mOpenCLBackend->recordKernel2d(unit.kernel, gws, lws); - } // buffer raster if(cancombine){ + std::set buildOptions; auto regions = des->regions; auto slice = regions[0]; + auto origin = slice.origin; + auto inputShape = tensorShapeFormat(origin); int nums = regions.size(); int src_offset = regions[1].src.offset - slice.src.offset; int dst_offset = regions[1].dst.offset - slice.dst.offset; + if(TensorUtils::getDescribe(origin)->dimensionFormat == MNN_DATA_FORMAT_NHWC) { + buildOptions.emplace(" -DINPUT_DATA_FORMAT_NHWC"); + } Unit &unit = mUnits[kernel_idx++]; - unit.kernel = runtime->buildKernel("raster", "raster_buffer_combine", {}); + unit.kernel = runtime->buildKernel("raster", "raster_buffer_direct", buildOptions, output, output); unit.globalWorkSize = {(uint32_t)slice.size[2] * nums, (uint32_t)slice.size[1], @@ -284,22 +121,25 @@ ErrorCode RasterExecution::onResize(const std::vector &____inputs, con uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= unit.kernel.setArg(idx++, gws[0]); - ret |= unit.kernel.setArg(idx++, gws[1]); - ret |= unit.kernel.setArg(idx++, gws[2]); - ret |= unit.kernel.setArg(idx++, *(mTempInput[slice.origin])); - ret |= unit.kernel.setArg(idx++, slice.src.offset); - ret |= unit.kernel.setArg(idx++, src_offset); - ret |= unit.kernel.setArg(idx++, slice.src.stride[0]); - ret |= unit.kernel.setArg(idx++, slice.src.stride[1]); - ret |= unit.kernel.setArg(idx++, slice.src.stride[2]); - ret |= unit.kernel.setArg(idx++, *mTempOutput); - ret |= unit.kernel.setArg(idx++, slice.dst.offset); - ret |= unit.kernel.setArg(idx++, dst_offset); - ret |= unit.kernel.setArg(idx++, slice.dst.stride[0]); - ret |= unit.kernel.setArg(idx++, slice.dst.stride[1]); - ret |= unit.kernel.setArg(idx++, slice.dst.stride[2]); - ret |= unit.kernel.setArg(idx++, slice.size[2]); + ret |= unit.kernel->get().setArg(idx++, gws[0]); + ret |= unit.kernel->get().setArg(idx++, gws[1]); + ret |= unit.kernel->get().setArg(idx++, gws[2]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(origin)); + ret |= unit.kernel->get().setArg(idx++, slice.src.offset); + ret |= unit.kernel->get().setArg(idx++, src_offset); + ret |= unit.kernel->get().setArg(idx++, slice.src.stride[0]); + ret |= unit.kernel->get().setArg(idx++, slice.src.stride[1]); + ret |= unit.kernel->get().setArg(idx++, slice.src.stride[2]); + ret |= unit.kernel->get().setArg(idx++, inputShape[2]); + ret |= unit.kernel->get().setArg(idx++, inputShape[1]); + ret |= unit.kernel->get().setArg(idx++, inputShape[3]); + ret |= unit.kernel->get().setArg(idx++, *mTempOutput); + ret |= unit.kernel->get().setArg(idx++, slice.dst.offset); + ret |= unit.kernel->get().setArg(idx++, dst_offset); + ret |= unit.kernel->get().setArg(idx++, slice.dst.stride[0]); + ret |= unit.kernel->get().setArg(idx++, slice.dst.stride[1]); + ret |= unit.kernel->get().setArg(idx++, slice.dst.stride[2]); + ret |= unit.kernel->get().setArg(idx++, slice.size[2]); if(ret != CL_SUCCESS) { MNN_PRINT("setArg err %d\n", (int)ret); @@ -317,8 +157,16 @@ ErrorCode RasterExecution::onResize(const std::vector &____inputs, con }else{ for (auto& slice : des->regions) { + std::set buildOptions; + auto origin = slice.origin; + auto inputShape = tensorShapeFormat(origin); + int src_offset = 0; + int dst_offset = 0; + if(TensorUtils::getDescribe(origin)->dimensionFormat == MNN_DATA_FORMAT_NHWC) { + buildOptions.emplace(" -DINPUT_DATA_FORMAT_NHWC"); + } Unit &unit = mUnits[kernel_idx++]; - unit.kernel = runtime->buildKernel("raster", "raster_buffer", {}); + unit.kernel = runtime->buildKernel("raster", "raster_buffer_direct", buildOptions, output, output); unit.globalWorkSize = {(uint32_t)slice.size[2], (uint32_t)slice.size[1], @@ -331,19 +179,25 @@ ErrorCode RasterExecution::onResize(const std::vector &____inputs, con uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= unit.kernel.setArg(idx++, gws[0]); - ret |= unit.kernel.setArg(idx++, gws[1]); - ret |= unit.kernel.setArg(idx++, gws[2]); - ret |= unit.kernel.setArg(idx++, *(mTempInput[slice.origin])); - ret |= unit.kernel.setArg(idx++, slice.src.offset); - ret |= unit.kernel.setArg(idx++, slice.src.stride[0]); - ret |= unit.kernel.setArg(idx++, slice.src.stride[1]); - ret |= unit.kernel.setArg(idx++, slice.src.stride[2]); - ret |= unit.kernel.setArg(idx++, *mTempOutput); - ret |= unit.kernel.setArg(idx++, slice.dst.offset); - ret |= unit.kernel.setArg(idx++, slice.dst.stride[0]); - ret |= unit.kernel.setArg(idx++, slice.dst.stride[1]); - ret |= unit.kernel.setArg(idx++, slice.dst.stride[2]); + ret |= unit.kernel->get().setArg(idx++, gws[0]); + ret |= unit.kernel->get().setArg(idx++, gws[1]); + ret |= unit.kernel->get().setArg(idx++, gws[2]); + ret |= unit.kernel->get().setArg(idx++, openCLBuffer(origin)); + ret |= unit.kernel->get().setArg(idx++, slice.src.offset); + ret |= unit.kernel->get().setArg(idx++, src_offset); + ret |= unit.kernel->get().setArg(idx++, slice.src.stride[0]); + ret |= unit.kernel->get().setArg(idx++, slice.src.stride[1]); + ret |= unit.kernel->get().setArg(idx++, slice.src.stride[2]); + ret |= unit.kernel->get().setArg(idx++, inputShape[2]); + ret |= unit.kernel->get().setArg(idx++, inputShape[1]); + ret |= unit.kernel->get().setArg(idx++, inputShape[3]); + ret |= unit.kernel->get().setArg(idx++, *mTempOutput); + ret |= unit.kernel->get().setArg(idx++, slice.dst.offset); + ret |= unit.kernel->get().setArg(idx++, dst_offset); + ret |= unit.kernel->get().setArg(idx++, slice.dst.stride[0]); + ret |= unit.kernel->get().setArg(idx++, slice.dst.stride[1]); + ret |= unit.kernel->get().setArg(idx++, slice.dst.stride[2]); + ret |= unit.kernel->get().setArg(idx++, slice.size[2]); if(ret != CL_SUCCESS) { MNN_PRINT("setArg err %d\n", (int)ret); @@ -370,24 +224,24 @@ ErrorCode RasterExecution::onResize(const std::vector &____inputs, con Unit &unit = mUnits[kernel_idx++]; if(outputDes->dimensionFormat == MNN_DATA_FORMAT_NHWC)//nhwc buffer to Image { - unit.kernel = runtime->buildKernel("buffer_to_image", "nhwc_buffer_to_image", {}); + unit.kernel = runtime->buildKernel("buffer_to_image", "nhwc_buffer_to_image", {}, output, output); } else //nchw buffer to Image { - unit.kernel = runtime->buildKernel("buffer_to_image", "nchw_buffer_to_image", {}); + unit.kernel = runtime->buildKernel("buffer_to_image", "nchw_buffer_to_image", {}, output, output); } std::vector gws = {(uint32_t)(region[3] * region[1]), (uint32_t)(region[2] * region[0])}; uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= unit.kernel.setArg(idx++, gws[0]); - ret |= unit.kernel.setArg(idx++, gws[1]); - ret |= unit.kernel.setArg(idx++, *mTempOutput); - ret |= unit.kernel.setArg(idx++, wh[1]); - ret |= unit.kernel.setArg(idx++, wh[0]); - ret |= unit.kernel.setArg(idx++, outputShape[3]); - ret |= unit.kernel.setArg(idx++, openCLImage(output)); + ret |= unit.kernel->get().setArg(idx++, gws[0]); + ret |= unit.kernel->get().setArg(idx++, gws[1]); + ret |= unit.kernel->get().setArg(idx++, *mTempOutput); + ret |= unit.kernel->get().setArg(idx++, wh[1]); + ret |= unit.kernel->get().setArg(idx++, wh[0]); + ret |= unit.kernel->get().setArg(idx++, outputShape[3]); + ret |= unit.kernel->get().setArg(idx++, openCLImage(output)); if(ret != CL_SUCCESS) { MNN_PRINT("setArg err %d\n", (int)ret); @@ -404,17 +258,6 @@ ErrorCode RasterExecution::onResize(const std::vector &____inputs, con mOpenCLBackend->recordKernel2d(unit.kernel, gws, lws); } - //kernel num check - if(mNeedZero) - { - MNN_ASSERT((kernel_idx==regionNum + originNum + 2)); - } - else - { - MNN_ASSERT((kernel_idx==regionNum + originNum + 1)); - } - - mOpenCLBackend->endRecord(mRecording); #ifdef LOG_VERBOSE MNN_PRINT("end RasterExecution onResize !\n"); #endif diff --git a/source/backend/opencl/execution/image/RasterExecution.hpp b/source/backend/opencl/execution/image/RasterExecution.hpp index a247309d8..f94894277 100644 --- a/source/backend/opencl/execution/image/RasterExecution.hpp +++ b/source/backend/opencl/execution/image/RasterExecution.hpp @@ -8,12 +8,7 @@ #ifndef RaterExecution_hpp #define RaterExecution_hpp -#include -#include -#include #include "CommonExecution.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" namespace MNN { namespace OpenCL { @@ -23,7 +18,7 @@ class RasterExecution : public CommonExecution { RasterExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend); virtual ~RasterExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: bool CanCombine(const std::vector &outputs); diff --git a/source/backend/opencl/execution/image/ReductionExecution.cpp b/source/backend/opencl/execution/image/ReductionExecution.cpp index 119696b70..64c801c5a 100644 --- a/source/backend/opencl/execution/image/ReductionExecution.cpp +++ b/source/backend/opencl/execution/image/ReductionExecution.cpp @@ -13,10 +13,12 @@ namespace MNN { namespace OpenCL { -ReductionExecution::ReductionExecution(const MNN::Op* op, Backend* backend) : CommonExecution(backend, op) { +ReductionExecution::ReductionExecution(const std::vector &inputs, const std::vector &outputs, const MNN::Op* op, Backend* backend) : CommonExecution(backend, op) { #ifdef LOG_VERBOSE MNN_PRINT("start ReductionExecution init !\n"); #endif + mUnits.resize(1); + auto &unit = mUnits[0]; mOpenCLBackend = static_cast(backend); mAxis = op->main_as_ReductionParam()->dim()->data()[0]; switch (op->main_as_ReductionParam()->operation()) { @@ -39,8 +41,8 @@ ReductionExecution::ReductionExecution(const MNN::Op* op, Backend* backend) : Co MNN_ASSERT(false); break; } - auto kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("reduction", "reduct_width", {"-DOPERATE(a,b)=(a+b)","-DVALUE=0","-DLOCAL_SIZE=512"}); - mMaxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(kernel)); + unit.kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("reduction", "reduct_width", {"-DOPERATE(a,b)=(a+b)","-DVALUE=0","-DLOCAL_SIZE=512"}, inputs[0], outputs[0]); + mMaxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(unit.kernel)); #ifdef LOG_VERBOSE MNN_PRINT("end ReductionExecution init !\n"); #endif @@ -54,11 +56,9 @@ int ReductionExecution::getLocalSize(int size, int maxGroupSize){ return local_size; } -ErrorCode ReductionExecution::onResize(const std::vector &inputs, const std::vector &outputs) { - - +ErrorCode ReductionExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { + auto &unit = mUnits[0]; auto runtime = mOpenCLBackend->getOpenCLRuntime(); - mOpenCLBackend->startRecord(mRecording); auto MaxLocalSize = std::min(runtime->getMaxWorkItemSizes()[0], mMaxWorkGroupSize); auto input = inputs[0]; auto output = outputs[0]; @@ -122,6 +122,8 @@ ErrorCode ReductionExecution::onResize(const std::vector &inputs, cons break; } + std::vector mGlobalWorkSize = {1, 1, 1}; + std::vector mLocalWorkSize{1, 1, 1}; mGlobalWorkSize = { static_cast(outputWidth), static_cast(outputHeight), @@ -132,92 +134,66 @@ ErrorCode ReductionExecution::onResize(const std::vector &inputs, cons if(batch * inputHeight * inputChannels == outside && 1 == inside && dim == inputWidth){ local_size = getLocalSize(inputWidth, MaxLocalSize); buildOption.emplace("-DLOCAL_SIZE=" + std::to_string(local_size)); - mReduct1DKernel = runtime->buildKernel("reduction", "reduct_width", buildOption); + unit.kernel = runtime->buildKernel("reduction", "reduct_width", buildOption, input, output); }else if(batch * inputChannels == outside && inputWidth == inside && dim == inputHeight){ local_size = getLocalSize(inputHeight, MaxLocalSize); buildOption.emplace("-DLOCAL_SIZE=" + std::to_string(local_size)); - mReduct1DKernel = runtime->buildKernel("reduction", "reduct_height", buildOption); + unit.kernel = runtime->buildKernel("reduction", "reduct_height", buildOption, input, output); }else if(batch == outside && inputWidth * inputHeight == inside && dim == inputChannels){ local_size = getLocalSize(inputChannelBlocks - 1, MaxLocalSize); buildOption.emplace("-DLOCAL_SIZE=" + std::to_string(local_size)); - mReduct1DKernel = runtime->buildKernel("reduction", "reduct_channel", buildOption); + unit.kernel = runtime->buildKernel("reduction", "reduct_channel", buildOption, input, output); mGlobalWorkSize[2] = static_cast(outputBatch * outputChannels); }else if(1 == outside && inputWidth * inputHeight * inputChannels == inside && dim == batch){ local_size = getLocalSize(batch, MaxLocalSize); buildOption.emplace("-DLOCAL_SIZE=" + std::to_string(local_size)); - mReduct1DKernel = runtime->buildKernel("reduction", "reduct_batch", buildOption); + unit.kernel = runtime->buildKernel("reduction", "reduct_batch", buildOption, input, output); } mGlobalWorkSize[0] *= local_size; }else{ buildOption.emplace("-DLOCAL_SIZE=0"); if(batch * inputHeight * inputChannels == outside && 1 == inside && dim == inputWidth){ - mReduct1DKernel = runtime->buildKernel("reduction", "reduct_width", buildOption); + unit.kernel = runtime->buildKernel("reduction", "reduct_width", buildOption, input, output); }else if(batch * inputChannels == outside && inputWidth == inside && dim == inputHeight){ - mReduct1DKernel = runtime->buildKernel("reduction", "reduct_height", buildOption); + unit.kernel = runtime->buildKernel("reduction", "reduct_height", buildOption, input, output); }else if(batch == outside && inputWidth * inputHeight == inside && dim == inputChannels){ - mReduct1DKernel = runtime->buildKernel("reduction", "reduct_channel", buildOption); + unit.kernel = runtime->buildKernel("reduction", "reduct_channel", buildOption, input, output); mGlobalWorkSize[2] = static_cast(outputBatch * outputChannels); }else if(1 == outside && inputWidth * inputHeight * inputChannels == inside && dim == batch){ - mReduct1DKernel = runtime->buildKernel("reduction", "reduct_batch", buildOption); + unit.kernel = runtime->buildKernel("reduction", "reduct_batch", buildOption, input, output); } } mUnits.resize(1); uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mReduct1DKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mReduct1DKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mReduct1DKernel.setArg(idx++, mGlobalWorkSize[2]); - ret |= mReduct1DKernel.setArg(idx++, openCLImage(input)); - ret |= mReduct1DKernel.setArg(idx++, openCLImage(output)); - ret |= mReduct1DKernel.setArg(idx++, inputWidth); - ret |= mReduct1DKernel.setArg(idx++, inputHeight); - ret |= mReduct1DKernel.setArg(idx++, inputChannels); - ret |= mReduct1DKernel.setArg(idx++, batch); - ret |= mReduct1DKernel.setArg(idx++, inputChannelBlocks); - ret |= mReduct1DKernel.setArg(idx++, outputWidth); - ret |= mReduct1DKernel.setArg(idx++, outputHeight); - ret |= mReduct1DKernel.setArg(idx++, outputChannels); - ret |= mReduct1DKernel.setArg(idx++, outputChannelBlocks); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(idx++, openCLImage(input)); + ret |= unit.kernel->get().setArg(idx++, openCLImage(output)); + ret |= unit.kernel->get().setArg(idx++, inputWidth); + ret |= unit.kernel->get().setArg(idx++, inputHeight); + ret |= unit.kernel->get().setArg(idx++, inputChannels); + ret |= unit.kernel->get().setArg(idx++, batch); + ret |= unit.kernel->get().setArg(idx++, inputChannelBlocks); + ret |= unit.kernel->get().setArg(idx++, outputWidth); + ret |= unit.kernel->get().setArg(idx++, outputHeight); + ret |= unit.kernel->get().setArg(idx++, outputChannels); + ret |= unit.kernel->get().setArg(idx++, outputChannelBlocks); MNN_CHECK_CL_SUCCESS(ret, "setArg ReductionExecution"); if(mUseLocal){ mLocalWorkSize = {static_cast(local_size), 1, 1}; }else{ - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mReduct1DKernel)); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); std::string kernelName = "reduct"; - mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, runtime, kernelName, mReduct1DKernel).first; + mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, runtime, kernelName, unit.kernel).first; } - mOpenCLBackend->recordKernel3d(mReduct1DKernel, mGlobalWorkSize, mLocalWorkSize); - mOpenCLBackend->endRecord(mRecording); - return NO_ERROR; -} - -ErrorCode ReductionExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("start ReductionExecution onExecute !\n"); -#endif - - #ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mReduct1DKernel, mGlobalWorkSize, mLocalWorkSize, mOpenCLBackend->getOpenCLRuntime(), &event); - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Reduct1D", event}); - #else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End ReductionExecution onExecute... \n"); -#endif - return NO_ERROR; - } - run3DKernelDefault(mReduct1DKernel, mGlobalWorkSize, mLocalWorkSize, mOpenCLBackend->getOpenCLRuntime()); - #endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end ReductionExecution onExecute !\n"); -#endif + mOpenCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1], mLocalWorkSize[2]}; return NO_ERROR; } @@ -255,7 +231,7 @@ class ReductionCreator : public OpenCLBackend::Creator { return NULL; break; } - return new ReductionExecution(op, backend); + return new ReductionExecution(inputs, outputs, op, backend); return NULL; } }; diff --git a/source/backend/opencl/execution/image/ReductionExecution.hpp b/source/backend/opencl/execution/image/ReductionExecution.hpp index de36ce323..ac8c673a5 100644 --- a/source/backend/opencl/execution/image/ReductionExecution.hpp +++ b/source/backend/opencl/execution/image/ReductionExecution.hpp @@ -9,33 +9,23 @@ #ifndef ReductionExecution_hpp #define ReductionExecution_hpp -#include "core/Execution.hpp" -#include -#include -#include -#include -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/execution/image/CommonExecution.hpp" +#include "CommonExecution.hpp" namespace MNN { namespace OpenCL { class ReductionExecution : public CommonExecution { public: - ReductionExecution(const MNN::Op* op, Backend* backend); + ReductionExecution(const std::vector &inputs, const std::vector &outputs, const MNN::Op* op, Backend* backend); virtual ~ReductionExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: int getLocalSize(int size, int maxGroupSize); - cl::Kernel mReduct1DKernel; OpenCLBackend *mOpenCLBackend; MNN::DataType mdataType; int mReductType; int mAxis; - std::vector mGlobalWorkSize = {1, 1, 1}; - std::vector mLocalWorkSize{1, 1, 1}; bool mUseLocal = false; uint32_t mMaxWorkGroupSize; }; diff --git a/source/backend/opencl/execution/image/ReluExecution.cpp b/source/backend/opencl/execution/image/ReluExecution.cpp index 203309053..583777f68 100644 --- a/source/backend/opencl/execution/image/ReluExecution.cpp +++ b/source/backend/opencl/execution/image/ReluExecution.cpp @@ -55,7 +55,7 @@ ReluExecution::~ReluExecution() { backend()->onReleaseBuffer(mPreluParam.get(), Backend::STATIC); } -ErrorCode ReluExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode ReluExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { mUnits.resize(1); auto nhwc = tensorShapeFormat(outputs[0]); int nhwcArray[4] = {nhwc[0], nhwc[1], nhwc[2], UP_DIV(nhwc[3], 4)}; @@ -68,21 +68,19 @@ ErrorCode ReluExecution::onResize(const std::vector &inputs, const std cl::NDRange globalSize = {(uint32_t)UP_DIV(imageWidth, 4) * 4, (uint32_t)UP_DIV(imageHeight, 4) * 4}; auto mOpenCLBackend = static_cast(backend()); - mOpenCLBackend->startRecord(mRecording); - mUnits[0].kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("binary", "binary_prelu", {"-DOPERATOR=select(in0*in1,in0,in0>=(FLOAT4)0)"}); + mUnits[0].kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("binary", "binary_prelu", {"-DOPERATOR=select(in0*in1,in0,in0>=(float4)0)"}, inputs[0], outputs[0]); cl_int ret = CL_SUCCESS; - ret |= mUnits[0].kernel.setArg(0, openCLImage(inputs[0])); - ret |= mUnits[0].kernel.setArg(1, openCLImage(mPreluParam.get())); - ret |= mUnits[0].kernel.setArg(2, openCLImage(outputs[0])); - ret |= mUnits[0].kernel.setArg(3, nhwcArray); - ret |= mUnits[0].kernel.setArg(4, reluImageWH); - ret |= mUnits[0].kernel.setArg(5, reluStride); + ret |= mUnits[0].kernel->get().setArg(0, openCLImage(inputs[0])); + ret |= mUnits[0].kernel->get().setArg(1, openCLImage(mPreluParam.get())); + ret |= mUnits[0].kernel->get().setArg(2, openCLImage(outputs[0])); + ret |= mUnits[0].kernel->get().setArg(3, nhwcArray); + ret |= mUnits[0].kernel->get().setArg(4, reluImageWH); + ret |= mUnits[0].kernel->get().setArg(5, reluStride); MNN_CHECK_CL_SUCCESS(ret, "setArg ReluExecution"); mUnits[0].globalWorkSize = globalSize; mUnits[0].localWorkSize = localSize; mOpenCLBackend->recordKernel2d(mUnits[0].kernel, {(uint32_t)UP_DIV(imageWidth, 4) * 4, (uint32_t)UP_DIV(imageHeight, 4) * 4}, {4, 4}); - mOpenCLBackend->endRecord(mRecording); return NO_ERROR; } class ReluCreator : public OpenCLBackend::Creator { @@ -106,29 +104,29 @@ class ReluCreator : public OpenCLBackend::Creator { maxValue = op->main_as_Relu6()->maxValue(); } if (isRadeonGpu) { - std::string temp = "(in<=(FLOAT4)((FLOAT)%f)?(FLOAT4)((FLOAT)%f):(in>=(FLOAT4)((FLOAT)%f)?(FLOAT4)((FLOAT)%f):in))"; + std::string temp = "(in<=(float4)((float)%f)?(float4)((float)%f):(in>=(float4)((float)%f)?(float4)((float)%f):in))"; sprintf(storage, temp.c_str(), minValue, minValue, maxValue, maxValue); - return new UnaryExecution(storage, backend); + return new UnaryExecution(storage, op, backend); } - std::string temp = "clamp(in,(FLOAT4)((FLOAT)%f),(FLOAT4)((FLOAT)%f))"; + std::string temp = "clamp(in,(float4)((float)%f),(float4)((float)%f))"; sprintf(storage, temp.c_str(), minValue, maxValue); - return new UnaryExecution(storage, backend); + return new UnaryExecution(storage, op, backend); } if (op->type() == OpType_ReLU) { if (op->main_as_Relu()->slope() == 0.0f) { if (isRadeonGpu) { - return new UnaryExecution("(in>(FLOAT4)((FLOAT)0)?in:(FLOAT4)((FLOAT)0))", backend); + return new UnaryExecution("(in>(float4)((float)0)?in:(float4)((float)0))", op, backend); } - return new UnaryExecution("fmax(in,(FLOAT4)((FLOAT)0))", backend); + return new UnaryExecution("fmax(in,(float4)((float)0))", op, backend); } auto slope = op->main_as_Relu()->slope(); char slopeCStr[30] = {}; sprintf(slopeCStr, "%.8f", slope); std::string slopeStr = slopeCStr; if (isRadeonGpu) { - return new UnaryExecution("in<(FLOAT4)((FLOAT)0)?(FLOAT)(" + slopeStr + "f)*in:in", backend); + return new UnaryExecution("in<(float4)((float)0)?(float)(" + slopeStr + "f)*in:in", op, backend); } - return new UnaryExecution("select((FLOAT)(" + slopeStr + "f)*in,in,in>=(FLOAT4)((FLOAT)0))", backend); + return new UnaryExecution("select((float)(" + slopeStr + "f)*in,in,in>=(float4)((float)0))", op, backend); } if (op->type() == OpType_PReLU) { if (op->main_as_PRelu()->slopeCount() == 1) { @@ -137,9 +135,9 @@ class ReluCreator : public OpenCLBackend::Creator { sprintf(slopeCStr, "%.8f", slope); std::string slopeStr = slopeCStr; if (isRadeonGpu) { - return new UnaryExecution("in<(FLOAT4)((FLOAT)0)?(FLOAT)(" + slopeStr + "f)*in:in", backend); + return new UnaryExecution("in<(float4)((float)0)?(float)(" + slopeStr + "f)*in:in", op, backend); } - return new UnaryExecution("select((FLOAT)(" + slopeStr + "f)*in,in,in>=(FLOAT4)((FLOAT)0))", backend); + return new UnaryExecution("select((float)(" + slopeStr + "f)*in,in,in>=(float4)((float)0))", op, backend); } // FUNC_PRINT(1); return new ReluExecution(inputs, op, backend); diff --git a/source/backend/opencl/execution/image/ReluExecution.hpp b/source/backend/opencl/execution/image/ReluExecution.hpp index 1babc5bee..d0b334356 100644 --- a/source/backend/opencl/execution/image/ReluExecution.hpp +++ b/source/backend/opencl/execution/image/ReluExecution.hpp @@ -18,7 +18,7 @@ class ReluExecution : public CommonExecution { ReluExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend); virtual ~ReluExecution(); - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: std::shared_ptr mPreluParam; diff --git a/source/backend/opencl/execution/image/RoiPoolingExecution.cpp b/source/backend/opencl/execution/image/RoiPoolingExecution.cpp index f2dbaa973..8611f6a8e 100644 --- a/source/backend/opencl/execution/image/RoiPoolingExecution.cpp +++ b/source/backend/opencl/execution/image/RoiPoolingExecution.cpp @@ -14,10 +14,12 @@ namespace MNN { namespace OpenCL { -RoiPooling::RoiPooling(const std::vector &inputs, const MNN::Op *op, Backend *backend) : Execution(backend) { +RoiPooling::RoiPooling(const std::vector &inputs, const MNN::Op *op, Backend *backend) : CommonExecution(backend, op) { #ifdef LOG_VERBOSE MNN_PRINT("start RoiPooling init !\n"); #endif + mUnits.resize(1); + auto &unit = mUnits[0]; mOpenCLBackend = static_cast(backend); auto roi = op->main_as_RoiParameters(); mPooledWidth = roi->pooledWidth(); @@ -35,20 +37,19 @@ RoiPooling::RoiPooling(const std::vector &inputs, const MNN::Op *op, B }else if(roiChannels == 5){ buildOptions.emplace("-DROI_C5H1W1"); } - mKernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("roi_pooling", kernelName, buildOptions); - mMaxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(mKernel)); + unit.kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("roi_pooling", kernelName, buildOptions); + mMaxWorkGroupSize = static_cast(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkGroupSize(unit.kernel)); #ifdef LOG_VERBOSE MNN_PRINT("end RoiPooling init !\n"); #endif } -ErrorCode RoiPooling::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode RoiPooling::onEncode(const std::vector &inputs, const std::vector &outputs) { + auto &unit = mUnits[0]; Tensor *input = inputs[0]; Tensor *output = outputs[0]; Tensor *roi = inputs[1]; - mOpenCLBackend->startRecord(mRecording); - std::vector inputShape = tensorShapeFormat(input); std::vector outputShape = tensorShapeFormat(output); std::vector roiShape = tensorShapeFormat(roi); @@ -64,7 +65,9 @@ ErrorCode RoiPooling::onResize(const std::vector &inputs, const std::v const int inputChannels = inputShape.at(3); int channelBlocks = (channels + 3) / 4; - + + std::vector mGWS{1, 1, 1, 1}; + std::vector mLWS{1, 1, 1, 1}; mGWS = {static_cast(channelBlocks), static_cast(outputWidth), static_cast(batch * outputHeight), @@ -72,24 +75,25 @@ ErrorCode RoiPooling::onResize(const std::vector &inputs, const std::v uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGWS[0]); - ret |= mKernel.setArg(idx++, mGWS[1]); - ret |= mKernel.setArg(idx++, mGWS[2]); - - ret |= mKernel.setArg(idx++, openCLImage(input)); - ret |= mKernel.setArg(idx++, openCLImage(roi)); - ret |= mKernel.setArg(idx++, static_cast(inputHeight)); - ret |= mKernel.setArg(idx++, static_cast(inputWidth)); - ret |= mKernel.setArg(idx++, static_cast(inputBatch)); - ret |= mKernel.setArg(idx++, static_cast(outputHeight)); - ret |= mKernel.setArg(idx++, static_cast(outputWidth)); - ret |= mKernel.setArg(idx++, static_cast(mSpatialScale)); - ret |= mKernel.setArg(idx++, openCLImage(output)); + ret |= unit.kernel->get().setArg(idx++, mGWS[0]); + ret |= unit.kernel->get().setArg(idx++, mGWS[1]); + ret |= unit.kernel->get().setArg(idx++, mGWS[2]); + + ret |= unit.kernel->get().setArg(idx++, openCLImage(input)); + ret |= unit.kernel->get().setArg(idx++, openCLImage(roi)); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputHeight)); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputWidth)); + ret |= unit.kernel->get().setArg(idx++, static_cast(inputBatch)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputHeight)); + ret |= unit.kernel->get().setArg(idx++, static_cast(outputWidth)); + ret |= unit.kernel->get().setArg(idx++, static_cast(mSpatialScale)); + ret |= unit.kernel->get().setArg(idx++, openCLImage(output)); MNN_CHECK_CL_SUCCESS(ret, "setArg RoiPoolExecution"); mLWS = roiPoolingLocalWS(mGWS, mMaxWorkGroupSize); - mOpenCLBackend->recordKernel3d(mKernel, mGWS, mLWS); - mOpenCLBackend->endRecord(mRecording); + mOpenCLBackend->recordKernel3d(unit.kernel, mGWS, mLWS); + unit.globalWorkSize = {mGWS[0], mGWS[1], mGWS[2]}; + unit.localWorkSize = {mLWS[0], mLWS[1], mLWS[2]}; return NO_ERROR; } @@ -118,35 +122,6 @@ std::vector RoiPooling::roiPoolingLocalWS(const std::vector return lws; } -ErrorCode RoiPooling::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("start RoiPooling onExecute !\n"); -#endif - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGWS, mLWS, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"RoiPooling", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End RoiPooling onExecute... \n"); -#endif - return NO_ERROR; - } - run3DKernelDefault(mKernel, mGWS, mLWS, mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end RoiPooling onExecute !\n"); -#endif - return NO_ERROR; -} - using RoiPoolingCreator = TypedCreator; REGISTER_OPENCL_OP_CREATOR(RoiPoolingCreator, OpType_ROIPooling, IMAGE); diff --git a/source/backend/opencl/execution/image/RoiPoolingExecution.hpp b/source/backend/opencl/execution/image/RoiPoolingExecution.hpp index 03e113a0f..0b21829fd 100644 --- a/source/backend/opencl/execution/image/RoiPoolingExecution.hpp +++ b/source/backend/opencl/execution/image/RoiPoolingExecution.hpp @@ -14,27 +14,23 @@ #include "core/Execution.hpp" #include "backend/opencl/core/OpenCLBackend.hpp" #include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "CommonExecution.hpp" namespace MNN { namespace OpenCL { -class RoiPooling : public Execution, public CommonExtension { +class RoiPooling : public CommonExecution { public: RoiPooling(const std::vector &inputs, const MNN::Op *op, Backend *backend); virtual ~RoiPooling() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; std::vector roiPoolingLocalWS(const std::vector &gws, const uint32_t maxWorkGroupSize); private: int mPooledWidth; int mPooledHeight; float mSpatialScale; - cl::Kernel mKernel; - std::vector mGWS{1, 1, 1, 1}; - std::vector mLWS{1, 1, 1, 1}; uint32_t mMaxWorkGroupSize; bool mAreadySetArg; OpenCLBackend *mOpenCLBackend; diff --git a/source/backend/opencl/execution/image/ScaleExecution.cpp b/source/backend/opencl/execution/image/ScaleExecution.cpp index b8696daf4..af4085f36 100644 --- a/source/backend/opencl/execution/image/ScaleExecution.cpp +++ b/source/backend/opencl/execution/image/ScaleExecution.cpp @@ -15,10 +15,12 @@ namespace MNN { namespace OpenCL { ScaleExecution::ScaleExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend) - : Execution(backend) { + : CommonExecution(backend, op) { #ifdef LOG_VERBOSE MNN_PRINT("Start ScaleExecution init !\n"); #endif + mUnits.resize(1); + auto &unit = mUnits[0]; auto openclBackend = (OpenCLBackend *)backend; mOpenCLBackend = static_cast(backend); const auto *scaleParams = op->main_as_Scale(); @@ -100,8 +102,8 @@ ScaleExecution::ScaleExecution(const std::vector &inputs, const MNN::O } std::string kernelName = "scale"; auto runtime = mOpenCLBackend->getOpenCLRuntime(); - mKernel = runtime->buildKernel("scale", kernelName, buildOptions); - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + unit.kernel = runtime->buildKernel("scale", kernelName, buildOptions); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); #ifdef LOG_VERBOSE MNN_PRINT("end ScaleExecution init !\n"); @@ -115,12 +117,12 @@ ScaleExecution::~ScaleExecution() { mOpenCLBackend->onReleaseBuffer(mScale.get(), Backend::STATIC); } -ErrorCode ScaleExecution::onResize(const std::vector &inputs, const std::vector &outputs) { +ErrorCode ScaleExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { #ifdef LOG_VERBOSE MNN_PRINT("Start ScaleExecution onResize !\n"); #endif - mOpenCLBackend->startRecord(mRecording); + auto &unit = mUnits[0]; std::vector inputShape = tensorShapeFormat(inputs[0]); const int batch = inputShape.at(0); @@ -136,60 +138,35 @@ ErrorCode ScaleExecution::onResize(const std::vector &inputs, const st uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, gws[0]); - ret |= mKernel.setArg(idx++, gws[1]); - ret |= mKernel.setArg(idx++, gws[2]); + ret |= unit.kernel->get().setArg(idx++, gws[0]); + ret |= unit.kernel->get().setArg(idx++, gws[1]); + ret |= unit.kernel->get().setArg(idx++, gws[2]); - ret |= mKernel.setArg(idx++, openCLImage(inputs[0])); - ret |= mKernel.setArg(idx++, openCLImage(mScale.get())); + ret |= unit.kernel->get().setArg(idx++, openCLImage(inputs[0])); + ret |= unit.kernel->get().setArg(idx++, openCLImage(mScale.get())); if (mHasBias) { - ret |= mKernel.setArg(idx++, openCLImage(mBias.get())); + ret |= unit.kernel->get().setArg(idx++, openCLImage(mBias.get())); } - ret |= mKernel.setArg(idx++, openCLImage(outputs[0])); + ret |= unit.kernel->get().setArg(idx++, openCLImage(outputs[0])); MNN_CHECK_CL_SUCCESS(ret, "setArg ScaleExecution"); std::string name = "scale"; - mLWS = localWS3DDefault(gws, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), name, mKernel).first; + std::vector mGWS{1, 1, 1, 1}; + std::vector mLWS{1, 1, 1, 1}; + mLWS = localWS3DDefault(gws, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), name, unit.kernel).first; for (size_t i = 0; i < gws.size(); ++i) { mGWS[i] = ROUND_UP(gws[i], std::max((uint32_t)1, mLWS[i])); } - mOpenCLBackend->recordKernel3d(mKernel, mGWS, mLWS); - mOpenCLBackend->endRecord(mRecording); + mOpenCLBackend->recordKernel3d(unit.kernel, mGWS, mLWS); + unit.globalWorkSize = {mGWS[0], mGWS[1], mGWS[2]}; + unit.localWorkSize = {mLWS[0], mLWS[1], mLWS[2]}; #ifdef LOG_VERBOSE MNN_PRINT("end ScaleExecution onResize !\n"); #endif return NO_ERROR; } -ErrorCode ScaleExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("Start ScaleExecution onExecute !\n"); -#endif - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGWS, mLWS, mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"scale", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End ScaleExecution onExecute... \n"); -#endif - return NO_ERROR; - } - run3DKernelDefault(mKernel, mGWS, mLWS, mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end ScaleExecution onExecute !\n"); -#endif - return NO_ERROR; -} - using ScaleCreator = TypedCreator; REGISTER_OPENCL_OP_CREATOR(ScaleCreator, OpType_Scale, IMAGE); diff --git a/source/backend/opencl/execution/image/ScaleExecution.hpp b/source/backend/opencl/execution/image/ScaleExecution.hpp index a5e71c2fd..4c74eda6d 100644 --- a/source/backend/opencl/execution/image/ScaleExecution.hpp +++ b/source/backend/opencl/execution/image/ScaleExecution.hpp @@ -9,32 +9,22 @@ #ifndef ScaleExecution_hpp #define ScaleExecution_hpp -#include -#include -#include -#include "core/Execution.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "CommonExecution.hpp" namespace MNN { namespace OpenCL { -class ScaleExecution : public Execution, public CommonExtension { +class ScaleExecution : public CommonExecution { public: ScaleExecution(const std::vector &inputs, const MNN::Op *op, Backend *backend); virtual ~ScaleExecution(); - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: std::shared_ptr mScale; std::shared_ptr mBias; - cl::Kernel mKernel; uint32_t mMaxWorkGroupSize; - std::vector mGWS{1, 1, 1, 1}; - std::vector mLWS{1, 1, 1, 1}; OpenCLBackend *mOpenCLBackend; bool mHasBias = false; }; diff --git a/source/backend/opencl/execution/image/SelectExecution.cpp b/source/backend/opencl/execution/image/SelectExecution.cpp index 7220d0bc3..b287714b1 100644 --- a/source/backend/opencl/execution/image/SelectExecution.cpp +++ b/source/backend/opencl/execution/image/SelectExecution.cpp @@ -14,21 +14,23 @@ namespace MNN { namespace OpenCL { -SelectExecution::SelectExecution(Backend* backend) : Execution(backend) { +SelectExecution::SelectExecution(const MNN::Op *op, Backend* backend) : CommonExecution(backend, op) { // Do nothing } -ErrorCode SelectExecution::onResize(const std::vector& inputs, const std::vector& outputs) { +ErrorCode SelectExecution::onEncode(const std::vector& inputs, const std::vector& outputs) { + mUnits.resize(1); + auto &unit = mUnits[0]; auto inSize1 = inputs[1]->elementSize(); auto inSize2 = inputs[2]->elementSize(); auto openCLBackend = static_cast(backend()); auto runtime = openCLBackend->getOpenCLRuntime(); - openCLBackend->startRecord(mRecording); + std::set buildOptions = mBuildOptions; if(inSize1 == 1) - mBuildOptions.emplace("-DINSIZE1_EUQAL_1"); + buildOptions.emplace("-DINSIZE1_EUQAL_1"); if(inSize2 == 1) - mBuildOptions.emplace("-DINSIZE2_EUQAL_1"); - mKernel = runtime->buildKernel("select", "select_img", mBuildOptions); - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + buildOptions.emplace("-DINSIZE2_EUQAL_1"); + unit.kernel = runtime->buildKernel("select", "select_img", buildOptions); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); std::vector outputShape = tensorShapeFormat(outputs[0]); @@ -45,49 +47,19 @@ ErrorCode SelectExecution::onResize(const std::vector& inputs, const st uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, openCLImage(inputs[0])); - ret |= mKernel.setArg(idx++, openCLImage(inputs[1])); - ret |= mKernel.setArg(idx++, openCLImage(inputs[2])); - ret |= mKernel.setArg(idx++, openCLImage(outputs[0])); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, openCLImage(inputs[0])); + ret |= unit.kernel->get().setArg(idx++, openCLImage(inputs[1])); + ret |= unit.kernel->get().setArg(idx++, openCLImage(inputs[2])); + ret |= unit.kernel->get().setArg(idx++, openCLImage(outputs[0])); MNN_CHECK_CL_SUCCESS(ret, "setArg SelectExecution"); std::string kernelName = "select_img"; - mLocalSize = localWS2DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), kernelName, mKernel).first; - openCLBackend->recordKernel2d(mKernel, mGlobalWorkSize, mLocalSize); - openCLBackend->endRecord(mRecording); - return NO_ERROR; -} - -ErrorCode SelectExecution::onExecute(const std::vector& inputs, const std::vector& outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("start SelectExecution onExecute..."); -#endif - auto mOpenCLBackend = static_cast(backend()); - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - runKernel2D(mKernel, mGlobalWorkSize, mLocalSize, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Select", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End SelectExecution onExecute... \n"); -#endif - return NO_ERROR; - } - runKernel2D(mKernel, mGlobalWorkSize, mLocalSize, - mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end SelectExecution onExecute..."); -#endif + mLocalSize = localWS2DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), kernelName, unit.kernel).first; + openCLBackend->recordKernel2d(unit.kernel, mGlobalWorkSize, mLocalSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1]}; + unit.localWorkSize = {mLocalSize[0], mLocalSize[1]}; return NO_ERROR; } @@ -95,7 +67,7 @@ class SelectCreator : public OpenCLBackend::Creator { public: virtual Execution* onCreate(const std::vector& inputs, const std::vector& outputs, const MNN::Op* op, Backend* backend) const override { - return new SelectExecution(backend); + return new SelectExecution(op, backend); } }; diff --git a/source/backend/opencl/execution/image/SelectExecution.hpp b/source/backend/opencl/execution/image/SelectExecution.hpp index 699680840..4a10168ec 100644 --- a/source/backend/opencl/execution/image/SelectExecution.hpp +++ b/source/backend/opencl/execution/image/SelectExecution.hpp @@ -9,27 +9,19 @@ #ifndef SelectExecution_hpp #define SelectExecution_hpp -#include "core/Execution.hpp" - -#include -#include "MNN_generated.h" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "CommonExecution.hpp" namespace MNN { namespace OpenCL { -class SelectExecution : public Execution, public CommonExtension { +class SelectExecution : public CommonExecution { public: - SelectExecution(Backend *backend); + SelectExecution(const MNN::Op *op, Backend *backend); virtual ~SelectExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: - cl::Kernel mKernel; uint32_t mMaxWorkGroupSize; std::vector mGlobalWorkSize = {1, 1, 1}; std::vector mLocalSize = {1, 1, 1}; diff --git a/source/backend/opencl/execution/image/SoftmaxExecution.cpp b/source/backend/opencl/execution/image/SoftmaxExecution.cpp index 73da3a496..ab4348310 100644 --- a/source/backend/opencl/execution/image/SoftmaxExecution.cpp +++ b/source/backend/opencl/execution/image/SoftmaxExecution.cpp @@ -13,8 +13,8 @@ namespace MNN { namespace OpenCL { -SoftmaxExecution::SoftmaxExecution(const std::vector &inputs, int axis, Backend *backend) - : Execution(backend) { +SoftmaxExecution::SoftmaxExecution(const std::vector &inputs, int axis, const MNN::Op *op, Backend *backend) + : CommonExecution(backend, op) { mAxis = axis; mOpenCLBackend = static_cast(backend); auto kernel = mOpenCLBackend->getOpenCLRuntime()->buildKernel("softmax", "softmax_channel", {"-DSOFTMAX_LOCAL_SIZE=512"}); @@ -23,20 +23,18 @@ SoftmaxExecution::SoftmaxExecution(const std::vector &inputs, int axis bool SoftmaxExecution::buildSoftmaxKernel(int localSize) { auto runtime = mOpenCLBackend->getOpenCLRuntime(); - if (mKernel.get() == nullptr) { - std::set buildOptions; - buildOptions.emplace("-DSOFTMAX_LOCAL_SIZE=" + std::to_string(localSize)); - std::string kernelName; - if (mAxis == 1) { - mKernel = runtime->buildKernel("softmax", "softmax_channel", buildOptions); - } else if (mAxis == 2) { - mKernel = runtime->buildKernel("softmax", "softmax_height", buildOptions); - } else { - MNN_ASSERT(mAxis == 3); - mKernel = runtime->buildKernel("softmax", "softmax_width", buildOptions); - } - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); + std::set buildOptions; + buildOptions.emplace("-DSOFTMAX_LOCAL_SIZE=" + std::to_string(localSize)); + std::string kernelName; + if (mAxis == 1) { + mUnits[0].kernel = runtime->buildKernel("softmax", "softmax_channel", buildOptions); + } else if (mAxis == 2) { + mUnits[0].kernel = runtime->buildKernel("softmax", "softmax_height", buildOptions); + } else { + MNN_ASSERT(mAxis == 3); + mUnits[0].kernel = runtime->buildKernel("softmax", "softmax_width", buildOptions); } + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mUnits[0].kernel)); return true; } @@ -48,8 +46,9 @@ int SoftmaxExecution::getLocalSize(int size, int maxGroupSize){ return local_size; } -ErrorCode SoftmaxExecution::onResize(const std::vector &inputs, const std::vector &outputs) { - mOpenCLBackend->startRecord(mRecording); +ErrorCode SoftmaxExecution::onEncode(const std::vector &inputs, const std::vector &outputs) { + mUnits.resize(1); + auto &unit = mUnits[0]; auto MaxLocalSize = std::min(mOpenCLBackend->getOpenCLRuntime()->getMaxWorkItemSizes()[0], mMaxWorkGroupSize); Tensor *input = inputs[0]; Tensor *output = outputs[0]; @@ -80,78 +79,43 @@ ErrorCode SoftmaxExecution::onResize(const std::vector &inputs, const const int channelBlocks = UP_DIV(outputChannels, 4); const int remainChannels = channelBlocks * 4 - outputChannels; + int shape[] = {outputBatch, channelBlocks, outputHeight, outputWidth}; int localSize = getLocalSize(channel, MaxLocalSize); if(localSize < 4){ localSize = 1; } + std::vector mGlobalWorkSize{1, 1, 1}; if(inputBatch == outside && channel == inputChannels && inside == inputWidth * inputHeight){ mAxis = 1; + mGlobalWorkSize = {(uint32_t)(localSize), (uint32_t)outputWidth, (uint32_t)outputHeight * outputBatch}; localSize = getLocalSize(channelBlocks, MaxLocalSize); }else if(inputBatch * inputChannels == outside && channel == inputHeight && inside == inputWidth){ mAxis = 2; + mGlobalWorkSize = {(uint32_t)(localSize), (uint32_t)channelBlocks*outputWidth, (uint32_t)outputBatch}; }else if(inputBatch * inputChannels * inputHeight == outside && channel == inputWidth && inside == 1){ mAxis = 3; + mGlobalWorkSize = {(uint32_t)(localSize), (uint32_t)channelBlocks, (uint32_t)outputBatch*outputHeight}; } buildSoftmaxKernel(localSize); + std::vector mLocalWorkSize{(uint32_t)(localSize), 1, 1, 1}; cl_int ret = CL_SUCCESS; - int shape[] = {outputBatch, channelBlocks, outputHeight, outputWidth}; - if (mAxis == 1) { - mGlobalWorkSize = {(uint32_t)(localSize), (uint32_t)outputWidth, (uint32_t)outputHeight * outputBatch}; - - } else if (mAxis == 2){ - mGlobalWorkSize = {(uint32_t)(localSize), (uint32_t)channelBlocks*outputWidth, (uint32_t)outputBatch}; - } else { - MNN_ASSERT(mAxis == 3); - mGlobalWorkSize = {(uint32_t)(localSize), (uint32_t)channelBlocks, (uint32_t)outputBatch*outputHeight}; - } - mLocalWorkSize = {(uint32_t)(localSize), 1, 1}; - uint32_t idx = 0; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[2]); - - ret |= mKernel.setArg(idx++, openCLImage(input)); - ret |= mKernel.setArg(idx++, openCLImage(output)); - ret |= mKernel.setArg(idx++, remainChannels); - ret |= mKernel.setArg(idx++, shape); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[2]); + + ret |= unit.kernel->get().setArg(idx++, openCLImage(input)); + ret |= unit.kernel->get().setArg(idx++, openCLImage(output)); + ret |= unit.kernel->get().setArg(idx++, remainChannels); + ret |= unit.kernel->get().setArg(idx++, shape); MNN_CHECK_CL_SUCCESS(ret, "setArg SoftmaxExecution"); if(localSize == 1){ - mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), "softmax", mKernel).first; - } - mOpenCLBackend->recordKernel3d(mKernel, mGlobalWorkSize, mLocalWorkSize); - mOpenCLBackend->endRecord(mRecording); - return NO_ERROR; -} - -ErrorCode SoftmaxExecution::onExecute(const std::vector &inputs, const std::vector &outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("start SoftmaxExecution onExecute !\n"); -#endif - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalWorkSize, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Softmax", event}); -#else - if(mOpenCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End SoftmaxExecution onExecute... \n"); -#endif - return NO_ERROR; + mLocalWorkSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, mOpenCLBackend->getOpenCLRuntime(), "softmax", unit.kernel).first; } - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalWorkSize, mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end SoftmaxExecution onExecute !\n"); -#endif - + mOpenCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalWorkSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; + unit.localWorkSize = {mLocalWorkSize[0], mLocalWorkSize[1], mLocalWorkSize[2]}; return NO_ERROR; } @@ -170,7 +134,7 @@ class SoftmaxCreator : public OpenCLBackend::Creator { axis = index[axis]; //1 : channel //2 : height if (1 == axis || 2 == axis || 3 == axis) { - return new SoftmaxExecution(inputs, axis, backend); + return new SoftmaxExecution(inputs, axis, op, backend); } return nullptr; } else { @@ -180,7 +144,7 @@ class SoftmaxCreator : public OpenCLBackend::Creator { } if (1 == axis || 2 == axis || 3 == axis) { - return new SoftmaxExecution(inputs, axis, backend); + return new SoftmaxExecution(inputs, axis, op, backend); } return nullptr; } diff --git a/source/backend/opencl/execution/image/SoftmaxExecution.hpp b/source/backend/opencl/execution/image/SoftmaxExecution.hpp index 3fc64f9a7..371d4a489 100644 --- a/source/backend/opencl/execution/image/SoftmaxExecution.hpp +++ b/source/backend/opencl/execution/image/SoftmaxExecution.hpp @@ -9,31 +9,23 @@ #ifndef SoftmaxExecution_hpp #define SoftmaxExecution_hpp -#include -#include "core/Execution.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "CommonExecution.hpp" namespace MNN { namespace OpenCL { -class SoftmaxExecution : public Execution, public CommonExtension { +class SoftmaxExecution : public CommonExecution { public: - SoftmaxExecution(const std::vector &inputs, int axis, Backend *backend); + SoftmaxExecution(const std::vector &inputs, int axis, const MNN::Op *op, Backend *backend); virtual ~SoftmaxExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; bool buildSoftmaxKernel(int localSize); private: int getLocalSize(int size, int maxGroupSize); - cl::Kernel mKernel; uint32_t mMaxWorkGroupSize; OpenCLBackend *mOpenCLBackend; - std::vector mGlobalWorkSize{1, 1, 1}; - std::vector mLocalWorkSize{1, 1, 1, 1}; int mAxis; }; } // namespace OpenCL diff --git a/source/backend/opencl/execution/image/TrainableParamExecution.hpp b/source/backend/opencl/execution/image/TrainableParamExecution.hpp index 6f7e0549f..08a8212ea 100644 --- a/source/backend/opencl/execution/image/TrainableParamExecution.hpp +++ b/source/backend/opencl/execution/image/TrainableParamExecution.hpp @@ -9,7 +9,7 @@ #ifndef TrainableParamExecution_hpp #define TrainableParamExecution_hpp -#include "backend/opencl/execution/image/CommonExecution.hpp" +#include "CommonExecution.hpp" namespace MNN { namespace OpenCL { diff --git a/source/backend/opencl/execution/image/UnaryExecution.cpp b/source/backend/opencl/execution/image/UnaryExecution.cpp index a706fb023..df2f89959 100644 --- a/source/backend/opencl/execution/image/UnaryExecution.cpp +++ b/source/backend/opencl/execution/image/UnaryExecution.cpp @@ -7,33 +7,20 @@ // #include "backend/opencl/execution/image/UnaryExecution.hpp" -#include "core/Macro.h" -#include "core/TensorUtils.hpp" -#include "backend/opencl/core/OpenCLBackend.hpp" namespace MNN { namespace OpenCL { -UnaryExecution::UnaryExecution(const std::string& compute, Backend* backend) : Execution(backend) { - auto openCLBackend = static_cast(backend); - std::set buildOptions; +UnaryExecution::UnaryExecution(const std::string& compute, const MNN::Op *op, Backend* backend) : CommonExecution(backend, op) { mBuildOptions.emplace(" -DOPERATOR=" + compute); } -ErrorCode UnaryExecution::onResize(const std::vector& inputs, const std::vector& outputs) { +ErrorCode UnaryExecution::onEncode(const std::vector& inputs, const std::vector& outputs) { + mUnits.resize(1); + auto &unit = mUnits[0]; Tensor* input = inputs[0]; Tensor* output = outputs[0]; auto openCLBackend = static_cast(backend()); - - auto dataType = inputs[0]->getType(); - if (dataType.code == halide_type_int){ - mBuildOptions.emplace("-DOPENCL_INPUT_INT"); - } - // FUNC_PRINT_ALL(buildOptions.begin()->c_str(), s); - auto runtime = openCLBackend->getOpenCLRuntime(); - mKernel = runtime->buildKernel("unary", "unary", mBuildOptions); - mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(mKernel)); - openCLBackend->startRecord(mRecording); - + auto runtime = openCLBackend->getOpenCLRuntime(); std::vector inputShape = tensorShapeFormat(input); std::vector outputShape = tensorShapeFormat(output); @@ -49,56 +36,32 @@ ErrorCode UnaryExecution::onResize(const std::vector& inputs, const std static_cast(outputWidth), static_cast(batch * outputHeight), }; + + std::set buildOptions = mBuildOptions; + auto dataType = inputs[0]->getType(); + if (dataType.code == halide_type_int){ + buildOptions.emplace("-DOPENCL_INPUT_INT"); + } + unit.kernel = runtime->buildKernel("unary", "unary", buildOptions, inputs[0], outputs[0]); + mMaxWorkGroupSize = static_cast(runtime->getMaxWorkGroupSize(unit.kernel)); uint32_t idx = 0; cl_int ret = CL_SUCCESS; - ret |= mKernel.setArg(idx++, mGlobalWorkSize[0]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[1]); - ret |= mKernel.setArg(idx++, mGlobalWorkSize[2]); - ret |= mKernel.setArg(idx++, openCLImage(input)); - ret |= mKernel.setArg(idx++, openCLImage(output)); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[0]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[1]); + ret |= unit.kernel->get().setArg(idx++, mGlobalWorkSize[2]); + ret |= unit.kernel->get().setArg(idx++, openCLImage(input)); + ret |= unit.kernel->get().setArg(idx++, openCLImage(output)); MNN_CHECK_CL_SUCCESS(ret, "setArg UnaryExecution"); std::string name = "unary"; - const std::vector lws = - localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, openCLBackend->getOpenCLRuntime(), name, mKernel).first; - mLocalSize = lws; - openCLBackend->recordKernel3d(mKernel, mGlobalWorkSize, mLocalSize); - openCLBackend->endRecord(mRecording); + mLocalSize = localWS3DDefault(mGlobalWorkSize, mMaxWorkGroupSize, runtime, name, unit.kernel).first; + openCLBackend->recordKernel3d(unit.kernel, mGlobalWorkSize, mLocalSize); + unit.globalWorkSize = {mGlobalWorkSize[0], mGlobalWorkSize[1], mGlobalWorkSize[2]}; + unit.localWorkSize = {mLocalSize[0], mLocalSize[1], mLocalSize[2]}; return NO_ERROR; } -ErrorCode UnaryExecution::onExecute(const std::vector& inputs, const std::vector& outputs) { -#ifdef LOG_VERBOSE - MNN_PRINT("start UnaryExecution onExecute..."); -#endif - auto mOpenCLBackend = static_cast(backend()); - -#ifdef ENABLE_OPENCL_TIME_PROFILER - cl::Event event; - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalSize, - mOpenCLBackend->getOpenCLRuntime(), &event); - - mOpenCLBackend->getOpenCLRuntime()->pushEvent({"Unary", event}); -#else - auto openCLBackend = static_cast(backend()); - if(openCLBackend->isUseRecordQueue()){ - if(mOpenCLBackend->isDevideOpRecord()) - mOpenCLBackend->addRecord(mRecording); -#ifdef LOG_VERBOSE - MNN_PRINT("End UnaryExecution onExecute... \n"); -#endif - return NO_ERROR; - } - run3DKernelDefault(mKernel, mGlobalWorkSize, mLocalSize, - mOpenCLBackend->getOpenCLRuntime()); -#endif - -#ifdef LOG_VERBOSE - MNN_PRINT("end UnaryExecution onExecute..."); -#endif - return NO_ERROR; -} class UnaryCreator : public OpenCLBackend::Creator { public: @@ -107,75 +70,75 @@ class UnaryCreator : public OpenCLBackend::Creator { if (op->type() == OpType_UnaryOp) { switch (op->main_as_UnaryOp()->opType()) { case UnaryOpOperation_ABS: - return new UnaryExecution("fabs(convert_float4(in))", backend); + return new UnaryExecution("fabs(convert_float4(in))", op, backend); case UnaryOpOperation_SQUARE: - return new UnaryExecution("in*in", backend); + return new UnaryExecution("in*in", op, backend); case UnaryOpOperation_RSQRT: - return new UnaryExecution("rsqrt(convert_float4(in)>(float4)(0.000001)?convert_float4(in):(float4)(0.000001))", backend); + return new UnaryExecution("rsqrt(convert_float4(in)>(float4)(0.000001)?convert_float4(in):(float4)(0.000001))", op, backend); case UnaryOpOperation_NEG: - return new UnaryExecution("-(in)", backend); + return new UnaryExecution("-(in)", op, backend); case UnaryOpOperation_EXP: - return new UnaryExecution("exp(convert_float4(in))", backend); + return new UnaryExecution("exp(convert_float4(in))", op, backend); case UnaryOpOperation_COS: - return new UnaryExecution("cos(convert_float4(in))", backend); + return new UnaryExecution("cos(convert_float4(in))", op, backend); case UnaryOpOperation_SIN: - return new UnaryExecution("sin(convert_float4(in))", backend); + return new UnaryExecution("sin(convert_float4(in))", op, backend); case UnaryOpOperation_TAN: - return new UnaryExecution("tan(convert_float4(in))", backend); + return new UnaryExecution("tan(convert_float4(in))", op, backend); case UnaryOpOperation_ATAN: - return new UnaryExecution("atan(convert_float4(in))", backend); + return new UnaryExecution("atan(convert_float4(in))", op, backend); case UnaryOpOperation_SQRT: - return new UnaryExecution("sqrt(convert_float4(in))", backend); + return new UnaryExecution("sqrt(convert_float4(in))", op, backend); case UnaryOpOperation_CEIL: - return new UnaryExecution("ceil(convert_float4(in))", backend); + return new UnaryExecution("ceil(convert_float4(in))", op, backend); case UnaryOpOperation_RECIPROCAL: - return new UnaryExecution("native_recip(convert_float4(in))", backend); + return new UnaryExecution("native_recip(convert_float4(in))", op, backend); case UnaryOpOperation_LOG1P: - return new UnaryExecution("log1p(convert_float4(in))", backend); + return new UnaryExecution("log1p(convert_float4(in))", op, backend); case UnaryOpOperation_LOG: - return new UnaryExecution("native_log(convert_float4(in)>(float4)(0.0000001)?convert_float4(in):(float4)(0.0000001))", backend); + return new UnaryExecution("native_log(convert_float4(in)>(float4)(0.0000001)?convert_float4(in):(float4)(0.0000001))", op, backend); case UnaryOpOperation_FLOOR: - return new UnaryExecution("floor(convert_float4(in))", backend); + return new UnaryExecution("floor(convert_float4(in))", op, backend); case UnaryOpOperation_BNLL: - return new UnaryExecution("in>(FLOAT4)((FLOAT)0)?(in+native_log(exp(convert_float4(-(in)))+(float4)(1.0))):(native_log(exp(convert_float4(in))+(float4)(1.0)))", backend); + return new UnaryExecution("in>(float4)((float)0)?(in+native_log(exp(convert_float4(-(in)))+(float4)(1.0))):(native_log(exp(convert_float4(in))+(float4)(1.0)))", op, backend); case UnaryOpOperation_ACOSH: - return new UnaryExecution("acosh(convert_float4(in))", backend); + return new UnaryExecution("acosh(convert_float4(in))", op, backend); case UnaryOpOperation_SINH: - return new UnaryExecution("sinh(convert_float4(in))", backend); + return new UnaryExecution("sinh(convert_float4(in))", op, backend); case UnaryOpOperation_ASINH: - return new UnaryExecution("asinh(convert_float4(in))", backend); + return new UnaryExecution("asinh(convert_float4(in))", op, backend); case UnaryOpOperation_ATANH: - return new UnaryExecution("atanh(convert_float4(in))", backend); + return new UnaryExecution("atanh(convert_float4(in))", op, backend); case UnaryOpOperation_SIGN: - return new UnaryExecution("sign(convert_float4(in))", backend); + return new UnaryExecution("sign(convert_float4(in))", op, backend); case UnaryOpOperation_ROUND: - return new UnaryExecution("round(convert_float4(in))", backend); + return new UnaryExecution("round(convert_float4(in))", op, backend); case UnaryOpOperation_COSH: - return new UnaryExecution("cosh(convert_float4(in))", backend); + return new UnaryExecution("cosh(convert_float4(in))", op, backend); case UnaryOpOperation_ERF: - return new UnaryExecution("erf(convert_float4(in))", backend); + return new UnaryExecution("erf(convert_float4(in))", op, backend); case UnaryOpOperation_ERFC: - return new UnaryExecution("erfc(convert_float4(in))", backend); + return new UnaryExecution("erfc(convert_float4(in))", op, backend); case UnaryOpOperation_EXPM1: - return new UnaryExecution("expm1(convert_float4(in))", backend); + return new UnaryExecution("expm1(convert_float4(in))", op, backend); case UnaryOpOperation_SIGMOID: - return new UnaryExecution("native_recip((float4)1+native_exp(convert_float4(-in)))", backend); + return new UnaryExecution("native_recip((float4)1+native_exp(convert_float4(-in)))", op, backend); case UnaryOpOperation_TANH: - return new UnaryExecution("tanh(convert_float4(in))", backend); + return new UnaryExecution("tanh(convert_float4(in))", op, backend); case UnaryOpOperation_HARDSWISH: - return new UnaryExecution("convert_float4(in)>(float4)(-3.0f)?(convert_float4(in)<(float4)(3.0f)?((convert_float4(in)*(convert_float4(in)+(float4)3.0f))/(float4)6.0f):convert_float4(in)):(float4)(0.0f)", backend); + return new UnaryExecution("convert_float4(in)>(float4)(-3.0f)?(convert_float4(in)<(float4)(3.0f)?((convert_float4(in)*(convert_float4(in)+(float4)3.0f))/(float4)6.0f):convert_float4(in)):(float4)(0.0f)", op, backend); case UnaryOpOperation_GELU: - return new UnaryExecution("gelu(convert_float4(in))", backend); + return new UnaryExecution("gelu(convert_float4(in))", op, backend); default: break; } return nullptr; } if (op->type() == OpType_Sigmoid) { - return new UnaryExecution("native_recip((float4)(1.0)+native_exp(convert_float4(-(in))))", backend); + return new UnaryExecution("native_recip((float4)(1.0)+native_exp(convert_float4(-(in))))", op, backend); } if (op->type() == OpType_TanH) { - return new UnaryExecution("tanh(convert_float4(in))", backend); + return new UnaryExecution("tanh(convert_float4(in))", op, backend); } return nullptr; } diff --git a/source/backend/opencl/execution/image/UnaryExecution.hpp b/source/backend/opencl/execution/image/UnaryExecution.hpp index 1fa8b4fe6..ccbcc62ae 100644 --- a/source/backend/opencl/execution/image/UnaryExecution.hpp +++ b/source/backend/opencl/execution/image/UnaryExecution.hpp @@ -9,27 +9,19 @@ #ifndef UnaryExecution_hpp #define UnaryExecution_hpp -#include "core/Execution.hpp" - -#include -#include "MNN_generated.h" -#include "backend/opencl/core/OpenCLBackend.hpp" -#include "backend/opencl/core/OpenCLRunningUtils.hpp" -#include "backend/opencl/execution/image/CommonExtension.hpp" +#include "CommonExecution.hpp" namespace MNN { namespace OpenCL { -class UnaryExecution : public Execution, public CommonExtension { +class UnaryExecution : public CommonExecution { public: - UnaryExecution(const std::string &compute, Backend *backend); + UnaryExecution(const std::string &compute, const MNN::Op *op, Backend *backend); virtual ~UnaryExecution() = default; - virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override; - virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override; + virtual ErrorCode onEncode(const std::vector &inputs, const std::vector &outputs) override; private: - cl::Kernel mKernel; uint32_t mMaxWorkGroupSize; std::vector mGlobalWorkSize = {1, 1, 1}; std::vector mLocalSize = {1, 1, 1}; diff --git a/source/backend/vulkan/buffer/backend/VulkanBackend.cpp b/source/backend/vulkan/buffer/backend/VulkanBackend.cpp index f4a0d2c6f..7ddb8c713 100644 --- a/source/backend/vulkan/buffer/backend/VulkanBackend.cpp +++ b/source/backend/vulkan/buffer/backend/VulkanBackend.cpp @@ -35,15 +35,8 @@ static inline std::map* getCreatorMap() { return gCreator; } -template -void _copyIn(const T* src, float* dst, size_t size) { - for (int i=0; i -void _copyOut(const float* src, T* dst, size_t size) { +template +void _copy(const T0* src, T1* dst, size_t size) { for (int i=0; imap(offset); - auto dataType = dest->getType(); - auto eleSize = dest->elementSize(); - if (dataType == halide_type_of()) { - ::memcpy(dest->host(), sourcePtr, dest->size()); - } - else if (dataType == halide_type_of()) { - _copyOut(sourcePtr, dest->host(), eleSize); - } - else if (dataType == halide_type_of()) { - _copyOut(sourcePtr, dest->host(), eleSize); - } - else if (dataType == halide_type_of()) { - _copyOut(sourcePtr, dest->host(), eleSize); - } - else if (dataType == halide_type_of()) { - _copyOut(sourcePtr, dest->host(), eleSize); - } else { - MNN_PRINT("Don't support typecode = %d, bits = %d\n", dataType.code, dataType.bits); - } + ::memcpy(dest->host(), sourcePtr, dest->usize()); source->unmap(); } static void _copyTensorToBuffer(const Tensor* source, const VulkanBuffer* dest, size_t offset) { auto destPtr = (float*)dest->map(offset); - auto dataType = source->getType(); - auto eleSize = source->elementSize(); - if (dataType == halide_type_of()) { - ::memcpy(destPtr, source->host(), source->size()); - } - else if (dataType == halide_type_of()) { - _copyIn(source->host(), destPtr, eleSize); - } - else if (dataType == halide_type_of()) { - _copyIn(source->host(), destPtr, eleSize); - } - else if (dataType == halide_type_of()) { - _copyIn(source->host(), destPtr, eleSize); - } - else if (dataType == halide_type_of()) { - _copyIn(source->host(), destPtr, eleSize); - } else { - MNN_PRINT("Don't support typecode = %d, bits = %d\n", dataType.code, dataType.bits); - } + ::memcpy(destPtr, source->host(), source->usize()); dest->unmap(); } @@ -101,8 +58,9 @@ VulkanBackend::VulkanBackend(const VulkanRuntime* runtime, const Backend::Info& mRuntime = runtime; mDirect = Backend::Info::INDIRECT != info.mode; std::shared_ptr allocReal = BufferAllocator::Allocator::createRecurse(runtime->mBufferPool.get()); - - mDynamicBufferPool.reset(new EagerBufferAllocator(allocReal, mRuntime->mDevice->proty().limits.nonCoherentAtomSize)); + mDynamicBufferPool.resize(2); + mDynamicBufferPool[0].reset(new EagerBufferAllocator(allocReal, mRuntime->mDevice->proty().limits.nonCoherentAtomSize)); + mCurrentDynamicBufferPool = mDynamicBufferPool[0].get(); auto& dev = device(); mFence = std::make_shared(dev); @@ -193,12 +151,23 @@ Backend::MemObj* VulkanBackend::onAcquire(const Tensor* tensor, StorageType stor return mem; } bool seperate = storageType == Backend::DYNAMIC_SEPERATE; - auto newBuffer = mDynamicBufferPool->alloc(alignSize, seperate); - auto mem = new VulkanMemRelease(mDynamicBufferPool.get(), newBuffer, alignSize); + auto newBuffer = mCurrentDynamicBufferPool->alloc(alignSize, seperate); + auto mem = new VulkanMemRelease(mCurrentDynamicBufferPool, newBuffer, alignSize); MTensor->buffer().device = (uint64_t)(newBuffer.first); des->extra.offset = newBuffer.second; return mem; } +bool VulkanBackend::onSelectDynamicAllocator(int index, int maxIndex) { + if (maxIndex > 2 || index >= 2 || index < 0) { + return false; + } + if (mDynamicBufferPool[1].get() == nullptr) { + std::shared_ptr allocReal = BufferAllocator::Allocator::createRecurse(mRuntime->mBufferPool.get()); + mDynamicBufferPool[1].reset(new EagerBufferAllocator(allocReal, mRuntime->mDevice->proty().limits.nonCoherentAtomSize)); + } + mCurrentDynamicBufferPool = mDynamicBufferPool[index].get(); + return true; +} std::shared_ptr VulkanBackend::allocUniform(const void* src, int size) { auto rt = const_cast(mRuntime); @@ -210,7 +179,7 @@ void VulkanBackend::recycleUniform(std::shared_ptr buffer) { } bool VulkanBackend::onClearBuffer() { - mDynamicBufferPool->release(false); + mCurrentDynamicBufferPool->release(false); return true; } Execution* VulkanBackend::onCreate(const std::vector& inputs, const std::vector& outputs, @@ -307,6 +276,7 @@ void VulkanBackend::copyToGPUBuffer(const void* src, VkBuffer buffer, VkDeviceSi cmdbuffer->end(); pushCommand(cmdbuffer->get()); _finish(); + mHostBuffer.reset(); } void VulkanBackend::_requireHostBuffer(size_t size) const { _finish(); diff --git a/source/backend/vulkan/buffer/backend/VulkanBackend.hpp b/source/backend/vulkan/buffer/backend/VulkanBackend.hpp index 469c1a481..8a1cf0ea1 100644 --- a/source/backend/vulkan/buffer/backend/VulkanBackend.hpp +++ b/source/backend/vulkan/buffer/backend/VulkanBackend.hpp @@ -27,6 +27,7 @@ class VulkanBackend : public Backend { const MNN::Op* op) override; virtual void onExecuteBegin() const override; virtual void onExecuteEnd() const override; + virtual bool onSelectDynamicAllocator(int index, int maxIndex) override; virtual void onResizeBegin() override; virtual ErrorCode onResizeEnd() override; virtual void onCopyBuffer(const Tensor* srcTensor, const Tensor* dstTensor) const override; @@ -46,7 +47,7 @@ class VulkanBackend : public Backend { return (* mRuntime->mMemoryPool); } BufferAllocator* getDynamicMemoryPool() const { - return mDynamicBufferPool.get(); + return mCurrentDynamicBufferPool; } virtual bool onGetTensorInfo(const Tensor* tensor, void* dstInfo) override; @@ -99,7 +100,8 @@ class VulkanBackend : public Backend { std::shared_ptr mCmdBuffer; std::shared_ptr mCmdBufferForCopy; - std::shared_ptr mDynamicBufferPool; + BufferAllocator* mCurrentDynamicBufferPool = nullptr; + std::vector> mDynamicBufferPool; mutable std::vector mCmdBuffers; mutable std::shared_ptr mFence; diff --git a/source/backend/vulkan/buffer/compiler/AllShader.cpp b/source/backend/vulkan/buffer/compiler/AllShader.cpp index 5b4bbe106..f340aa131 100644 --- a/source/backend/vulkan/buffer/compiler/AllShader.cpp +++ b/source/backend/vulkan/buffer/compiler/AllShader.cpp @@ -1504,7 +1504,7 @@ unsigned int glsl_deconvolution_RELU6_comp_len = 5456; const unsigned char glsl_select_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1522,25 +1522,25 @@ const unsigned char glsl_select_comp[] = { 0x06, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x00, 0x00, - 0x05, 0x00, 0x06, 0x00, 0x22, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x05, 0x00, 0x06, 0x00, 0x21, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x75, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x35, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x23, 0x00, 0x00, 0x00, 0x75, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x05, 0x00, 0x06, 0x00, - 0x3a, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, + 0x38, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x06, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, + 0x4e, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x32, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1548,39 +1548,39 @@ const unsigned char glsl_select_comp[] = { 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, - 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x35, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x37, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, - 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x3a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x51, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, @@ -1602,112 +1602,111 @@ const unsigned char glsl_select_comp[] = { 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x34, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x35, 0x00, 0x00, 0x00, - 0x34, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x36, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x39, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x3a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x2c, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x05, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x1d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, - 0xba, 0x00, 0x05, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, - 0xaa, 0x00, 0x05, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, - 0x2f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x32, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x26, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x26, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, - 0x37, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x03, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x33, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x26, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0x45, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x33, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x33, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x4c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x4b, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x4b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x26, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0xad, 0x00, 0x05, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x26, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x5a, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x30, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x30, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x30, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x29, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x49, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x59, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x29, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x29, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_select_comp_len = 2436; +unsigned int glsl_select_comp_len = 2420; const unsigned char glsl_norm_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, @@ -4627,7 +4626,7 @@ unsigned int glsl_gridSampleNearest_PAD_MODE_ZEROS_comp_len = 3484; const unsigned char glsl_binary_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -4682,7 +4681,7 @@ const unsigned char glsl_binary_comp[] = { 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, @@ -4724,9 +4723,9 @@ const unsigned char glsl_binary_comp[] = { 0x20, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x68, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, @@ -4760,7 +4759,7 @@ const unsigned char glsl_binary_comp[] = { 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, @@ -4771,14 +4770,14 @@ const unsigned char glsl_binary_comp[] = { 0xfa, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5b, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5b, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x03, 0x00, 0x67, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; @@ -4786,7 +4785,7 @@ unsigned int glsl_binary_comp_len = 1860; const unsigned char glsl_binary_ADD_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -4854,7 +4853,7 @@ const unsigned char glsl_binary_ADD_comp[] = { 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, @@ -4901,8 +4900,8 @@ const unsigned char glsl_binary_ADD_comp[] = { 0x65, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x6b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, @@ -4937,7 +4936,7 @@ const unsigned char glsl_binary_ADD_comp[] = { 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, @@ -4958,10 +4957,10 @@ const unsigned char glsl_binary_ADD_comp[] = { 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x75, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, - 0x75, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, @@ -4973,19 +4972,19 @@ const unsigned char glsl_binary_ADD_comp[] = { 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x03, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; unsigned int glsl_binary_ADD_comp_len = 2340; -const unsigned char glsl_binary_SUB_comp[] = { +const unsigned char glsl_binary_ATAN2_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -5053,7 +5052,7 @@ const unsigned char glsl_binary_SUB_comp[] = { 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, @@ -5100,8 +5099,8 @@ const unsigned char glsl_binary_SUB_comp[] = { 0x65, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x6b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, @@ -5136,7 +5135,7 @@ const unsigned char glsl_binary_SUB_comp[] = { 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, @@ -5157,34 +5156,35 @@ const unsigned char glsl_binary_SUB_comp[] = { 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x75, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, - 0x75, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x5a, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x5e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, - 0x61, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x03, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0x7a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_SUB_comp_len = 2340; +unsigned int glsl_binary_ATAN2_comp_len = 2348; -const unsigned char glsl_binary_MUL_comp[] = { +const unsigned char glsl_binary_SUB_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -5252,7 +5252,7 @@ const unsigned char glsl_binary_MUL_comp[] = { 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, @@ -5299,8 +5299,8 @@ const unsigned char glsl_binary_MUL_comp[] = { 0x65, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x6b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, @@ -5335,7 +5335,7 @@ const unsigned char glsl_binary_MUL_comp[] = { 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, @@ -5356,10 +5356,10 @@ const unsigned char glsl_binary_MUL_comp[] = { 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x75, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, - 0x75, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, @@ -5371,19 +5371,19 @@ const unsigned char glsl_binary_MUL_comp[] = { 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x03, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_MUL_comp_len = 2340; +unsigned int glsl_binary_SUB_comp_len = 2340; -const unsigned char glsl_binary_DIV_comp[] = { +const unsigned char glsl_binary_MUL_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -5451,7 +5451,7 @@ const unsigned char glsl_binary_DIV_comp[] = { 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, @@ -5498,8 +5498,8 @@ const unsigned char glsl_binary_DIV_comp[] = { 0x65, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x6b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, @@ -5534,7 +5534,7 @@ const unsigned char glsl_binary_DIV_comp[] = { 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, @@ -5555,10 +5555,10 @@ const unsigned char glsl_binary_DIV_comp[] = { 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x75, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, - 0x75, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, @@ -5570,19 +5570,19 @@ const unsigned char glsl_binary_DIV_comp[] = { 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x03, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_DIV_comp_len = 2340; +unsigned int glsl_binary_MUL_comp_len = 2340; -const unsigned char glsl_binary_POW_comp[] = { +const unsigned char glsl_binary_DIV_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -5650,7 +5650,7 @@ const unsigned char glsl_binary_POW_comp[] = { 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, @@ -5697,8 +5697,8 @@ const unsigned char glsl_binary_POW_comp[] = { 0x65, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x6b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, @@ -5733,7 +5733,7 @@ const unsigned char glsl_binary_POW_comp[] = { 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, @@ -5754,35 +5754,34 @@ const unsigned char glsl_binary_POW_comp[] = { 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x75, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, - 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x5e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x76, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x62, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0x6a, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, - 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0x7a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_POW_comp_len = 2348; +unsigned int glsl_binary_DIV_comp_len = 2340; -const unsigned char glsl_binary_VMAX_comp[] = { +const unsigned char glsl_binary_POW_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -5850,7 +5849,7 @@ const unsigned char glsl_binary_VMAX_comp[] = { 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, @@ -5897,8 +5896,8 @@ const unsigned char glsl_binary_VMAX_comp[] = { 0x65, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x6b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, @@ -5933,7 +5932,7 @@ const unsigned char glsl_binary_VMAX_comp[] = { 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, @@ -5954,10 +5953,10 @@ const unsigned char glsl_binary_VMAX_comp[] = { 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x75, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, @@ -5970,19 +5969,19 @@ const unsigned char glsl_binary_VMAX_comp[] = { 0x28, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x76, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0x6a, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_VMAX_comp_len = 2348; +unsigned int glsl_binary_POW_comp_len = 2348; -const unsigned char glsl_binary_SQUDIFF_comp[] = { +const unsigned char glsl_binary_VMAX_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -6013,10 +6012,10 @@ const unsigned char glsl_binary_SQUDIFF_comp[] = { 0x06, 0x00, 0x05, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x31, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x68, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x05, 0x00, 0x05, 0x00, 0x64, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -6042,15 +6041,15 @@ const unsigned char glsl_binary_SQUDIFF_comp[] = { 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x68, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x6a, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, @@ -6087,18 +6086,18 @@ const unsigned char glsl_binary_SQUDIFF_comp[] = { 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x65, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, - 0x64, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x69, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x6f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, @@ -6133,7 +6132,7 @@ const unsigned char glsl_binary_SQUDIFF_comp[] = { 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, @@ -6154,36 +6153,35 @@ const unsigned char glsl_binary_SQUDIFF_comp[] = { 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x79, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, - 0x79, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, - 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x61, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x62, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x62, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x7a, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0x6e, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_SQUDIFF_comp_len = 2360; +unsigned int glsl_binary_VMAX_comp_len = 2348; -const unsigned char glsl_binary_VMIN_comp[] = { +const unsigned char glsl_binary_SQUDIFF_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -6214,10 +6212,10 @@ const unsigned char glsl_binary_VMIN_comp[] = { 0x06, 0x00, 0x05, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x31, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x64, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x05, 0x00, 0x05, 0x00, 0x68, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -6243,15 +6241,15 @@ const unsigned char glsl_binary_VMIN_comp[] = { 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x66, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x75, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, @@ -6288,18 +6286,18 @@ const unsigned char glsl_binary_VMIN_comp[] = { 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x61, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x65, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x6b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, @@ -6334,7 +6332,7 @@ const unsigned char glsl_binary_VMIN_comp[] = { 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, @@ -6355,35 +6353,36 @@ const unsigned char glsl_binary_VMIN_comp[] = { 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x75, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, - 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x5e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x76, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x62, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x61, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x62, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x62, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x7f, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0x6a, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x73, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_VMIN_comp_len = 2348; +unsigned int glsl_binary_SQUDIFF_comp_len = 2360; -const unsigned char glsl_binary_LESS_comp[] = { +const unsigned char glsl_binary_VMIN_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -6414,10 +6413,10 @@ const unsigned char glsl_binary_LESS_comp[] = { 0x06, 0x00, 0x05, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x31, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x68, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x05, 0x00, 0x05, 0x00, 0x64, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -6443,15 +6442,15 @@ const unsigned char glsl_binary_LESS_comp[] = { 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x68, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x6a, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, @@ -6487,24 +6486,19 @@ const unsigned char glsl_binary_LESS_comp[] = { 0x42, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2c, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x69, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x6f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, @@ -6539,7 +6533,7 @@ const unsigned char glsl_binary_LESS_comp[] = { 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, @@ -6560,36 +6554,35 @@ const unsigned char glsl_binary_LESS_comp[] = { 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x79, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x05, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, - 0x79, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x5e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x64, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, - 0x6a, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x03, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0x7a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_LESS_comp_len = 2424; +unsigned int glsl_binary_VMIN_comp_len = 2348; -const unsigned char glsl_binary_LESSEQUAL_comp[] = { +const unsigned char glsl_binary_LESS_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -6657,7 +6650,7 @@ const unsigned char glsl_binary_LESSEQUAL_comp[] = { 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, @@ -6674,128 +6667,131 @@ const unsigned char glsl_binary_LESSEQUAL_comp[] = { 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x26, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x2b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x42, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2c, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x40, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x41, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x69, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x6f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x67, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x39, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x34, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x32, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x35, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x45, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x4e, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x79, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x05, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, - 0x79, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x5e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x64, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, - 0x6a, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x03, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0x52, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0xb8, 0x00, 0x05, 0x00, 0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x64, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_LESSEQUAL_comp_len = 2424; +unsigned int glsl_binary_LESS_comp_len = 2456; -const unsigned char glsl_binary_GREATER_comp[] = { +const unsigned char glsl_binary_LESSEQUAL_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -6863,7 +6859,7 @@ const unsigned char glsl_binary_GREATER_comp[] = { 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, @@ -6880,128 +6876,131 @@ const unsigned char glsl_binary_GREATER_comp[] = { 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x26, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x2b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x42, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2c, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x40, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x41, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x69, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x6f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x67, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x39, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x34, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x32, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x35, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x45, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x4e, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x79, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0xba, 0x00, 0x05, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, - 0x79, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x5e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x64, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, - 0x6a, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x03, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0x52, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0xbc, 0x00, 0x05, 0x00, 0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x64, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_GREATER_comp_len = 2424; +unsigned int glsl_binary_LESSEQUAL_comp_len = 2456; -const unsigned char glsl_binary_GREATEREQUAL_comp[] = { +const unsigned char glsl_binary_GREATER_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -7069,7 +7068,7 @@ const unsigned char glsl_binary_GREATEREQUAL_comp[] = { 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, @@ -7086,128 +7085,131 @@ const unsigned char glsl_binary_GREATEREQUAL_comp[] = { 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x26, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x2b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x42, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2c, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x40, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x41, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x69, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x6f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x67, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x39, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x34, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x32, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x35, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x45, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x4e, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x79, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x05, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, - 0x79, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x5e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x64, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, - 0x6a, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x03, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0x52, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x05, 0x00, 0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x64, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_GREATEREQUAL_comp_len = 2424; +unsigned int glsl_binary_GREATER_comp_len = 2456; -const unsigned char glsl_binary_EQUAL_comp[] = { +const unsigned char glsl_binary_GREATEREQUAL_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -7275,7 +7277,7 @@ const unsigned char glsl_binary_EQUAL_comp[] = { 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, @@ -7292,128 +7294,131 @@ const unsigned char glsl_binary_EQUAL_comp[] = { 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x26, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x2b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x42, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2c, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x40, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x41, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x69, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x6f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x67, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x39, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x34, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x32, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x35, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x45, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x4e, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x79, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x05, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, - 0x79, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x5e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x64, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, - 0x6a, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x03, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0x52, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0xbe, 0x00, 0x05, 0x00, 0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x64, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_EQUAL_comp_len = 2424; +unsigned int glsl_binary_GREATEREQUAL_comp_len = 2456; -const unsigned char glsl_binary_NOTEQUAL_comp[] = { +const unsigned char glsl_binary_EQUAL_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -7481,7 +7486,7 @@ const unsigned char glsl_binary_NOTEQUAL_comp[] = { 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, @@ -7498,128 +7503,131 @@ const unsigned char glsl_binary_NOTEQUAL_comp[] = { 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x26, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x2b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x42, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2c, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x40, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x41, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x69, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x6f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x67, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x39, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x34, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x32, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x35, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x45, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x4e, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x79, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x05, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, - 0x79, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x5e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x64, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, - 0x6a, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x03, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0x52, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x05, 0x00, 0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x64, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_NOTEQUAL_comp_len = 2424; +unsigned int glsl_binary_EQUAL_comp_len = 2456; -const unsigned char glsl_binary_VMOD_comp[] = { +const unsigned char glsl_binary_NOTEQUAL_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -7650,10 +7658,10 @@ const unsigned char glsl_binary_VMOD_comp[] = { 0x06, 0x00, 0x05, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x31, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x64, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x05, 0x00, 0x05, 0x00, 0x68, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -7679,15 +7687,15 @@ const unsigned char glsl_binary_VMOD_comp[] = { 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x66, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, @@ -7704,38 +7712,247 @@ const unsigned char glsl_binary_VMOD_comp[] = { 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x26, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x2b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x42, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x61, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x65, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x40, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x41, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x67, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x39, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0xb7, 0x00, 0x05, 0x00, 0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x64, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_NOTEQUAL_comp_len = 2456; + +const unsigned char glsl_binary_VMOD_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x41, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x31, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x64, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x6b, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, @@ -7770,7 +7987,7 @@ const unsigned char glsl_binary_VMOD_comp[] = { 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, @@ -7791,10 +8008,10 @@ const unsigned char glsl_binary_VMOD_comp[] = { 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x75, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x05, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, - 0x75, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, @@ -7806,19 +8023,19 @@ const unsigned char glsl_binary_VMOD_comp[] = { 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x03, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; unsigned int glsl_binary_VMOD_comp_len = 2340; -const unsigned char glsl_matmulunit_HAS_BIAS_comp[] = { +const unsigned char glsl_binary_FLOORDIV_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x12, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -7831,1404 +8048,1198 @@ const unsigned char glsl_matmulunit_HAS_BIAS_comp[] = { 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, - 0x64, 0x65, 0x5f, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, - 0x64, 0x65, 0x5f, 0x61, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, - 0x64, 0x65, 0x5f, 0x62, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, - 0x64, 0x65, 0x5f, 0x63, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x73, 0x74, 0x65, 0x70, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x69, 0x74, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x73, 0x33, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x57, 0x00, 0x00, 0x00, - 0x75, 0x4f, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, 0x73, 0x34, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, - 0x66, 0x00, 0x00, 0x00, 0x75, 0x41, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x73, 0x35, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x74, 0x00, 0x00, 0x00, 0x75, 0x42, 0x4f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x73, 0x36, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x82, 0x00, 0x00, 0x00, - 0x75, 0x43, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x03, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x73, 0x30, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0xb7, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x41, 0x00, - 0x05, 0x00, 0x03, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x73, 0x31, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0xc3, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x00, - 0x05, 0x00, 0x03, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x73, 0x32, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0xd5, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x00, - 0x05, 0x00, 0x03, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x64, 0x30, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x41, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0xe9, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x55, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x57, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x57, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x64, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x71, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x72, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x74, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x74, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x7f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x82, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x82, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xb4, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xb5, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xb7, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xc0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xc1, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xc3, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xd2, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xd3, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xd5, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xd5, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xe6, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xe7, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xe9, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xe9, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xfc, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x09, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x31, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x65, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x72, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x56, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x65, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x71, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x73, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x81, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0xb4, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0xb5, 0x00, 0x00, 0x00, - 0xb4, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xb6, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0xb6, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0xc1, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0xc1, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xc2, 0x00, 0x00, 0x00, - 0xc3, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0xd3, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xd4, 0x00, 0x00, 0x00, - 0xd5, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0xe7, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xe8, 0x00, 0x00, 0x00, - 0xe9, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, - 0xfb, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x26, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x31, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, - 0x33, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x32, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x4e, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5a, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x52, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x52, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, - 0x51, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x5e, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x05, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x62, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x61, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x61, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x68, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x69, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, - 0x6a, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x62, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x62, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x0d, 0x01, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x03, 0x01, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, - 0xaf, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, - 0x6d, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x6e, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, - 0x6e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, - 0x77, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x05, 0x01, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x70, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x70, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, - 0x62, 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, - 0x7a, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, - 0x7e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x7d, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x86, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, - 0x0e, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x7e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x7e, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, - 0x0e, 0x01, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, - 0x7d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x8c, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, - 0x8c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x95, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x95, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa0, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0xa2, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa4, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, - 0xa6, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, - 0xa4, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0xab, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xab, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x53, 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, - 0x91, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, - 0xac, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x10, 0x01, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, - 0xd0, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x30, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0xad, 0x00, 0x00, 0x00, - 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0xb2, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0xac, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x18, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x95, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, - 0x10, 0x01, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0xbc, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, - 0xbe, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, - 0xbf, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x18, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0xa1, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, - 0x10, 0x01, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, - 0xc8, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, - 0xca, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0xc9, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, - 0xcb, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, - 0x53, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x32, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, - 0x11, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd0, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0xab, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xad, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd7, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, - 0xda, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xdc, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, - 0xd7, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x18, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0xd9, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, - 0xe1, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, - 0xe3, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0xe2, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, - 0xe4, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, - 0x53, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, - 0xe4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xeb, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, - 0xec, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xee, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xf2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, - 0xee, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x18, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0xcf, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, - 0x45, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xfa, 0x00, 0x00, 0x00, - 0xe5, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x33, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x33, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, - 0x38, 0x00, 0x01, 0x00 + 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x71, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x62, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x5f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x70, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_matmulunit_HAS_BIAS_comp_len = 5380; +unsigned int glsl_binary_FLOORDIV_comp_len = 2364; -const unsigned char glsl_convolution_comp[] = { +const unsigned char glsl_binary_FLOORMOD_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x72, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x61, 0x64, 0x00, 0x06, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x53, 0x69, - 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x64, 0x69, 0x6c, 0x61, 0x74, 0x65, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x42, 0x69, 0x61, 0x73, - 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x75, 0x42, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, - 0xf6, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x00, 0x06, 0x00, 0x05, 0x00, 0xf6, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0xfe, 0x00, 0x00, 0x00, - 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0xfe, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x41, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x31, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x69, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x76, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x75, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x3a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x50, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x7f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x27, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x63, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x63, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x74, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_FLOORMOD_comp_len = 2412; + +const unsigned char glsl_matmulunit_HAS_BIAS_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x12, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, + 0x64, 0x65, 0x5f, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, + 0x64, 0x65, 0x5f, 0x61, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, + 0x64, 0x65, 0x5f, 0x62, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, + 0x64, 0x65, 0x5f, 0x63, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x73, 0x74, 0x65, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x69, 0x74, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x73, 0x33, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, 0x73, 0x34, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x75, 0x41, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x73, 0x35, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x75, 0x4b, 0x65, 0x72, - 0x6e, 0x65, 0x6c, 0x00, 0x05, 0x00, 0x05, 0x00, 0x52, 0x01, 0x00, 0x00, - 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x52, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x74, 0x00, 0x00, 0x00, 0x75, 0x42, 0x4f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x73, 0x36, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x03, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x73, 0x30, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x54, 0x01, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0xb7, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x41, 0x00, + 0x05, 0x00, 0x03, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x73, 0x31, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0xc3, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x00, + 0x05, 0x00, 0x03, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x73, 0x32, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0xd5, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x00, + 0x05, 0x00, 0x03, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x64, 0x30, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x55, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x57, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x57, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xf5, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x71, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x72, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x74, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x7f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x82, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xb5, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xfd, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xfe, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x51, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0x52, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x52, 0x01, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x52, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x54, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x54, 0x01, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xd5, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xd5, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xe6, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xe7, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xe9, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xe9, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x59, 0x01, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x09, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x36, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x6e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x03, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0xf5, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0xf6, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xf7, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0xf7, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0xfd, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0xff, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0xfe, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xff, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x51, 0x01, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x52, 0x01, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x53, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x52, 0x01, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x53, 0x01, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x58, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x2e, 0x00, 0x00, 0x00, - 0x34, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, - 0x2d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, - 0x57, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x34, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x65, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x65, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x04, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x6d, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x69, 0x01, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x77, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, - 0x77, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, - 0x7a, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, - 0x7a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x36, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x7e, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, - 0x69, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x83, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, - 0x83, 0x00, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x7b, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x99, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x99, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x6b, 0x01, 0x00, 0x00, - 0x95, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x6a, 0x01, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, - 0x3e, 0x01, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, - 0xa1, 0x00, 0x00, 0x00, 0x6a, 0x01, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, - 0xf6, 0x00, 0x04, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0x9a, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x9a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0xa4, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa5, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x6a, 0x01, 0x00, 0x00, - 0xa5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, - 0xa6, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xad, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0xad, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, - 0x9a, 0x00, 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, - 0x6b, 0x01, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, - 0xb0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb4, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, - 0x6c, 0x01, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, - 0xaf, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0xb5, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, - 0xaf, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xae, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, - 0xb8, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xba, 0x00, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, - 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, - 0xbc, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0xc1, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xc2, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x6a, 0x01, 0x00, 0x00, - 0xc2, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xc4, 0x00, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x09, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x71, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x73, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x81, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0xb5, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xb6, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0xb6, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0xc1, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xc2, 0x00, 0x00, 0x00, + 0xc3, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xd3, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xd4, 0x00, 0x00, 0x00, + 0xd5, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xe7, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, + 0xfb, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x26, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x52, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x52, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x05, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x62, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x62, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x0d, 0x01, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x03, 0x01, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0xaf, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x70, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x70, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x86, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x0e, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, + 0x0e, 0x01, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0xa6, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xab, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x53, 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, + 0xac, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x01, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x30, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0xad, 0x00, 0x00, 0x00, + 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0xb2, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xac, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x18, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0x10, 0x01, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xbf, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x18, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, - 0xc8, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, - 0xcb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0xcd, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xce, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, - 0xce, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xd1, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0xd1, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, - 0xae, 0x00, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6e, 0x01, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0x3a, 0x01, 0x00, 0x00, - 0xd2, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, - 0xd9, 0x00, 0x00, 0x00, 0x6e, 0x01, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, - 0xf6, 0x00, 0x04, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xd9, 0x00, 0x00, 0x00, - 0xd2, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xd2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0xdd, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xde, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, - 0xde, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, - 0x6e, 0x01, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, - 0xe4, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, - 0xe7, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, - 0xea, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xef, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, - 0xef, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, - 0xf2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0xf3, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0xfb, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, - 0x6e, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x01, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, - 0x06, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x0d, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, - 0x0e, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x15, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, - 0x16, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x1d, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, - 0x1e, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x23, 0x01, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, - 0x07, 0x01, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, - 0x24, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x29, 0x01, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x2a, 0x01, 0x00, 0x00, - 0x0f, 0x01, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, - 0x2a, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x2f, 0x01, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, - 0x17, 0x01, 0x00, 0x00, 0x2f, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, - 0x30, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x35, 0x01, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, - 0x1f, 0x01, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, - 0x36, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x3a, 0x01, 0x00, 0x00, 0x6e, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0xd1, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xd3, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xb0, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xad, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3e, 0x01, 0x00, 0x00, - 0x6a, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x99, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x9b, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x01, 0x00, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x46, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x4c, 0x01, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4f, 0x01, 0x00, 0x00, - 0x4c, 0x01, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, - 0x4f, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, - 0x57, 0x01, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x50, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x57, 0x01, 0x00, 0x00, - 0x6b, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x10, 0x01, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0xc8, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, + 0xca, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, + 0x53, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, + 0x11, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xab, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xad, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, + 0xda, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdc, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x18, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, + 0xe3, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0xe2, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, + 0x53, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xee, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, + 0xf0, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xf2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, + 0xee, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x18, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0xcf, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xfa, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x33, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x33, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_convolution_comp_len = 5068; +unsigned int glsl_matmulunit_HAS_BIAS_comp_len = 5380; -const unsigned char glsl_convolution_RELU_comp[] = { +const unsigned char glsl_cast_float_int_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x76, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x61, 0x64, 0x00, 0x06, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x53, 0x69, - 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x64, 0x69, 0x6c, 0x61, 0x74, 0x65, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x6c, 0x6f, 0x70, + 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x42, 0x69, 0x61, 0x73, - 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x75, 0x42, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, - 0xf6, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x00, 0x06, 0x00, 0x05, 0x00, 0xf6, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0xfe, 0x00, 0x00, 0x00, - 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0xfe, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x75, 0x4b, 0x65, 0x72, - 0x6e, 0x65, 0x6c, 0x00, 0x05, 0x00, 0x05, 0x00, 0x56, 0x01, 0x00, 0x00, - 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x56, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x25, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x58, 0x01, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xf5, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xf6, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xfd, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xfe, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x55, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0x56, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x56, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x56, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x58, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x58, 0x01, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x5d, 0x01, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x09, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x36, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x6e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x03, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0xf5, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0xf6, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xf7, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0xf7, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0xfd, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0xff, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0xfe, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xff, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x8a, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x41, 0x01, 0x00, 0x00, - 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, - 0x40, 0x01, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x55, 0x01, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x56, 0x01, 0x00, 0x00, - 0x55, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x57, 0x01, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x56, 0x01, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x57, 0x01, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x5c, 0x01, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x5d, 0x01, 0x00, 0x00, 0x5c, 0x01, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x6d, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x26, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x2d, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x06, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, - 0x2d, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x4e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, - 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x62, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, - 0x68, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x6d, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x62, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00, - 0x87, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x36, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, - 0x7d, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, - 0x6d, 0x01, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x88, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, - 0x88, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x99, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x99, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x6f, 0x01, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, - 0x56, 0x00, 0x00, 0x00, 0x75, 0x01, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6e, 0x01, 0x00, 0x00, - 0x98, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x3e, 0x01, 0x00, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa0, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0x6e, 0x01, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x9a, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, - 0xa4, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa6, 0x00, 0x00, 0x00, 0x6e, 0x01, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, - 0x69, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xac, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0xad, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xad, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x70, 0x01, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, - 0x3c, 0x01, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x75, 0x01, 0x00, 0x00, 0x6f, 0x01, 0x00, 0x00, - 0x9a, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x54, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, - 0xb4, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0xaf, 0x00, 0x00, 0x00, - 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0xb5, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0xae, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x6e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, - 0x70, 0x01, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, - 0xc1, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xc3, 0x00, 0x00, 0x00, 0x6e, 0x01, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, - 0x70, 0x01, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, - 0xc2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0xc9, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xca, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, - 0xca, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xcc, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, - 0xcd, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xcf, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0xd1, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xd1, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x74, 0x01, 0x00, 0x00, 0x75, 0x01, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, - 0x38, 0x01, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0xae, 0x00, 0x00, 0x00, 0x3a, 0x01, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, - 0x72, 0x01, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, - 0xd3, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0xd9, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, - 0xd3, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xd2, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, - 0xdd, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xdf, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, - 0xde, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0xe5, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe6, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, - 0xe6, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0xe8, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe9, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, - 0xe9, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xeb, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, - 0xe6, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xf3, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x03, 0x01, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, - 0x03, 0x01, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, - 0x04, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, - 0x04, 0x01, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, - 0x04, 0x01, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, - 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, - 0x23, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x26, 0x01, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, - 0xfb, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x2a, 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, - 0x29, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x2c, 0x01, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x2a, 0x01, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x2f, 0x01, 0x00, 0x00, - 0xfb, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, - 0x2f, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x32, 0x01, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, - 0xfb, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, - 0x35, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x38, 0x01, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3a, 0x01, 0x00, 0x00, - 0x72, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0xd1, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xd3, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0xb0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xb0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x3c, 0x01, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0xad, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xaf, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x3e, 0x01, 0x00, 0x00, 0x6e, 0x01, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x99, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x6f, 0x01, 0x00, 0x00, 0x41, 0x01, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4a, 0x01, 0x00, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x4b, 0x01, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x4a, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x50, 0x01, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x53, 0x01, 0x00, 0x00, - 0x50, 0x01, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x4b, 0x01, 0x00, 0x00, - 0x53, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, - 0x5b, 0x01, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x54, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x5b, 0x01, 0x00, 0x00, - 0x42, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x21, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x21, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_convolution_RELU_comp_len = 5140; +unsigned int glsl_cast_float_int_comp_len = 1432; -const unsigned char glsl_convolution_RELU6_comp[] = { +const unsigned char glsl_cast_float_int_REVERT_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x78, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x61, 0x64, 0x00, 0x06, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x53, 0x69, - 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x64, 0x69, 0x6c, 0x61, 0x74, 0x65, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x6c, 0x6f, 0x70, + 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x42, 0x69, 0x61, 0x73, - 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x75, 0x42, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, - 0xf6, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x00, 0x06, 0x00, 0x05, 0x00, 0xf6, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0xfe, 0x00, 0x00, 0x00, - 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0xfe, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x75, 0x4b, 0x65, 0x72, - 0x6e, 0x65, 0x6c, 0x00, 0x05, 0x00, 0x05, 0x00, 0x58, 0x01, 0x00, 0x00, - 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x58, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x25, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x5a, 0x01, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xf5, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xf6, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xfd, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xfe, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x57, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0x58, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x58, 0x01, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x21, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x21, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_cast_float_int_REVERT_comp_len = 1432; + +const unsigned char glsl_convolution_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x72, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x61, 0x64, 0x00, 0x06, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x53, 0x69, + 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x64, 0x69, 0x6c, 0x61, 0x74, 0x65, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x42, 0x69, 0x61, 0x73, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x75, 0x42, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xf6, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x00, 0x06, 0x00, 0x05, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0xfe, 0x00, 0x00, 0x00, + 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0xfe, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x75, 0x4b, 0x65, 0x72, + 0x6e, 0x65, 0x6c, 0x00, 0x05, 0x00, 0x05, 0x00, 0x52, 0x01, 0x00, 0x00, + 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x52, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x54, 0x01, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x58, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x5a, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x5a, 0x01, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xfd, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xfe, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x51, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x52, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x52, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x52, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x54, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x54, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x5f, 0x01, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x59, 0x01, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, @@ -9285,702 +9296,4493 @@ const unsigned char glsl_convolution_RELU6_comp[] = { 0x1e, 0x00, 0x03, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xff, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xff, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x8a, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x41, 0x01, 0x00, 0x00, - 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, - 0x40, 0x01, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x42, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x2c, 0x00, 0x07, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x43, 0x01, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00, - 0x42, 0x01, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x57, 0x01, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x58, 0x01, 0x00, 0x00, 0x57, 0x01, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x59, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x58, 0x01, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x59, 0x01, 0x00, 0x00, - 0x5a, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x5e, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, - 0x5e, 0x01, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x6f, 0x01, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x26, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, - 0x2d, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x4e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x56, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x56, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x62, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x61, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x64, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x69, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, - 0x7e, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, - 0x69, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, - 0x6f, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x71, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, - 0x71, 0x00, 0x00, 0x00, 0x6f, 0x01, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x51, 0x01, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x52, 0x01, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x53, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x52, 0x01, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x53, 0x01, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x58, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x69, 0x01, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x83, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, + 0x83, 0x00, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x6b, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x62, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x36, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x7d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, - 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x7e, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x85, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x6f, 0x01, 0x00, 0x00, - 0x87, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, - 0x85, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x91, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x98, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x99, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x99, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x71, 0x01, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, - 0x77, 0x01, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, - 0x56, 0x00, 0x00, 0x00, 0x3e, 0x01, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x54, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, - 0xa0, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x9b, 0x00, 0x00, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0xa1, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x6e, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, - 0x70, 0x01, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa9, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0xad, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xad, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, - 0xac, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, - 0xb0, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x77, 0x01, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, - 0x76, 0x01, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, - 0xb5, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, - 0xf6, 0x00, 0x04, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xb5, 0x00, 0x00, 0x00, - 0xae, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xae, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0xb8, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x99, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x99, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x6b, 0x01, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x6a, 0x01, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x3e, 0x01, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0x6a, 0x01, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x04, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa5, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x6a, 0x01, 0x00, 0x00, + 0xa5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0xa6, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xad, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xad, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, + 0x6b, 0x01, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, + 0x6c, 0x01, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0xb5, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xae, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0xb8, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb9, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, - 0xb9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xbc, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, - 0xba, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, - 0x70, 0x01, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, - 0xc3, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xc8, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, - 0xc9, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xcb, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, - 0xc4, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, - 0xcc, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0xd1, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xd1, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x76, 0x01, 0x00, 0x00, - 0x77, 0x01, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, - 0xd2, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x74, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, - 0x3a, 0x01, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x54, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, - 0xce, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0xd3, 0x00, 0x00, 0x00, - 0xd2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0xd9, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, - 0xa9, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, - 0xdf, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe4, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, - 0xe5, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe7, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, - 0xe8, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xea, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, - 0xde, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xf2, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, - 0xeb, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x93, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, - 0xcf, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, - 0x06, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x04, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x07, 0x01, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, - 0x0e, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x0d, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x0f, 0x01, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, - 0x61, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, - 0x16, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x15, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x17, 0x01, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, - 0x6e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, - 0x1e, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x1d, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x1f, 0x01, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x8a, 0x00, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x24, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, - 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, - 0x76, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x8a, 0x00, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x2a, 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, - 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, - 0x26, 0x01, 0x00, 0x00, 0x2a, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x8a, 0x00, 0x00, 0x00, 0x2f, 0x01, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x30, 0x01, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0x2f, 0x01, 0x00, 0x00, - 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, - 0x2c, 0x01, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x8a, 0x00, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x36, 0x01, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, - 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, - 0x32, 0x01, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x3a, 0x01, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xd1, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0xb0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xb0, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, - 0x72, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0xad, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xaf, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x9c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x3e, 0x01, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x99, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x44, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, - 0x71, 0x01, 0x00, 0x00, 0x41, 0x01, 0x00, 0x00, 0x43, 0x01, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4c, 0x01, 0x00, 0x00, + 0xc2, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x6a, 0x01, 0x00, 0x00, + 0xc2, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc4, 0x00, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, + 0xc8, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xcd, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xce, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, + 0xce, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xd1, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xd1, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, + 0xae, 0x00, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6e, 0x01, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0x3a, 0x01, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0x6e, 0x01, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x04, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xdd, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xde, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0xde, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, + 0x6e, 0x01, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, + 0xe7, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0xea, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xef, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, + 0xef, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, + 0xf2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0xf3, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0xfb, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, + 0x6e, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x01, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, + 0x06, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x0d, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, + 0x0e, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x15, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, + 0x16, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1d, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, + 0x1e, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x23, 0x01, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, + 0x07, 0x01, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, + 0x24, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x29, 0x01, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x2a, 0x01, 0x00, 0x00, + 0x0f, 0x01, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, + 0x2a, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x2f, 0x01, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, + 0x17, 0x01, 0x00, 0x00, 0x2f, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, + 0x30, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x35, 0x01, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, + 0x1f, 0x01, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, + 0x36, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x3a, 0x01, 0x00, 0x00, 0x6e, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xd1, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xd3, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xad, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3e, 0x01, 0x00, 0x00, + 0x6a, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x99, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x01, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x4d, 0x01, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x4c, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x52, 0x01, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, - 0x52, 0x01, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x56, 0x01, 0x00, 0x00, 0x4d, 0x01, 0x00, 0x00, - 0x55, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, - 0x5d, 0x01, 0x00, 0x00, 0x5a, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x56, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x5d, 0x01, 0x00, 0x00, - 0x44, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x46, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4c, 0x01, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4f, 0x01, 0x00, 0x00, + 0x4c, 0x01, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, + 0x4f, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x57, 0x01, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x50, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x57, 0x01, 0x00, 0x00, + 0x6b, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_convolution_RELU6_comp_len = 5188; +unsigned int glsl_convolution_comp_len = 5068; -const unsigned char glsl_roipooling_comp[] = { +const unsigned char glsl_convolution_RELU_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x5e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x76, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x07, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x49, 0x6d, 0x67, 0x53, 0x69, 0x7a, 0x65, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x49, 0x6d, - 0x67, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x73, 0x70, 0x61, 0x74, - 0x69, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x07, 0x00, 0x15, 0x00, 0x00, 0x00, 0x75, 0x52, 0x6f, 0x69, - 0x50, 0x6f, 0x6f, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x72, 0x6f, 0x69, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x75, 0x52, 0x6f, 0x49, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x05, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x06, 0x00, 0x05, 0x00, - 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xfb, 0x00, 0x00, 0x00, - 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, - 0x27, 0x01, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x42, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x27, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x29, 0x01, 0x00, 0x00, - 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x45, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x61, 0x64, 0x00, 0x06, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x53, 0x69, + 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x64, 0x69, 0x6c, 0x61, 0x74, 0x65, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x42, 0x69, 0x61, 0x73, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x75, 0x42, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xf6, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x00, 0x06, 0x00, 0x05, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0xfe, 0x00, 0x00, 0x00, + 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0xfe, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x75, 0x4b, 0x65, 0x72, + 0x6e, 0x65, 0x6c, 0x00, 0x05, 0x00, 0x05, 0x00, 0x56, 0x01, 0x00, 0x00, + 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x56, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x58, 0x01, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xf8, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xf9, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xfb, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x26, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0x27, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x27, 0x01, 0x00, 0x00, + 0xfd, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x27, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x29, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x29, 0x01, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x55, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x56, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x56, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x56, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x58, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x58, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x3f, 0x01, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x5d, 0x01, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x03, 0x00, 0x12, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x09, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x02, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x45, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, - 0x42, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0xf9, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xfa, 0x00, 0x00, 0x00, - 0xfb, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x26, 0x01, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x27, 0x01, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x28, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x28, 0x01, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x3e, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0x3e, 0x01, 0x00, 0x00, - 0x3e, 0x01, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x05, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x23, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x29, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x05, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x24, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x36, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, - 0x36, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x2f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x42, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x2f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x42, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x61, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x68, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, - 0x6e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, - 0x69, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x6d, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x85, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x6d, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x79, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x7a, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x62, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x7f, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x6f, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x8c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, - 0x8c, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x90, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x99, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, - 0x8d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa0, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, - 0x2f, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, - 0xa7, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, - 0x12, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, - 0x8d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, - 0xaa, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, - 0xa9, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xab, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, - 0xab, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xaf, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0xac, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, - 0x12, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, - 0x85, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, - 0xb4, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, - 0x12, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, - 0x6a, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xbc, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0xb9, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, - 0x12, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, - 0x85, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, - 0xc2, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, - 0x12, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x09, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, - 0x6a, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2d, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, - 0xbb, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x05, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0xcf, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, - 0xb3, 0x00, 0x05, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, - 0xaf, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x05, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, - 0xd2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x38, 0x00, 0x00, 0x00, - 0xd6, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd7, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, - 0xd7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x38, 0x00, 0x00, 0x00, - 0xd9, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x03, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xf7, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0xf7, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0xfd, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0xff, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x41, 0x01, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x55, 0x01, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x56, 0x01, 0x00, 0x00, + 0x55, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x57, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x56, 0x01, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x57, 0x01, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x5c, 0x01, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x5d, 0x01, 0x00, 0x00, 0x5c, 0x01, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x6d, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xda, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, - 0xda, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xdf, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, - 0xdf, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x38, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x2f, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, - 0xe2, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, - 0xe5, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xec, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, - 0xa1, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, - 0xe6, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xf4, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xd3, 0x00, 0x00, 0x00, - 0xf3, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xf3, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xf4, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0xf7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, - 0x2f, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x42, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0xf4, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xf4, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x42, 0x00, 0x00, 0x00, - 0x58, 0x01, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, - 0xfe, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x02, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x02, 0x01, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x42, 0x00, 0x00, 0x00, 0x5a, 0x01, 0x00, 0x00, - 0x58, 0x01, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x5d, 0x01, 0x00, 0x00, - 0x05, 0x01, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x59, 0x01, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, - 0x25, 0x01, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, - 0xca, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x04, 0x01, 0x00, 0x00, - 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x09, 0x01, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x03, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x0c, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x0c, 0x01, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x42, 0x00, 0x00, 0x00, 0x5d, 0x01, 0x00, 0x00, - 0x5a, 0x01, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, - 0x0d, 0x01, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5b, 0x01, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, - 0x23, 0x01, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x5b, 0x01, 0x00, 0x00, - 0xaf, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x0e, 0x01, 0x00, 0x00, - 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x13, 0x01, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x19, 0x01, 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, - 0xd7, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x1a, 0x01, 0x00, 0x00, 0x5b, 0x01, 0x00, 0x00, 0x19, 0x01, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00, - 0x1a, 0x01, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, - 0x2f, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x42, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, - 0x0c, 0x00, 0x07, 0x00, 0x42, 0x00, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x5d, 0x01, 0x00, 0x00, - 0x20, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x23, 0x01, 0x00, 0x00, 0x5b, 0x01, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x0c, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x0e, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x05, 0x01, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x05, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x02, 0x01, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x04, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x2f, 0x01, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x2f, 0x01, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x31, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x37, 0x01, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x39, 0x01, 0x00, 0x00, - 0x38, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x3a, 0x01, 0x00, 0x00, 0x37, 0x01, 0x00, 0x00, 0x39, 0x01, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x01, 0x00, 0x00, - 0x32, 0x01, 0x00, 0x00, 0x3a, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x3d, 0x01, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, - 0x2f, 0x00, 0x00, 0x00, 0x3b, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0x3d, 0x01, 0x00, 0x00, 0x5a, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x2d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 -}; -unsigned int glsl_roipooling_comp_len = 4580; - -const unsigned char glsl_blit_comp[] = { - 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, - 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, - 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x00, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, - 0x6e, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x06, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x36, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, + 0x6d, 0x01, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x99, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x99, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x6f, 0x01, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x75, 0x01, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6e, 0x01, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x3e, 0x01, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0x6e, 0x01, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa6, 0x00, 0x00, 0x00, 0x6e, 0x01, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xac, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xad, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xad, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x70, 0x01, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x3c, 0x01, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x75, 0x01, 0x00, 0x00, 0x6f, 0x01, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x54, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xae, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, + 0x70, 0x01, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc3, 0x00, 0x00, 0x00, 0x6e, 0x01, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0x70, 0x01, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0xc2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xca, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, + 0xca, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, + 0xcd, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcf, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xd1, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x74, 0x01, 0x00, 0x00, 0x75, 0x01, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, + 0x38, 0x01, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0xae, 0x00, 0x00, 0x00, 0x3a, 0x01, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x72, 0x01, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, + 0xd3, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0xd9, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, + 0xd3, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xd2, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, + 0xdd, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdf, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, + 0xde, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe6, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, + 0xe6, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xe8, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0xe6, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xf3, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x01, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, + 0x03, 0x01, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, + 0x04, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, + 0x04, 0x01, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, + 0x04, 0x01, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, + 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, + 0x23, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x26, 0x01, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, + 0xfb, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x2a, 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, + 0x29, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x2c, 0x01, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x2a, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x2f, 0x01, 0x00, 0x00, + 0xfb, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, + 0x2f, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x32, 0x01, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, + 0xfb, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, + 0x35, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x38, 0x01, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3a, 0x01, 0x00, 0x00, + 0x72, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xb0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x3c, 0x01, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xad, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x3e, 0x01, 0x00, 0x00, 0x6e, 0x01, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x99, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x6f, 0x01, 0x00, 0x00, 0x41, 0x01, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4a, 0x01, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x4b, 0x01, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x4a, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x50, 0x01, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x53, 0x01, 0x00, 0x00, + 0x50, 0x01, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x4b, 0x01, 0x00, 0x00, + 0x53, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x5b, 0x01, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x54, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x5b, 0x01, 0x00, 0x00, + 0x42, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_convolution_RELU_comp_len = 5140; + +const unsigned char glsl_convolution_RELU6_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x78, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x61, 0x64, 0x00, 0x06, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x53, 0x69, + 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x64, 0x69, 0x6c, 0x61, 0x74, 0x65, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x42, 0x69, 0x61, 0x73, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x75, 0x42, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xf6, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x00, 0x06, 0x00, 0x05, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0xfe, 0x00, 0x00, 0x00, + 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0xfe, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x75, 0x4b, 0x65, 0x72, + 0x6e, 0x65, 0x6c, 0x00, 0x05, 0x00, 0x05, 0x00, 0x58, 0x01, 0x00, 0x00, + 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x58, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x5a, 0x01, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xfd, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xfe, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x57, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x58, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x58, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x58, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x5a, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x5a, 0x01, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x5f, 0x01, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x09, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x03, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xf7, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0xf7, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0xfd, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0xff, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x41, 0x01, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x42, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x2c, 0x00, 0x07, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x43, 0x01, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00, + 0x42, 0x01, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x57, 0x01, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x58, 0x01, 0x00, 0x00, 0x57, 0x01, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x59, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x58, 0x01, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x59, 0x01, 0x00, 0x00, + 0x5a, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x5e, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, + 0x5e, 0x01, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x6f, 0x01, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x71, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x71, 0x00, 0x00, 0x00, 0x6f, 0x01, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x6f, 0x01, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x99, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x99, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x71, 0x01, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x77, 0x01, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x3e, 0x01, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x54, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, + 0x70, 0x01, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xad, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xad, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, + 0xac, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x77, 0x01, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x76, 0x01, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x04, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xb5, 0x00, 0x00, 0x00, + 0xae, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xae, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xb8, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, + 0x70, 0x01, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, + 0xc3, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc8, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, + 0xc4, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xd1, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x76, 0x01, 0x00, 0x00, + 0x77, 0x01, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x74, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, + 0x3a, 0x01, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x54, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, + 0xce, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0xdf, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe7, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, + 0xe8, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xea, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0xde, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xf2, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x93, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, + 0xcf, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x06, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x04, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x07, 0x01, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x0e, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x0d, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x0f, 0x01, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x16, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x15, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x17, 0x01, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x1e, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x1d, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1f, 0x01, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x24, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, + 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, + 0x76, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x2a, 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, + 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, + 0x26, 0x01, 0x00, 0x00, 0x2a, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x2f, 0x01, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x30, 0x01, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0x2f, 0x01, 0x00, 0x00, + 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, + 0x2c, 0x01, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x36, 0x01, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, + 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, + 0x32, 0x01, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x3a, 0x01, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xd1, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, + 0x72, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xad, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x9c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x3e, 0x01, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x99, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x44, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x71, 0x01, 0x00, 0x00, 0x41, 0x01, 0x00, 0x00, 0x43, 0x01, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4c, 0x01, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x4d, 0x01, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x4c, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x52, 0x01, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, + 0x52, 0x01, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x56, 0x01, 0x00, 0x00, 0x4d, 0x01, 0x00, 0x00, + 0x55, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x5d, 0x01, 0x00, 0x00, 0x5a, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x56, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x5d, 0x01, 0x00, 0x00, + 0x44, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_convolution_RELU6_comp_len = 5188; + +const unsigned char glsl_binary_int_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x29, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x37, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x37, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x57, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x6c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_int_comp_len = 1816; + +const unsigned char glsl_binary_int_ADD_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x29, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x31, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x36, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x37, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x37, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x11, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x71, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_int_ADD_comp_len = 2296; + +const unsigned char glsl_binary_int_SUB_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x29, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x31, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x36, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x37, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x37, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x05, 0x00, 0x11, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x71, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_int_SUB_comp_len = 2296; + +const unsigned char glsl_binary_int_MUL_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x29, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x31, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x36, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x37, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x37, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x11, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x71, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_int_MUL_comp_len = 2296; + +const unsigned char glsl_binary_int_DIV_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x29, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x31, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x36, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x37, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x37, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x11, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x71, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_int_DIV_comp_len = 2296; + +const unsigned char glsl_binary_int_VMAX_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x29, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x31, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x36, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x37, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x37, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x5a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x65, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_int_VMAX_comp_len = 2304; + +const unsigned char glsl_binary_int_SQUDIFF_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x29, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x31, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x63, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x62, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x63, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x36, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x37, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x37, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x05, 0x00, 0x11, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x73, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x69, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_int_SQUDIFF_comp_len = 2316; + +const unsigned char glsl_binary_int_VMIN_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x29, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x31, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x36, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x37, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x37, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x5a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x65, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_int_VMIN_comp_len = 2304; + +const unsigned char glsl_binary_int_LESS_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x29, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x31, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x37, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x37, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x73, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x73, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x68, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_int_LESS_comp_len = 2364; + +const unsigned char glsl_binary_int_LESSEQUAL_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x29, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x31, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x37, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x37, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x73, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x05, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x73, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x68, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_int_LESSEQUAL_comp_len = 2364; + +const unsigned char glsl_binary_int_GREATER_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x29, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x31, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x37, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x37, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x73, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xad, 0x00, 0x05, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x73, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x68, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_int_GREATER_comp_len = 2364; + +const unsigned char glsl_binary_int_GREATEREQUAL_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x29, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x31, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x37, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x37, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x73, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x05, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x73, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x68, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_int_GREATEREQUAL_comp_len = 2364; + +const unsigned char glsl_binary_int_EQUAL_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x29, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x31, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x37, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x37, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x73, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x73, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x68, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_int_EQUAL_comp_len = 2364; + +const unsigned char glsl_binary_int_NOTEQUAL_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x29, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x31, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x37, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x37, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x73, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xab, 0x00, 0x05, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x73, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x68, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_int_NOTEQUAL_comp_len = 2364; + +const unsigned char glsl_binary_int_VMOD_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x29, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x31, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x36, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x37, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x37, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x11, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x11, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x71, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x25, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_int_VMOD_comp_len = 2296; + +const unsigned char glsl_roipooling_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x5e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x07, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x49, 0x6d, 0x67, 0x53, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x49, 0x6d, + 0x67, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x73, 0x70, 0x61, 0x74, + 0x69, 0x61, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x07, 0x00, 0x15, 0x00, 0x00, 0x00, 0x75, 0x52, 0x6f, 0x69, + 0x50, 0x6f, 0x6f, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x72, 0x6f, 0x69, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x75, 0x52, 0x6f, 0x49, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x06, 0x00, 0x05, 0x00, + 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xfb, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x27, 0x01, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x27, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x29, 0x01, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xf8, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xf9, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xfb, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x26, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x27, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x27, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x27, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x29, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x29, 0x01, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x3f, 0x01, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x03, 0x00, 0x12, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, + 0x42, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0xf9, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xfa, 0x00, 0x00, 0x00, + 0xfb, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x26, 0x01, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x27, 0x01, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x28, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x28, 0x01, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x3e, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x3f, 0x01, 0x00, 0x00, 0x3e, 0x01, 0x00, 0x00, + 0x3e, 0x01, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x23, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x24, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x79, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x7f, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0xac, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, + 0x12, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, + 0x12, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0xb3, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, + 0x12, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xc2, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, + 0x12, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0xbb, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x05, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0xcf, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0xb3, 0x00, 0x05, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x05, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x38, 0x00, 0x00, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x38, 0x00, 0x00, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xda, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, + 0xda, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdf, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, + 0xdf, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x38, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0xe2, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, + 0xe6, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xf4, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0xf3, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xf3, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xf4, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xf7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x42, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xf4, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xf4, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x58, 0x01, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x02, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x02, 0x01, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x42, 0x00, 0x00, 0x00, 0x5a, 0x01, 0x00, 0x00, + 0x58, 0x01, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x5d, 0x01, 0x00, 0x00, + 0x05, 0x01, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x59, 0x01, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, + 0x25, 0x01, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, + 0xca, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x04, 0x01, 0x00, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x09, 0x01, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x03, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x0c, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x0c, 0x01, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x42, 0x00, 0x00, 0x00, 0x5d, 0x01, 0x00, 0x00, + 0x5a, 0x01, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, + 0x0d, 0x01, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5b, 0x01, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, + 0x23, 0x01, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x5b, 0x01, 0x00, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x0e, 0x01, 0x00, 0x00, + 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x13, 0x01, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x19, 0x01, 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1a, 0x01, 0x00, 0x00, 0x5b, 0x01, 0x00, 0x00, 0x19, 0x01, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00, + 0x1a, 0x01, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x42, 0x00, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x5d, 0x01, 0x00, 0x00, + 0x20, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x23, 0x01, 0x00, 0x00, 0x5b, 0x01, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x0c, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x0e, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x05, 0x01, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x02, 0x01, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x04, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x2f, 0x01, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x2f, 0x01, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, + 0xb3, 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x31, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x37, 0x01, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x39, 0x01, 0x00, 0x00, + 0x38, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x3a, 0x01, 0x00, 0x00, 0x37, 0x01, 0x00, 0x00, 0x39, 0x01, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x01, 0x00, 0x00, + 0x32, 0x01, 0x00, 0x00, 0x3a, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x3d, 0x01, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x3b, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0x3d, 0x01, 0x00, 0x00, 0x5a, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_roipooling_comp_len = 4580; + +const unsigned char glsl_blit_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x05, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, @@ -17008,6 +20810,152 @@ const unsigned char glsl_resizeBilinear_comp[] = { }; unsigned int glsl_resizeBilinear_comp_len = 3316; +const unsigned char glsl_cast_int_bool_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x6c, 0x6f, 0x70, + 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x25, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x47, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x21, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x21, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_cast_int_bool_comp_len = 1700; + const unsigned char glsl_nchwTonc4hw4_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x3d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, @@ -17579,390 +21527,4556 @@ const unsigned char glsl_nc4hw4Tonchw_comp[] = { 0xf9, 0x00, 0x02, 0x00, 0x31, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x31, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_nc4hw4Tonchw_comp_len = 3360; +unsigned int glsl_nc4hw4Tonchw_comp_len = 3360; + +const unsigned char glsl_matmulunit_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, + 0x64, 0x65, 0x5f, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, + 0x64, 0x65, 0x5f, 0x61, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, + 0x64, 0x65, 0x5f, 0x62, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, + 0x64, 0x65, 0x5f, 0x63, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x73, 0x74, 0x65, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x69, 0x74, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x73, 0x33, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, 0x73, 0x34, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x75, 0x41, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x73, 0x35, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x74, 0x00, 0x00, 0x00, 0x75, 0x42, 0x4f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0x73, 0x30, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x41, 0x00, 0x05, 0x00, 0x03, 0x00, + 0xb3, 0x00, 0x00, 0x00, 0x73, 0x31, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xb5, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x00, 0x05, 0x00, 0x03, 0x00, + 0xc4, 0x00, 0x00, 0x00, 0x64, 0x30, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xc6, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x57, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x74, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xa6, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xb2, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0xb3, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xc3, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0xc4, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x09, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x71, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x72, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0xa6, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0xa6, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0xb3, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb3, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xc4, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xc5, 0x00, 0x00, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0xd8, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x26, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, + 0x12, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x52, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x52, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x05, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x62, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x62, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, + 0xe7, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0xaf, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, + 0xe2, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x70, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x70, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x12, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, + 0x62, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0xe8, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x92, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x53, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, + 0x9e, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0x9e, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x9e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, + 0xac, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xad, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, + 0xad, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, + 0xb8, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbb, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xbf, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x9f, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x18, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, + 0xc8, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x18, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, + 0xcf, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd3, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0xd3, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd5, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0xd7, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x33, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x33, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_matmulunit_comp_len = 4500; + +const unsigned char glsl_blitregion_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x73, 0x74, 0x65, 0x70, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x69, 0x74, 0x65, 0x72, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, 0x73, 0x31, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x75, 0x53, 0x72, 0x63, 0x4f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x73, 0x32, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x75, 0x44, 0x73, 0x74, + 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x05, 0x00, 0x03, 0x00, + 0xad, 0x00, 0x00, 0x00, 0x73, 0x30, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xaa, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xac, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0xad, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0xad, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x07, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x55, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x57, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x6c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0xa6, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0xac, 0x00, 0x00, 0x00, + 0xa6, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0xad, 0x00, 0x00, 0x00, + 0xac, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xae, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0xae, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0xb1, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xa6, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0xad, 0x00, 0x05, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x51, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x51, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x51, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0xad, 0x00, 0x05, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x66, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x73, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x66, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x66, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0xc8, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x83, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x9f, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, + 0x9f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0xb1, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0xa6, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x20, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_blitregion_comp_len = 3504; + +const unsigned char glsl_range_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x75, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x75, 0x53, 0x74, 0x61, 0x72, 0x74, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x14, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x31, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x08, 0x00, 0x20, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_range_comp_len = 1652; + +const unsigned char glsl_range_USE_INT_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x21, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x75, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x75, 0x53, 0x74, 0x61, 0x72, 0x74, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x14, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x26, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x27, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_range_USE_INT_comp_len = 1616; + +const unsigned char glsl_convolutionint4_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xea, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x61, 0x64, 0x00, 0x06, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x53, 0x69, + 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x64, 0x69, 0x6c, 0x61, 0x74, 0x65, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x42, 0x69, 0x61, 0x73, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x75, 0x42, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x77, 0x73, 0x73, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x75, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x07, 0x01, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x4b, 0x65, 0x72, 0x6e, + 0x65, 0x6c, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x11, 0x01, 0x00, 0x00, 0x75, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x00, + 0x05, 0x00, 0x05, 0x00, 0xb9, 0x01, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0xb9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xbb, 0x01, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x04, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x07, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x07, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0e, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x0f, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x11, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x11, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xb8, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0xb9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0xb9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0xb9, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xbb, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xbb, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xc0, 0x01, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x09, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x98, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x04, 0x01, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x06, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x06, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x01, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x0e, 0x01, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x0f, 0x01, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x10, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x10, 0x01, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x17, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x1b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x43, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x2b, 0x01, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0xb8, 0x01, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0xb9, 0x01, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xba, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xb9, 0x01, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0xba, 0x01, 0x00, 0x00, 0xbb, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0xbf, 0x01, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0xc0, 0x01, 0x00, 0x00, 0xbf, 0x01, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0xe0, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x07, 0x00, 0x0b, 0x01, 0x00, 0x00, 0xe1, 0x01, 0x00, 0x00, + 0x2b, 0x01, 0x00, 0x00, 0x2b, 0x01, 0x00, 0x00, 0x2b, 0x01, 0x00, 0x00, + 0x2b, 0x01, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0xe0, 0x01, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x83, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, + 0x83, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0xe3, 0x01, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0xe9, 0x01, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe2, 0x01, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0xa5, 0x01, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x54, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0xe2, 0x01, 0x00, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, + 0xe2, 0x01, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb8, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe4, 0x01, 0x00, 0x00, + 0xbb, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xa3, 0x01, 0x00, 0x00, + 0xbf, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0xe9, 0x01, 0x00, 0x00, 0xe3, 0x01, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0xe8, 0x01, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, + 0xc4, 0x00, 0x00, 0x00, 0xe4, 0x01, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x04, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xc7, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc8, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xe4, 0x01, 0x00, 0x00, + 0xc8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, + 0xe2, 0x01, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xe4, 0x01, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0xd8, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xda, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, + 0xd3, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, + 0xdb, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, 0xe8, 0x01, 0x00, 0x00, + 0xe9, 0x01, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x9f, 0x01, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe6, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0xa1, 0x01, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x54, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe6, 0x01, 0x00, 0x00, + 0xdd, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0xe2, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0xe8, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, + 0xb8, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, + 0xee, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xf3, 0x00, 0x00, 0x00, 0xe6, 0x01, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0xf4, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, + 0xef, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0xed, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, + 0xfa, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, + 0xde, 0x00, 0x00, 0x00, 0xe6, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x17, 0x01, 0x00, 0x00, + 0x18, 0x01, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x15, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x19, 0x01, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x1a, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x19, 0x01, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00, 0x1a, 0x01, 0x00, 0x00, + 0x1b, 0x01, 0x00, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x0b, 0x01, 0x00, 0x00, + 0x1d, 0x01, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x17, 0x01, 0x00, 0x00, + 0x24, 0x01, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x23, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x25, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, + 0x1b, 0x01, 0x00, 0x00, 0x6d, 0x00, 0x04, 0x00, 0x0b, 0x01, 0x00, 0x00, + 0x28, 0x01, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, 0x86, 0x00, 0x05, 0x00, + 0x0b, 0x01, 0x00, 0x00, 0x2d, 0x01, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, + 0xe1, 0x01, 0x00, 0x00, 0x89, 0x00, 0x05, 0x00, 0x0b, 0x01, 0x00, 0x00, + 0x31, 0x01, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, 0xe1, 0x01, 0x00, 0x00, + 0x86, 0x00, 0x05, 0x00, 0x0b, 0x01, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, + 0x28, 0x01, 0x00, 0x00, 0xe1, 0x01, 0x00, 0x00, 0x89, 0x00, 0x05, 0x00, + 0x0b, 0x01, 0x00, 0x00, 0x39, 0x01, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, + 0xe1, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x3d, 0x01, 0x00, 0x00, 0x2d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x3e, 0x01, 0x00, 0x00, + 0x3d, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x41, 0x01, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x43, 0x01, 0x00, 0x00, 0x2d, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00, + 0x43, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x46, 0x01, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, + 0x46, 0x01, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x48, 0x01, 0x00, 0x00, 0x3e, 0x01, 0x00, 0x00, 0x41, 0x01, 0x00, 0x00, + 0x44, 0x01, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x4b, 0x01, 0x00, 0x00, 0x2d, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x4c, 0x01, 0x00, 0x00, 0x4b, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x4e, 0x01, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x4f, 0x01, 0x00, 0x00, 0x4e, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0x2d, 0x01, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x52, 0x01, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x55, 0x01, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x56, 0x01, 0x00, 0x00, 0x4c, 0x01, 0x00, 0x00, + 0x4f, 0x01, 0x00, 0x00, 0x52, 0x01, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, + 0x35, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x5a, 0x01, 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x5c, 0x01, 0x00, 0x00, + 0x39, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x5d, 0x01, 0x00, 0x00, 0x5c, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, + 0x35, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, + 0x39, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x63, 0x01, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, + 0x5a, 0x01, 0x00, 0x00, 0x5d, 0x01, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, + 0x63, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x67, 0x01, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, + 0x67, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x6a, 0x01, 0x00, 0x00, 0x39, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x6b, 0x01, 0x00, 0x00, + 0x6a, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x6d, 0x01, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x6e, 0x01, 0x00, 0x00, + 0x6d, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x70, 0x01, 0x00, 0x00, 0x39, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, + 0x70, 0x01, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x72, 0x01, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x6b, 0x01, 0x00, 0x00, + 0x6e, 0x01, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x48, 0x01, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x7c, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x56, 0x01, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x08, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x8a, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x8b, 0x01, 0x00, 0x00, + 0x77, 0x01, 0x00, 0x00, 0x8a, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x8d, 0x01, 0x00, 0x00, 0xe8, 0x01, 0x00, 0x00, + 0x8b, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x90, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x91, 0x01, 0x00, 0x00, + 0x7c, 0x01, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x93, 0x01, 0x00, 0x00, 0x8d, 0x01, 0x00, 0x00, + 0x91, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x96, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x97, 0x01, 0x00, 0x00, + 0x81, 0x01, 0x00, 0x00, 0x96, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x99, 0x01, 0x00, 0x00, 0x93, 0x01, 0x00, 0x00, + 0x97, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x9c, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x9d, 0x01, 0x00, 0x00, + 0x86, 0x01, 0x00, 0x00, 0x9c, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x9f, 0x01, 0x00, 0x00, 0x99, 0x01, 0x00, 0x00, + 0x9d, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa1, 0x01, 0x00, 0x00, 0xe6, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xe2, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xbf, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa3, 0x01, 0x00, 0x00, 0xe4, 0x01, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xab, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa5, 0x01, 0x00, 0x00, + 0xe2, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xad, 0x01, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xae, 0x01, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0xad, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb3, 0x01, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb6, 0x01, 0x00, 0x00, + 0xb3, 0x01, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb7, 0x01, 0x00, 0x00, 0xae, 0x01, 0x00, 0x00, + 0xb6, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, + 0xbe, 0x01, 0x00, 0x00, 0xbb, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0xb7, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xbe, 0x01, 0x00, 0x00, + 0xe3, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_convolutionint4_comp_len = 6364; -const unsigned char glsl_matmulunit_comp[] = { +const unsigned char glsl_convolutionint4_RELU_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0xee, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x61, 0x64, 0x00, 0x06, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x53, 0x69, + 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x64, 0x69, 0x6c, 0x61, 0x74, 0x65, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x42, 0x69, 0x61, 0x73, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x75, 0x42, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x77, 0x73, 0x73, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x75, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x07, 0x01, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x4b, 0x65, 0x72, 0x6e, + 0x65, 0x6c, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x11, 0x01, 0x00, 0x00, 0x75, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x00, + 0x05, 0x00, 0x05, 0x00, 0xbd, 0x01, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0xbd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xbf, 0x01, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x04, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x07, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x07, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0e, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x0f, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x11, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x11, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xbc, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0xbd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0xbd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0xbd, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xbf, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xbf, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xc4, 0x01, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x09, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x98, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x04, 0x01, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x06, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x06, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x01, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x0e, 0x01, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x0f, 0x01, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x10, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x10, 0x01, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x17, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x1b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x43, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x2b, 0x01, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0xa7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, 0xa7, 0x01, 0x00, 0x00, + 0xa7, 0x01, 0x00, 0x00, 0xa7, 0x01, 0x00, 0x00, 0xa7, 0x01, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0xbc, 0x01, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0xbd, 0x01, 0x00, 0x00, 0xbc, 0x01, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0xbe, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xbd, 0x01, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xbe, 0x01, 0x00, 0x00, + 0xbf, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0xc3, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xc4, 0x01, 0x00, 0x00, + 0xc3, 0x01, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0xe4, 0x01, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, + 0x0b, 0x01, 0x00, 0x00, 0xe5, 0x01, 0x00, 0x00, 0x2b, 0x01, 0x00, 0x00, + 0x2b, 0x01, 0x00, 0x00, 0x2b, 0x01, 0x00, 0x00, 0x2b, 0x01, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x06, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xe4, 0x01, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x36, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, + 0xe4, 0x01, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x93, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, 0xe7, 0x01, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0xed, 0x01, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe6, 0x01, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0xa5, 0x01, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0xe6, 0x01, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x04, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xb3, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0xe6, 0x01, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb7, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe8, 0x01, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0xa3, 0x01, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, 0xed, 0x01, 0x00, 0x00, + 0xe7, 0x01, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xec, 0x01, 0x00, 0x00, + 0xbf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc3, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xe8, 0x01, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, + 0xc7, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0xe8, 0x01, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0xe6, 0x01, 0x00, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd3, 0x00, 0x00, 0x00, 0xe8, 0x01, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0xda, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xdc, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdd, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, + 0xdd, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0xec, 0x01, 0x00, 0x00, 0xed, 0x01, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x9f, 0x01, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xea, 0x01, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xa1, 0x01, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, + 0xe8, 0x00, 0x00, 0x00, 0xea, 0x01, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x04, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xed, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0xed, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xef, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, + 0xea, 0x01, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0xf3, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x09, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x02, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x0a, 0x01, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, + 0xea, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x15, 0x01, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x17, 0x01, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, + 0x11, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x19, 0x01, 0x00, 0x00, + 0x18, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1a, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x19, 0x01, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1c, 0x01, 0x00, 0x00, 0x1a, 0x01, 0x00, 0x00, 0x1b, 0x01, 0x00, 0x00, + 0x6d, 0x00, 0x04, 0x00, 0x0b, 0x01, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, + 0x1c, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x23, 0x01, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x17, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, + 0x11, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, + 0x24, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x26, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x25, 0x01, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x27, 0x01, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x1b, 0x01, 0x00, 0x00, + 0x6d, 0x00, 0x04, 0x00, 0x0b, 0x01, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, + 0x27, 0x01, 0x00, 0x00, 0x86, 0x00, 0x05, 0x00, 0x0b, 0x01, 0x00, 0x00, + 0x2d, 0x01, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, 0xe5, 0x01, 0x00, 0x00, + 0x89, 0x00, 0x05, 0x00, 0x0b, 0x01, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, + 0x1d, 0x01, 0x00, 0x00, 0xe5, 0x01, 0x00, 0x00, 0x86, 0x00, 0x05, 0x00, + 0x0b, 0x01, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, + 0xe5, 0x01, 0x00, 0x00, 0x89, 0x00, 0x05, 0x00, 0x0b, 0x01, 0x00, 0x00, + 0x39, 0x01, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0xe5, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3d, 0x01, 0x00, 0x00, + 0x2d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x3e, 0x01, 0x00, 0x00, 0x3d, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x31, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x41, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x43, 0x01, 0x00, 0x00, + 0x2d, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00, 0x43, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x46, 0x01, 0x00, 0x00, + 0x31, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x46, 0x01, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x48, 0x01, 0x00, 0x00, + 0x3e, 0x01, 0x00, 0x00, 0x41, 0x01, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00, + 0x47, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x4b, 0x01, 0x00, 0x00, 0x2d, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x4c, 0x01, 0x00, 0x00, + 0x4b, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x4e, 0x01, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x4f, 0x01, 0x00, 0x00, + 0x4e, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x51, 0x01, 0x00, 0x00, 0x2d, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x52, 0x01, 0x00, 0x00, + 0x51, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x54, 0x01, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, + 0x54, 0x01, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x56, 0x01, 0x00, 0x00, 0x4c, 0x01, 0x00, 0x00, 0x4f, 0x01, 0x00, 0x00, + 0x52, 0x01, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x5a, 0x01, 0x00, 0x00, 0x59, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x5c, 0x01, 0x00, 0x00, 0x39, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x5d, 0x01, 0x00, 0x00, 0x5c, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x60, 0x01, 0x00, 0x00, 0x5f, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0x39, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x63, 0x01, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, 0x5a, 0x01, 0x00, 0x00, + 0x5d, 0x01, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, 0x63, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x67, 0x01, 0x00, 0x00, + 0x35, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x67, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x6a, 0x01, 0x00, 0x00, + 0x39, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x6b, 0x01, 0x00, 0x00, 0x6a, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00, + 0x35, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x6e, 0x01, 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, + 0x39, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, + 0x68, 0x01, 0x00, 0x00, 0x6b, 0x01, 0x00, 0x00, 0x6e, 0x01, 0x00, 0x00, + 0x71, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x77, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x48, 0x01, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x08, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x7c, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x56, 0x01, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x86, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x72, 0x01, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x8a, 0x01, 0x00, 0x00, + 0x0a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x8b, 0x01, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, + 0x8a, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x8d, 0x01, 0x00, 0x00, 0xec, 0x01, 0x00, 0x00, 0x8b, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, + 0x0a, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x91, 0x01, 0x00, 0x00, 0x7c, 0x01, 0x00, 0x00, + 0x90, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x93, 0x01, 0x00, 0x00, 0x8d, 0x01, 0x00, 0x00, 0x91, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x96, 0x01, 0x00, 0x00, + 0x0a, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x97, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, + 0x96, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x99, 0x01, 0x00, 0x00, 0x93, 0x01, 0x00, 0x00, 0x97, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x9c, 0x01, 0x00, 0x00, + 0x0a, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x9d, 0x01, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, + 0x9c, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x9f, 0x01, 0x00, 0x00, 0x99, 0x01, 0x00, 0x00, 0x9d, 0x01, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa1, 0x01, 0x00, 0x00, + 0xea, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xe2, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xbf, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xbf, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa3, 0x01, 0x00, 0x00, 0xe8, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xab, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xab, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa5, 0x01, 0x00, 0x00, 0xe6, 0x01, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0xa9, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0xe7, 0x01, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb1, 0x01, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb2, 0x01, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0xb1, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb7, 0x01, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xba, 0x01, 0x00, 0x00, + 0xb7, 0x01, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbb, 0x01, 0x00, 0x00, 0xb2, 0x01, 0x00, 0x00, + 0xba, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, + 0xc2, 0x01, 0x00, 0x00, 0xbf, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0xbb, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xc2, 0x01, 0x00, 0x00, + 0xa9, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_convolutionint4_RELU_comp_len = 6436; + +const unsigned char glsl_convolutionint4_RELU6_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, - 0x64, 0x65, 0x5f, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, - 0x64, 0x65, 0x5f, 0x61, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, - 0x64, 0x65, 0x5f, 0x62, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, - 0x64, 0x65, 0x5f, 0x63, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x73, 0x74, 0x65, 0x70, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x69, 0x74, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x73, 0x33, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x57, 0x00, 0x00, 0x00, - 0x75, 0x4f, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, 0x73, 0x34, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, - 0x66, 0x00, 0x00, 0x00, 0x75, 0x41, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x73, 0x35, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x74, 0x00, 0x00, 0x00, 0x75, 0x42, 0x4f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, - 0xa7, 0x00, 0x00, 0x00, 0x73, 0x30, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xa9, 0x00, 0x00, 0x00, - 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x41, 0x00, 0x05, 0x00, 0x03, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x73, 0x31, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xb5, 0x00, 0x00, 0x00, - 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x00, 0x05, 0x00, 0x03, 0x00, - 0xc4, 0x00, 0x00, 0x00, 0x64, 0x30, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xc6, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x61, 0x64, 0x00, 0x06, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x53, 0x69, + 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x64, 0x69, 0x6c, 0x61, 0x74, 0x65, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x42, 0x69, 0x61, 0x73, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x75, 0x42, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x77, 0x73, 0x73, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x75, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x07, 0x01, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x4b, 0x65, 0x72, 0x6e, + 0x65, 0x6c, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x11, 0x01, 0x00, 0x00, 0x75, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x00, + 0x05, 0x00, 0x05, 0x00, 0xbf, 0x01, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0xbf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xc1, 0x01, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x57, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, - 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x64, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x66, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x74, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xa6, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, - 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x04, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0xa7, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xa9, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xb2, 0x00, 0x00, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x07, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x07, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xb5, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xc3, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, - 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x11, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x11, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xbe, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0xbf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0xbf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0xc4, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xc6, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0xbf, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xc1, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xc1, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xc6, 0x01, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x09, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x54, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x56, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x65, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x71, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x72, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0xa6, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0xa7, 0x00, 0x00, 0x00, - 0xa6, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xa8, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0xb3, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xb4, 0x00, 0x00, 0x00, - 0xb5, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0xc4, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xc5, 0x00, 0x00, 0x00, - 0xc6, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, - 0xd8, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x26, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x31, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, - 0x33, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x32, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x09, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x98, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x04, 0x01, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x06, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x06, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x01, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x0e, 0x01, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x0f, 0x01, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x10, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x10, 0x01, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x17, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x1b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x43, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x2b, 0x01, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0xa7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, 0xa7, 0x01, 0x00, 0x00, + 0xa7, 0x01, 0x00, 0x00, 0xa7, 0x01, 0x00, 0x00, 0xa7, 0x01, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0xa9, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x40, 0x2c, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0xaa, 0x01, 0x00, 0x00, 0xa9, 0x01, 0x00, 0x00, 0xa9, 0x01, 0x00, 0x00, + 0xa9, 0x01, 0x00, 0x00, 0xa9, 0x01, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0xbe, 0x01, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0xbf, 0x01, 0x00, 0x00, 0xbe, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0xc0, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xbf, 0x01, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc1, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0xc5, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0xc6, 0x01, 0x00, 0x00, 0xc5, 0x01, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0xe6, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x0b, 0x01, 0x00, 0x00, + 0xe7, 0x01, 0x00, 0x00, 0x2b, 0x01, 0x00, 0x00, 0x2b, 0x01, 0x00, 0x00, + 0x2b, 0x01, 0x00, 0x00, 0x2b, 0x01, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x4e, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x50, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5a, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, - 0x12, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x52, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x52, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x5e, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x05, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x62, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x61, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x61, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x68, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x69, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, - 0x6a, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x62, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x62, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, - 0xe7, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, - 0xaf, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, - 0x6d, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x6e, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, - 0x6e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, - 0x77, 0x00, 0x00, 0x00, 0x52, 0x00, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, - 0xe2, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x70, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x70, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x12, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, - 0x62, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0xe8, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x88, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x8c, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x8d, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, - 0x8d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, - 0x92, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, - 0x45, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, - 0x9a, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x53, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, - 0x9e, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, - 0xa4, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0xf6, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, - 0x9e, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x9e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, - 0xac, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xad, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, - 0xad, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xaf, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, - 0xa9, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, - 0xb0, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, - 0xb8, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb9, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, - 0xb9, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xbb, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, - 0xb5, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, - 0xbc, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x53, 0x00, 0x00, 0x00, - 0xbf, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, - 0xe9, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x9f, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x18, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0xc1, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, - 0xc8, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x18, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0xc1, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, - 0xcf, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, - 0xd2, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd3, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, - 0xd3, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd5, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x59, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, - 0xc6, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x03, 0x00, 0xd7, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x33, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x33, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0x4e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x71, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x71, 0x00, 0x00, 0x00, 0xe6, 0x01, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0xe6, 0x01, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0xe9, 0x01, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0xef, 0x01, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe8, 0x01, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0xa5, 0x01, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0xe8, 0x01, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, + 0xaa, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0xb0, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0xb3, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0xe8, 0x01, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, + 0xb7, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbb, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xea, 0x01, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0xa3, 0x01, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0xef, 0x01, 0x00, 0x00, 0xe9, 0x01, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0xee, 0x01, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x54, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xea, 0x01, 0x00, 0x00, + 0xc3, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0xbe, 0x00, 0x00, 0x00, + 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0xc4, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, + 0xea, 0x01, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0xe8, 0x01, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0xea, 0x01, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xd8, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdb, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, + 0xdc, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xde, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0xee, 0x01, 0x00, 0x00, 0xef, 0x01, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0x9f, 0x01, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xec, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0xa1, 0x01, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0xec, 0x01, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, + 0xe2, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, + 0xe2, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xe1, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xee, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0xec, 0x01, 0x00, 0x00, + 0xed, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xf4, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x02, 0x01, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, + 0x07, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, + 0x09, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x01, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0xec, 0x01, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, + 0x14, 0x01, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x17, 0x01, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x19, 0x01, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, + 0x0c, 0x00, 0x06, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x1a, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x19, 0x01, 0x00, 0x00, + 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00, + 0x1a, 0x01, 0x00, 0x00, 0x1b, 0x01, 0x00, 0x00, 0x6d, 0x00, 0x04, 0x00, + 0x0b, 0x01, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, 0x1c, 0x01, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, + 0x15, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x17, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, + 0x0c, 0x00, 0x06, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, + 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, + 0x26, 0x01, 0x00, 0x00, 0x1b, 0x01, 0x00, 0x00, 0x6d, 0x00, 0x04, 0x00, + 0x0b, 0x01, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, + 0x86, 0x00, 0x05, 0x00, 0x0b, 0x01, 0x00, 0x00, 0x2d, 0x01, 0x00, 0x00, + 0x1d, 0x01, 0x00, 0x00, 0xe7, 0x01, 0x00, 0x00, 0x89, 0x00, 0x05, 0x00, + 0x0b, 0x01, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x00, + 0xe7, 0x01, 0x00, 0x00, 0x86, 0x00, 0x05, 0x00, 0x0b, 0x01, 0x00, 0x00, + 0x35, 0x01, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0xe7, 0x01, 0x00, 0x00, + 0x89, 0x00, 0x05, 0x00, 0x0b, 0x01, 0x00, 0x00, 0x39, 0x01, 0x00, 0x00, + 0x28, 0x01, 0x00, 0x00, 0xe7, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x3d, 0x01, 0x00, 0x00, 0x2d, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x3e, 0x01, 0x00, 0x00, 0x3d, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x41, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x43, 0x01, 0x00, 0x00, 0x2d, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x44, 0x01, 0x00, 0x00, 0x43, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x46, 0x01, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x47, 0x01, 0x00, 0x00, 0x46, 0x01, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x48, 0x01, 0x00, 0x00, 0x3e, 0x01, 0x00, 0x00, + 0x41, 0x01, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x4b, 0x01, 0x00, 0x00, + 0x2d, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x4c, 0x01, 0x00, 0x00, 0x4b, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x4e, 0x01, 0x00, 0x00, + 0x31, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x4f, 0x01, 0x00, 0x00, 0x4e, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, + 0x2d, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x52, 0x01, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, + 0x31, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x56, 0x01, 0x00, 0x00, + 0x4c, 0x01, 0x00, 0x00, 0x4f, 0x01, 0x00, 0x00, 0x52, 0x01, 0x00, 0x00, + 0x55, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x59, 0x01, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x5a, 0x01, 0x00, 0x00, + 0x59, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x5c, 0x01, 0x00, 0x00, 0x39, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x5d, 0x01, 0x00, 0x00, + 0x5c, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x5f, 0x01, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, + 0x5f, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x62, 0x01, 0x00, 0x00, 0x39, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x63, 0x01, 0x00, 0x00, + 0x62, 0x01, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x64, 0x01, 0x00, 0x00, 0x5a, 0x01, 0x00, 0x00, 0x5d, 0x01, 0x00, 0x00, + 0x60, 0x01, 0x00, 0x00, 0x63, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x67, 0x01, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x68, 0x01, 0x00, 0x00, 0x67, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x6a, 0x01, 0x00, 0x00, 0x39, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x6b, 0x01, 0x00, 0x00, 0x6a, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00, 0x35, 0x01, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x6e, 0x01, 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x39, 0x01, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x71, 0x01, 0x00, 0x00, 0x70, 0x01, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, + 0x6b, 0x01, 0x00, 0x00, 0x6e, 0x01, 0x00, 0x00, 0x71, 0x01, 0x00, 0x00, + 0x0c, 0x00, 0x08, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x48, 0x01, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x7c, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x56, 0x01, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x81, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x64, 0x01, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x08, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x8a, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x8b, 0x01, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0x8a, 0x01, 0x00, 0x00, + 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x8d, 0x01, 0x00, 0x00, + 0xee, 0x01, 0x00, 0x00, 0x8b, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x91, 0x01, 0x00, 0x00, 0x7c, 0x01, 0x00, 0x00, 0x90, 0x01, 0x00, 0x00, + 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x93, 0x01, 0x00, 0x00, + 0x8d, 0x01, 0x00, 0x00, 0x91, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x96, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x97, 0x01, 0x00, 0x00, 0x81, 0x01, 0x00, 0x00, 0x96, 0x01, 0x00, 0x00, + 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x99, 0x01, 0x00, 0x00, + 0x93, 0x01, 0x00, 0x00, 0x97, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x9c, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x9d, 0x01, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x9c, 0x01, 0x00, 0x00, + 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x9f, 0x01, 0x00, 0x00, + 0x99, 0x01, 0x00, 0x00, 0x9d, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa1, 0x01, 0x00, 0x00, 0xec, 0x01, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xbf, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xbf, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa3, 0x01, 0x00, 0x00, + 0xea, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xbe, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xab, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xab, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa5, 0x01, 0x00, 0x00, 0xe8, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xaa, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0xab, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0xe9, 0x01, 0x00, 0x00, 0xa8, 0x01, 0x00, 0x00, 0xaa, 0x01, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb3, 0x01, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb4, 0x01, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0xb3, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb9, 0x01, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbc, 0x01, 0x00, 0x00, + 0xb9, 0x01, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbd, 0x01, 0x00, 0x00, 0xb4, 0x01, 0x00, 0x00, + 0xbc, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, + 0xc4, 0x01, 0x00, 0x00, 0xc1, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0xbd, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xc4, 0x01, 0x00, 0x00, + 0xab, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_convolutionint4_RELU6_comp_len = 6484; + +const unsigned char glsl_avgpool_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x70, 0x61, 0x64, 0x00, 0x06, 0x00, 0x06, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x53, 0x69, + 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x79, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xb6, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x07, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x07, 0x00, 0x36, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x79, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x04, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x36, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x36, 0x00, 0x00, 0x00, + 0xc4, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0xc7, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x69, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x69, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x36, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0xc5, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, + 0xc5, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x7f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x80, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x81, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x83, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x80, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x86, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x92, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, + 0xc7, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x69, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x60, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x60, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x80, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x80, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa5, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0xa5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, + 0xac, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0xad, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, + 0x36, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x91, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0xb3, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x2f, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_avgpool_comp_len = 3256; + +const unsigned char glsl_maxpool_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x70, 0x61, 0x64, 0x00, 0x06, 0x00, 0x06, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x53, 0x69, + 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xa5, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x07, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x50, 0xc3, 0xc7, + 0x2c, 0x00, 0x07, 0x00, 0x36, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x71, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0xa5, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x36, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x36, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb2, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x62, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x04, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x73, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x73, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x75, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x36, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x5a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x92, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x96, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x96, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0x9e, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x82, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_maxpool_comp_len = 3068; + +const unsigned char glsl_convolutionint8_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x9a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x61, 0x64, 0x00, 0x06, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x53, 0x69, + 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x64, 0x69, 0x6c, 0x61, 0x74, 0x65, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x42, 0x69, 0x61, 0x73, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x75, 0x42, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x77, 0x73, 0x73, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x75, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x07, 0x01, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x4b, 0x65, 0x72, 0x6e, + 0x65, 0x6c, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x0f, 0x01, 0x00, 0x00, 0x75, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x7a, 0x01, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x7a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x7c, 0x01, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x04, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x07, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x07, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0c, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x0d, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0f, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x79, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x7a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x7a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x7a, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x7c, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x7c, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x81, 0x01, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x09, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x98, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x04, 0x01, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x06, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x06, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x0c, 0x01, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x0d, 0x01, 0x00, 0x00, + 0x0c, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0e, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0e, 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x15, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x79, 0x01, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x7a, 0x01, 0x00, 0x00, + 0x79, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x7b, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x7a, 0x01, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x7b, 0x01, 0x00, 0x00, 0x7c, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x81, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x91, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x06, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x91, 0x01, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x36, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, + 0x91, 0x01, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x93, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x93, 0x01, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x99, 0x01, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x92, 0x01, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x66, 0x01, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0x92, 0x01, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x04, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xb3, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x92, 0x01, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb7, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x94, 0x01, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x99, 0x01, 0x00, 0x00, + 0x93, 0x01, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, + 0xbf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc3, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0x94, 0x01, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, + 0xc7, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0x94, 0x01, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x92, 0x01, 0x00, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd3, 0x00, 0x00, 0x00, 0x94, 0x01, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0xda, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xdc, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdd, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, + 0xdd, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, 0x99, 0x01, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x96, 0x01, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, + 0xe8, 0x00, 0x00, 0x00, 0x96, 0x01, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x04, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xed, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0xed, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xef, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, + 0x96, 0x01, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0xf3, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x09, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x02, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x0a, 0x01, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x12, 0x01, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, + 0x96, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x13, 0x01, 0x00, 0x00, 0x12, 0x01, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x15, 0x01, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, + 0x0f, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, + 0x16, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x18, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x17, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1e, 0x01, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x15, 0x01, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, + 0x0f, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, + 0x1f, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x21, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x20, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x27, 0x01, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x15, 0x01, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, + 0x0f, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, + 0x28, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x2a, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x29, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x30, 0x01, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x15, 0x01, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, + 0x0f, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, + 0x31, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x33, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x32, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x38, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x18, 0x01, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x08, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x3d, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x2a, 0x01, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x47, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x33, 0x01, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x4b, 0x01, 0x00, 0x00, + 0x0a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x4c, 0x01, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, + 0x4b, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x4e, 0x01, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, 0x4c, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, + 0x0a, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x52, 0x01, 0x00, 0x00, 0x3d, 0x01, 0x00, 0x00, + 0x51, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x54, 0x01, 0x00, 0x00, 0x4e, 0x01, 0x00, 0x00, 0x52, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x57, 0x01, 0x00, 0x00, + 0x0a, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00, + 0x57, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x5a, 0x01, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x5d, 0x01, 0x00, 0x00, + 0x0a, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x5e, 0x01, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, + 0x5d, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x60, 0x01, 0x00, 0x00, 0x5a, 0x01, 0x00, 0x00, 0x5e, 0x01, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, + 0x96, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xe2, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xbf, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xbf, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x64, 0x01, 0x00, 0x00, 0x94, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xab, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xab, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x66, 0x01, 0x00, 0x00, 0x92, 0x01, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6e, 0x01, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x6f, 0x01, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x6e, 0x01, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x78, 0x01, 0x00, 0x00, 0x6f, 0x01, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0x7f, 0x01, 0x00, 0x00, + 0x7c, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x78, 0x01, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x7f, 0x01, 0x00, 0x00, 0x93, 0x01, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x57, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_convolutionint8_comp_len = 5616; + +const unsigned char glsl_convolutionint8_RELU_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x9e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x61, 0x64, 0x00, 0x06, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x53, 0x69, + 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x64, 0x69, 0x6c, 0x61, 0x74, 0x65, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x42, 0x69, 0x61, 0x73, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x75, 0x42, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x77, 0x73, 0x73, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x75, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x07, 0x01, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x4b, 0x65, 0x72, 0x6e, + 0x65, 0x6c, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x0f, 0x01, 0x00, 0x00, 0x75, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x7e, 0x01, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x7e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x80, 0x01, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x04, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x07, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x07, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0c, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x0d, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0f, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x7d, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x7e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x7e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x7e, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x80, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x80, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x85, 0x01, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x09, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x98, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x04, 0x01, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x06, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x06, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x0c, 0x01, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x0d, 0x01, 0x00, 0x00, + 0x0c, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0e, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0e, 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x15, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x68, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, + 0x68, 0x01, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x7d, 0x01, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x7e, 0x01, 0x00, 0x00, 0x7d, 0x01, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x7f, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x7e, 0x01, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x7f, 0x01, 0x00, 0x00, + 0x80, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00, 0x00, + 0x84, 0x01, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x95, 0x01, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x71, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x71, 0x00, 0x00, 0x00, 0x95, 0x01, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x95, 0x01, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x97, 0x01, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x9d, 0x01, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x96, 0x01, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x66, 0x01, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0x96, 0x01, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, + 0xaa, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0xb0, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0xb3, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0x96, 0x01, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, + 0xb7, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbb, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x98, 0x01, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x64, 0x01, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x9d, 0x01, 0x00, 0x00, 0x97, 0x01, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0x9c, 0x01, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x54, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, + 0xc3, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0xbe, 0x00, 0x00, 0x00, + 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0xc4, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, + 0x98, 0x01, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x96, 0x01, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0x98, 0x01, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xd8, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdb, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, + 0xdc, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xde, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x9c, 0x01, 0x00, 0x00, 0x9d, 0x01, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0x60, 0x01, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x9a, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0x9a, 0x01, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, + 0xe2, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, + 0xe2, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xe1, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xee, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0x9a, 0x01, 0x00, 0x00, + 0xed, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xf4, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x02, 0x01, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, + 0x07, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, + 0x09, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x12, 0x01, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0x9a, 0x01, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, + 0x12, 0x01, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x15, 0x01, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, + 0x0c, 0x00, 0x06, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, + 0x13, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x15, 0x01, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, + 0x0c, 0x00, 0x06, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, + 0x13, 0x01, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x15, 0x01, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, + 0x0c, 0x00, 0x06, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x2a, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, + 0x13, 0x01, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x15, 0x01, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, + 0x0c, 0x00, 0x06, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, + 0x0c, 0x00, 0x08, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x3d, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x42, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x2a, 0x01, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x08, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x4b, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x4c, 0x01, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, 0x4b, 0x01, 0x00, 0x00, + 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x4e, 0x01, 0x00, 0x00, + 0x9c, 0x01, 0x00, 0x00, 0x4c, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x52, 0x01, 0x00, 0x00, 0x3d, 0x01, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, + 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, + 0x4e, 0x01, 0x00, 0x00, 0x52, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x57, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x58, 0x01, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00, 0x57, 0x01, 0x00, 0x00, + 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x5a, 0x01, 0x00, 0x00, + 0x54, 0x01, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x5d, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x5e, 0x01, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x5d, 0x01, 0x00, 0x00, + 0x81, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, + 0x5a, 0x01, 0x00, 0x00, 0x5e, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0x9a, 0x01, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xbf, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xbf, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, + 0x98, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xbe, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xab, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xab, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x66, 0x01, 0x00, 0x00, 0x96, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xaa, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x6a, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x97, 0x01, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x73, 0x01, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x72, 0x01, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x78, 0x01, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x7b, 0x01, 0x00, 0x00, 0x78, 0x01, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x7c, 0x01, 0x00, 0x00, 0x73, 0x01, 0x00, 0x00, 0x7b, 0x01, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, + 0x80, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x7c, 0x01, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x83, 0x01, 0x00, 0x00, 0x6a, 0x01, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x57, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_convolutionint8_RELU_comp_len = 5688; + +const unsigned char glsl_convolutionint8_RELU6_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xa0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x61, 0x64, 0x00, 0x06, 0x00, 0x06, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x53, 0x69, + 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x64, 0x69, 0x6c, 0x61, 0x74, 0x65, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x42, 0x69, 0x61, 0x73, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x75, 0x42, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x77, 0x73, 0x73, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x75, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x07, 0x01, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x4b, 0x65, 0x72, 0x6e, + 0x65, 0x6c, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x0f, 0x01, 0x00, 0x00, 0x75, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x80, 0x01, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x82, 0x01, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x16, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x04, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x07, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x07, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0c, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x0d, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0f, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x7f, 0x01, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x80, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x82, 0x01, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x82, 0x01, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x87, 0x01, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x09, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x98, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x04, 0x01, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x06, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x06, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x0c, 0x01, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x0d, 0x01, 0x00, 0x00, + 0x0c, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0e, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0e, 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x15, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x68, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x69, 0x01, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, + 0x68, 0x01, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x6a, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x40, 0x2c, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x6b, 0x01, 0x00, 0x00, 0x6a, 0x01, 0x00, 0x00, 0x6a, 0x01, 0x00, 0x00, + 0x6a, 0x01, 0x00, 0x00, 0x6a, 0x01, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x7f, 0x01, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x80, 0x01, 0x00, 0x00, 0x7f, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x81, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x81, 0x01, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x86, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x87, 0x01, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x97, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x97, 0x01, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x83, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, + 0x83, 0x00, 0x00, 0x00, 0x97, 0x01, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x99, 0x01, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x9f, 0x01, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x66, 0x01, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x54, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x98, 0x01, 0x00, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, + 0x98, 0x01, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb8, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x9a, 0x01, 0x00, 0x00, + 0xbb, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, + 0xbf, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x9f, 0x01, 0x00, 0x00, 0x99, 0x01, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x9e, 0x01, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x54, 0x00, 0x00, 0x00, + 0xc4, 0x00, 0x00, 0x00, 0x9a, 0x01, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x04, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0xc7, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc8, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x9a, 0x01, 0x00, 0x00, + 0xc8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, + 0x98, 0x01, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x9a, 0x01, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0xd8, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xda, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, + 0xd3, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, + 0xdb, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x9e, 0x01, 0x00, 0x00, + 0x9f, 0x01, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x9c, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0x62, 0x01, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x54, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x9c, 0x01, 0x00, 0x00, + 0xdd, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0xe2, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0xe8, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, + 0xb8, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, + 0xee, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xf3, 0x00, 0x00, 0x00, 0x9c, 0x01, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0xf4, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, + 0xef, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0xed, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, + 0xfa, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0x01, 0x00, 0x00, + 0xde, 0x00, 0x00, 0x00, 0x9c, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x12, 0x01, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x15, 0x01, 0x00, 0x00, + 0x16, 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x13, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x17, 0x01, 0x00, 0x00, 0x16, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x17, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x15, 0x01, 0x00, 0x00, + 0x1f, 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x1e, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x20, 0x01, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x15, 0x01, 0x00, 0x00, + 0x28, 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x27, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x29, 0x01, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x2a, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x29, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x15, 0x01, 0x00, 0x00, + 0x31, 0x01, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x30, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x32, 0x01, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x38, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x3d, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x21, 0x01, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x08, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x2a, 0x01, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x47, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x4b, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x4c, 0x01, 0x00, 0x00, + 0x38, 0x01, 0x00, 0x00, 0x4b, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x4e, 0x01, 0x00, 0x00, 0x9e, 0x01, 0x00, 0x00, + 0x4c, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x51, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x52, 0x01, 0x00, 0x00, + 0x3d, 0x01, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x4e, 0x01, 0x00, 0x00, + 0x52, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x57, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, + 0x42, 0x01, 0x00, 0x00, 0x57, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x5a, 0x01, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, + 0x58, 0x01, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x5d, 0x01, 0x00, 0x00, 0x0a, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x5e, 0x01, 0x00, 0x00, + 0x47, 0x01, 0x00, 0x00, 0x5d, 0x01, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x60, 0x01, 0x00, 0x00, 0x5a, 0x01, 0x00, 0x00, + 0x5e, 0x01, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x62, 0x01, 0x00, 0x00, 0x9c, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xe2, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xbf, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x64, 0x01, 0x00, 0x00, 0x9a, 0x01, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xab, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x66, 0x01, 0x00, 0x00, + 0x98, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x08, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x99, 0x01, 0x00, 0x00, + 0x69, 0x01, 0x00, 0x00, 0x6b, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x75, 0x01, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7a, 0x01, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x7d, 0x01, 0x00, 0x00, 0x7a, 0x01, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x7e, 0x01, 0x00, 0x00, 0x75, 0x01, 0x00, 0x00, 0x7d, 0x01, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0x85, 0x01, 0x00, 0x00, + 0x82, 0x01, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x7e, 0x01, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x85, 0x01, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x57, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_matmulunit_comp_len = 4500; +unsigned int glsl_convolutionint8_RELU6_comp_len = 5736; -const unsigned char glsl_blitregion_comp[] = { +const unsigned char glsl_onehot_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -17978,1309 +26092,2242 @@ const unsigned char glsl_blitregion_comp[] = { 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x74, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x73, 0x74, 0x65, 0x70, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x69, 0x74, 0x65, 0x72, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00, 0x73, 0x31, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x75, 0x53, 0x72, 0x63, 0x4f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x6e, 0x00, 0x00, 0x00, - 0x73, 0x32, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x74, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, + 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, 0x75, 0x44, 0x73, 0x74, - 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, - 0xab, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0xab, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xad, 0x00, 0x00, 0x00, - 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x05, 0x00, 0x03, 0x00, - 0xb0, 0x00, 0x00, 0x00, 0x73, 0x30, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xb2, 0x00, 0x00, 0x00, - 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, + 0x31, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x03, 0x00, 0x59, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x6e, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x32, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x66, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x57, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x6e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x6e, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0xab, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0xab, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0xab, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xad, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xad, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0xb0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0xb0, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xb2, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xb2, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x07, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, - 0x1d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x4b, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x03, 0x00, 0x55, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x6e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x6f, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0xab, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0xac, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0xab, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xac, 0x00, 0x00, 0x00, - 0xad, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0xaf, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0xb0, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0xb1, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0xb7, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x1d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x26, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x26, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x2d, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, - 0x31, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x34, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x35, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, - 0x35, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x37, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x35, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0xad, 0x00, 0x05, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x2d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x51, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, - 0x61, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x64, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x51, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x51, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xca, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x64, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x4b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, - 0xad, 0x00, 0x05, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, - 0x66, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, - 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x68, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x69, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x76, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x69, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x69, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, - 0x75, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0x76, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x7d, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x7e, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, - 0x7e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x81, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x85, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, - 0x86, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x8a, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x85, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x4e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, - 0x8d, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x90, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x95, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x9a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0xa0, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa2, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0xb4, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x91, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, - 0xb5, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, - 0x4e, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0xb6, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x61, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x1d, 0x00, 0x03, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x05, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x55, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x55, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x55, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x73, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0x6c, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_blitregion_comp_len = 3536; +unsigned int glsl_onehot_comp_len = 2264; -const unsigned char glsl_range_comp[] = { +const unsigned char glsl_binary_blit_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x16, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x3e, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x00, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, - 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, - 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x05, 0x00, 0x06, 0x00, - 0x29, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, - 0x75, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, - 0x31, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x75, 0x53, 0x74, 0x61, 0x72, 0x74, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x28, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, - 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x2b, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, - 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x31, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x14, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x86, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x86, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x29, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x31, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x31, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x3a, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x6f, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x2d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x08, 0x00, 0x20, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0x37, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x85, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x87, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdf, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0xda, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0x15, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0x9f, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_range_comp_len = 1652; +unsigned int glsl_binary_blit_comp_len = 1760; + +const unsigned char glsl_binary_blit_ADD_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x89, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x88, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x96, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb6, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, + 0xcf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x73, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x81, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdd, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe3, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x50, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_blit_ADD_comp_len = 2808; -const unsigned char glsl_avgpool_comp[] = { +const unsigned char glsl_binary_blit_ATAN2_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x41, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, - 0x06, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x70, 0x61, 0x64, 0x00, 0x06, 0x00, 0x06, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x53, 0x69, - 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, - 0x7a, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x00, 0x00, - 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x89, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x79, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x7c, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xb6, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x07, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x02, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x2b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x35, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, - 0x35, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x35, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x07, 0x00, 0x36, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x79, 0x00, 0x00, 0x00, - 0x36, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0x79, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x7b, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x7b, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0xb5, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, - 0xb5, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x88, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x96, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x05, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x04, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, - 0x2f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x2e, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x34, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, - 0x35, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x56, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x6f, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, - 0x56, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, 0x35, 0x00, 0x00, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x07, 0x00, 0x36, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x36, 0x00, 0x00, 0x00, - 0xc4, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, - 0xc7, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, - 0x64, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x65, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x69, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x69, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x36, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, - 0x5e, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, - 0x68, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, - 0x6a, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x05, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0xc5, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, - 0x6b, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, - 0x6b, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x6a, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, - 0xc5, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x76, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x7f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x80, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, - 0x81, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x83, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x80, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x86, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, - 0x77, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, - 0x85, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x8d, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x92, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, - 0x90, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, - 0x36, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, - 0xc7, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x98, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x69, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x6b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x60, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x60, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x80, 0x00, 0x00, 0x00, - 0xa1, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x4e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, - 0xa2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x80, 0x00, 0x00, 0x00, - 0xa4, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa5, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0xa5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa9, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, - 0xa9, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, - 0xac, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xaf, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, - 0xad, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, - 0x36, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x91, 0x00, 0x00, 0x00, - 0xb4, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, - 0xb0, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xb4, 0x00, 0x00, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x2f, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x2f, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, - 0x38, 0x00, 0x01, 0x00 + 0x3d, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb6, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, + 0xcf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x73, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x81, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdd, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe3, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x92, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x71, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_blit_ATAN2_comp_len = 2816; + +const unsigned char glsl_binary_blit_SUB_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x89, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x88, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x96, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb6, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, + 0xcf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x73, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x81, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdd, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe3, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x50, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_blit_SUB_comp_len = 2808; + +const unsigned char glsl_binary_blit_MUL_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x89, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x88, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x96, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb6, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, + 0xcf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x73, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x81, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdd, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe3, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x50, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_blit_MUL_comp_len = 2808; + +const unsigned char glsl_binary_blit_DIV_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x89, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x88, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x96, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb6, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, + 0xcf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x73, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x81, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdd, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe3, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x50, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_avgpool_comp_len = 3256; +unsigned int glsl_binary_blit_DIV_comp_len = 2808; -const unsigned char glsl_maxpool_comp[] = { +const unsigned char glsl_binary_blit_POW_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x41, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, - 0x06, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x70, 0x61, 0x64, 0x00, 0x06, 0x00, 0x06, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x53, 0x69, - 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, - 0x6b, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x6d, 0x00, 0x00, 0x00, - 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, - 0x8d, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x89, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x6a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x6b, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6d, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x8c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x8d, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xa5, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x07, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x02, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x2b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x35, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, - 0x35, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x35, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x50, 0xc3, 0xc7, - 0x2c, 0x00, 0x07, 0x00, 0x36, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x6b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x6c, 0x00, 0x00, 0x00, - 0x6d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x71, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x36, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x8c, 0x00, 0x00, 0x00, - 0x36, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x8d, 0x00, 0x00, 0x00, - 0x8c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0xa5, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x2b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x2d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, - 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x2d, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x31, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x7e, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, - 0x12, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x36, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x05, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, - 0xb0, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x5a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x36, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb2, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x62, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, - 0xf6, 0x00, 0x04, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x67, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x73, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x73, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x75, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x76, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, - 0x76, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x7a, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, - 0x7a, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, - 0x7d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, - 0x7e, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, - 0x31, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x36, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x07, 0x00, 0x36, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, - 0xb4, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x5a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x92, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x95, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x9a, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x9a, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa0, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0x9e, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x82, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x31, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0xa3, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x2f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x88, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x96, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb6, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, + 0xcf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x73, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x81, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdd, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe3, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x92, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x71, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_maxpool_comp_len = 3068; +unsigned int glsl_binary_blit_POW_comp_len = 2816; -const unsigned char glsl_onehot_comp[] = { +const unsigned char glsl_binary_blit_VMAX_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x41, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x74, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, - 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0x57, 0x00, 0x00, 0x00, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, - 0x31, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x57, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x03, 0x00, 0x59, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x6e, 0x00, - 0x05, 0x00, 0x06, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x32, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x89, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x65, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x8b, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, - 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x42, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, - 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x5e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x64, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, - 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x65, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x6d, 0x00, 0x00, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, - 0x1d, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x58, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x5e, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x64, 0x00, 0x00, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x65, 0x00, 0x00, 0x00, - 0x64, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x66, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x6d, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x2d, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0x32, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x26, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x49, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x42, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x39, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x06, 0x00, 0x39, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0xb8, 0x00, 0x05, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x52, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x55, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x61, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, - 0x62, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x55, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x55, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x39, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x6b, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x6b, 0x00, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, - 0x38, 0x00, 0x01, 0x00 + 0x49, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x88, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x96, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb6, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, + 0xcf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x73, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x81, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdd, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe3, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x92, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x71, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_onehot_comp_len = 2248; +unsigned int glsl_binary_blit_VMAX_comp_len = 2816; -const unsigned char glsl_binary_blit_comp[] = { +const unsigned char glsl_binary_blit_SQUDIFF_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x16, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x3e, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x45, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x06, 0x00, 0x86, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x05, 0x00, 0x06, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x88, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x85, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x86, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x86, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xa1, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x85, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x86, 0x00, 0x00, 0x00, - 0x85, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x87, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x87, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, - 0xa0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x92, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x51, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x92, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x43, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd7, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, - 0xd7, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xac, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0xac, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xdf, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, - 0xda, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe5, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xec, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, - 0x15, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, - 0x6e, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0x9f, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x77, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xca, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, + 0xca, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, + 0xcd, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, + 0xd3, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, + 0xd4, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x77, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe7, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xed, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, + 0xef, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x96, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, + 0x9f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x96, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x75, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0xa6, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x54, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x54, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_blit_comp_len = 1760; +unsigned int glsl_binary_blit_SQUDIFF_comp_len = 2828; -const unsigned char glsl_binary_blit_ADD_comp[] = { +const unsigned char glsl_binary_blit_VMIN_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, @@ -19506,333 +28553,346 @@ const unsigned char glsl_binary_blit_ADD_comp[] = { 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0xa1, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x03, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x50, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x92, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x71, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_blit_ADD_comp_len = 2808; +unsigned int glsl_binary_blit_VMIN_comp_len = 2816; -const unsigned char glsl_binary_blit_SUB_comp[] = { +const unsigned char glsl_binary_blit_LESS_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x48, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x06, 0x00, 0x89, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x05, 0x00, 0x06, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x91, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x94, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x90, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x96, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x99, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x9f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xab, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x88, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x8d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, - 0xa3, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x4b, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x9e, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, + 0xb7, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x79, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb0, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, - 0xab, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb6, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0xef, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0xea, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xc6, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, - 0xc6, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, - 0xc9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xcc, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, - 0xcc, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, - 0xcf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd2, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x73, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x81, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xdd, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, - 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe3, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, - 0xeb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, - 0x99, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0xa1, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x03, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x50, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0xf6, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x96, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x98, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x05, 0x00, 0x39, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x56, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_blit_SUB_comp_len = 2808; +unsigned int glsl_binary_blit_LESS_comp_len = 2952; -const unsigned char glsl_binary_blit_MUL_comp[] = { +const unsigned char glsl_binary_blit_LESSEQUAL_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x48, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x06, 0x00, 0x89, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x05, 0x00, 0x06, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x91, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x94, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x90, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x96, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x99, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x9f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xab, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, @@ -19845,232 +28905,244 @@ const unsigned char glsl_binary_blit_MUL_comp[] = { 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x88, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x8d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, - 0xa3, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x4b, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x9e, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, + 0xb7, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x79, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb0, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, - 0xab, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb6, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0xef, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0xea, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xc6, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, - 0xc6, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, - 0xc9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xcc, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, - 0xcc, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, - 0xcf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd2, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x73, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x81, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xdd, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, - 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe3, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, - 0xeb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, - 0x99, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0xa1, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x03, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x50, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0xf6, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x96, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x98, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x05, 0x00, 0x39, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x56, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_blit_MUL_comp_len = 2808; +unsigned int glsl_binary_blit_LESSEQUAL_comp_len = 2952; -const unsigned char glsl_binary_blit_DIV_comp[] = { +const unsigned char glsl_binary_blit_GREATER_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x48, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x06, 0x00, 0x89, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x05, 0x00, 0x06, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x91, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x94, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x90, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x96, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x99, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x9f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xab, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, @@ -20083,471 +29155,494 @@ const unsigned char glsl_binary_blit_DIV_comp[] = { 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x88, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x8d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, - 0xa3, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x4b, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x9e, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, + 0xb7, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x79, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb0, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, - 0xab, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb6, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0xef, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0xea, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xc6, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, - 0xc6, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, - 0xc9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xcc, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, - 0xcc, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, - 0xcf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd2, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x73, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x81, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xdd, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, - 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe3, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, - 0xeb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, - 0x99, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0xa1, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x03, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x50, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0xf6, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x96, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x98, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0xba, 0x00, 0x05, 0x00, 0x39, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x56, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_blit_DIV_comp_len = 2808; +unsigned int glsl_binary_blit_GREATER_comp_len = 2952; -const unsigned char glsl_binary_blit_POW_comp[] = { +const unsigned char glsl_binary_blit_GREATEREQUAL_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x48, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x06, 0x00, 0x89, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x05, 0x00, 0x06, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x91, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x94, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x90, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x99, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x88, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x8d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, - 0xa3, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x4b, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x96, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x9f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xab, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x9e, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, + 0xb7, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x79, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb0, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, - 0xab, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb6, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0xef, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0xea, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xc6, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, - 0xc6, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, - 0xc9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xcc, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, - 0xcc, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, - 0xcf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd2, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x73, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x81, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xdd, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, - 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe3, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, - 0xeb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, - 0x99, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x92, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x71, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, - 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0xf6, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x96, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x98, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x05, 0x00, 0x39, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x56, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_blit_POW_comp_len = 2816; +unsigned int glsl_binary_blit_GREATEREQUAL_comp_len = 2952; -const unsigned char glsl_binary_blit_VMAX_comp[] = { +const unsigned char glsl_binary_blit_EQUAL_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x48, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x06, 0x00, 0x89, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x05, 0x00, 0x06, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x91, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x94, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x90, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x96, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x99, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x9f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xab, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, @@ -20560,157 +29655,168 @@ const unsigned char glsl_binary_blit_VMAX_comp[] = { 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x88, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x8d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, - 0xa3, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x4b, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb0, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, - 0xab, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb6, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xc6, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, - 0xc6, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, - 0xc9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xcc, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, - 0xcc, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, - 0xcf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd2, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x73, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x81, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xdd, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, - 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe3, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, - 0xeb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, - 0x99, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x92, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x71, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, - 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x9e, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, + 0xb7, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x79, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xef, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0xea, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x96, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x98, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x05, 0x00, 0x39, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x56, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_blit_VMAX_comp_len = 2816; +unsigned int glsl_binary_blit_EQUAL_comp_len = 2952; -const unsigned char glsl_binary_blit_SQUDIFF_comp[] = { +const unsigned char glsl_binary_blit_NOTEQUAL_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, @@ -20718,75 +29824,75 @@ const unsigned char glsl_binary_blit_SQUDIFF_comp[] = { 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x45, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x48, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x06, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x05, 0x00, 0x06, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x92, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x91, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x94, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8d, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x92, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0x96, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x9b, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x9f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xab, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, @@ -20799,158 +29905,168 @@ const unsigned char glsl_binary_blit_SQUDIFF_comp[] = { 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, - 0x45, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x4b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x4e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x02, 0x00, 0x51, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x77, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x8d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x91, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x92, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x9a, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, - 0xa7, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x43, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x45, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x54, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x4e, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x77, 0x00, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xac, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, - 0xac, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, + 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x9e, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, + 0xb7, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x79, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb4, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, - 0xaf, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xba, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, - 0xb5, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0xef, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0xea, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xc1, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x77, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xca, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00, - 0xca, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, - 0xcd, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, - 0xd0, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, - 0xd3, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd6, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, - 0xd4, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x77, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, - 0x85, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x88, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe1, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, - 0x88, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe7, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, - 0x88, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, - 0x6b, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xed, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, - 0x88, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, - 0xef, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x96, 0x00, 0x00, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0xc1, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x98, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, - 0x98, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x96, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, - 0x9f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0xa1, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, - 0xa0, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, - 0xa1, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0xfd, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, - 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x96, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x75, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0xa6, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x54, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x54, 0x00, 0x00, 0x00, - 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0xf6, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x96, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x98, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x05, 0x00, 0x39, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x56, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_blit_SQUDIFF_comp_len = 2828; +unsigned int glsl_binary_blit_NOTEQUAL_comp_len = 2952; -const unsigned char glsl_binary_blit_VMIN_comp[] = { +const unsigned char glsl_binary_blit_VMOD_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, @@ -21176,1754 +30292,1889 @@ const unsigned char glsl_binary_blit_VMIN_comp[] = { 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x92, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x71, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, - 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x05, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x50, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_blit_VMIN_comp_len = 2816; +unsigned int glsl_binary_blit_VMOD_comp_len = 2808; -const unsigned char glsl_binary_blit_LESS_comp[] = { +const unsigned char glsl_binary_blit_FLOORDIV_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x47, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x47, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x40, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x75, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, + 0x75, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, + 0xac, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb7, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0xb2, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x74, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc7, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, + 0xc7, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, + 0xca, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcd, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, + 0xcd, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd3, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xde, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xea, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x9e, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x9e, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x93, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0xa3, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x51, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x51, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_blit_FLOORDIV_comp_len = 2832; + +const unsigned char glsl_binary_blit_FLOORMOD_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x26, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x46, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x06, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x05, 0x00, 0x06, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x91, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x94, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x90, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x93, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x9e, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x52, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x92, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x44, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x79, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x79, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xad, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0xad, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbb, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0xb6, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc2, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x78, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, + 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, + 0xce, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, + 0xd4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, + 0xd5, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x86, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe2, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, + 0x71, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe8, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, + 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xee, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, + 0xf0, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, + 0xc2, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x97, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, + 0x9e, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x25, 0x01, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0xa6, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x97, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x55, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x55, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_blit_FLOORMOD_comp_len = 2880; + +const unsigned char glsl_unary_int_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x6c, 0x6f, 0x70, + 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x25, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x21, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x21, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_unary_int_comp_len = 1400; + +const unsigned char glsl_unary_int_ABS_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x6c, 0x6f, 0x70, + 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x25, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x9f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, - 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x90, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x95, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x9e, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, - 0xaa, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, - 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, - 0xb6, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb9, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, - 0xb9, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, - 0xbc, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xbf, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x79, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xca, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd0, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, - 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd6, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0xd8, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe8, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, - 0xe3, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xee, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, - 0xe9, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, - 0x99, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, - 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x98, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, - 0x77, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, - 0xa2, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x05, 0x00, 0x39, 0x00, 0x00, 0x00, - 0xfb, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0xa9, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, - 0xfb, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, - 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x98, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x77, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x21, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x21, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_blit_LESS_comp_len = 2936; +unsigned int glsl_unary_int_ABS_comp_len = 1424; -const unsigned char glsl_binary_blit_LESSEQUAL_comp[] = { +const unsigned char glsl_unary_int_NEG_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x6c, 0x6f, 0x70, + 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x06, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x25, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x91, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x94, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x27, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, - 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x9f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, - 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x90, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x95, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x9e, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, - 0xaa, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, - 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, - 0xb6, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb9, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, - 0xb9, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, - 0xbc, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xbf, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x79, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xca, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd0, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, - 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd6, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0xd8, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe8, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, - 0xe3, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xee, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, - 0xe9, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, - 0x99, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, - 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x98, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, - 0x77, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, - 0xa2, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x05, 0x00, 0x39, 0x00, 0x00, 0x00, - 0xfb, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0xa9, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, - 0xfb, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, - 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x98, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x77, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, - 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0x15, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x36, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x21, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_blit_LESSEQUAL_comp_len = 2936; +unsigned int glsl_unary_int_NEG_comp_len = 1416; -const unsigned char glsl_binary_blit_GREATER_comp[] = { +const unsigned char glsl_unary_int_SQUARE_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x6c, 0x6f, 0x70, + 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x06, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x25, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x91, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x94, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x27, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x31, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, - 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x9f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, - 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x90, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x95, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x9e, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, - 0xaa, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, - 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, - 0xb6, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb9, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, - 0xb9, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, - 0xbc, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xbf, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x79, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xca, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd0, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, - 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd6, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0xd8, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe8, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, - 0xe3, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xee, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, - 0xe9, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, - 0x99, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, - 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x98, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, - 0x77, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, - 0xa2, 0x00, 0x00, 0x00, 0xba, 0x00, 0x05, 0x00, 0x39, 0x00, 0x00, 0x00, - 0xfb, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0xa9, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, - 0xfb, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, - 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x98, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x77, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, - 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0x15, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x21, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x21, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_blit_GREATER_comp_len = 2936; +unsigned int glsl_unary_int_SQUARE_comp_len = 1420; -const unsigned char glsl_binary_blit_GREATEREQUAL_comp[] = { +const unsigned char glsl_unary_int_SIGN_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x06, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x91, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x94, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, - 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, - 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x73, 0x6c, 0x6f, 0x70, + 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x25, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x30, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x27, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x9f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, - 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x90, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x95, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x9e, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, - 0xaa, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, - 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, - 0xb6, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb9, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, - 0xb9, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, - 0xbc, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xbf, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x79, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xca, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd0, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, - 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd6, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0xd8, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe8, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, - 0xe3, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xee, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, - 0xe9, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, - 0x99, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, - 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x98, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, - 0x77, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, - 0xa2, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x05, 0x00, 0x39, 0x00, 0x00, 0x00, - 0xfb, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0xa9, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, - 0xfb, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, - 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x98, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x77, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x21, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x21, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_blit_GREATEREQUAL_comp_len = 2936; +unsigned int glsl_unary_int_SIGN_comp_len = 1424; -const unsigned char glsl_binary_blit_EQUAL_comp[] = { +const unsigned char glsl_deconvolutionDepthwise_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x2e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x06, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x91, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x94, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, - 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, - 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x61, 0x64, 0x00, 0x06, 0x00, 0x06, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x53, 0x69, + 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x64, 0x69, 0x6c, 0x61, 0x74, 0x65, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x62, 0x61, 0x74, 0x63, + 0x68, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x32, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x75, 0x42, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, + 0xc3, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xc5, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xdb, 0x00, 0x00, 0x00, + 0x75, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xf6, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x9f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, - 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x90, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x95, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x9e, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, - 0xaa, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, - 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, - 0xb6, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb9, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, - 0xb9, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, - 0xbc, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xbf, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x79, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xca, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd0, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, - 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd6, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0xd8, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe8, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, - 0xe3, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xee, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, - 0xe9, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, - 0x99, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, - 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x98, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, - 0x77, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, - 0xa2, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x05, 0x00, 0x39, 0x00, 0x00, 0x00, - 0xfb, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0xa9, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, - 0xfb, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, - 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x98, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x77, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, - 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x67, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xc2, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xc3, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xc5, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xd8, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xdb, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0d, 0x01, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x0a, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x66, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x67, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xc3, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xc5, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0xd8, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0xda, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0xda, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xf7, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0xf7, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x0d, 0x01, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x26, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, + 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x52, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x6c, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x63, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x01, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1f, 0x01, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0xf4, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x75, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x1f, 0x01, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, + 0x71, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x71, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x1f, 0x01, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x86, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, + 0x86, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x8e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x97, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x9a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x28, 0x01, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x2d, 0x01, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa5, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0xa5, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0xae, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, + 0xb6, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xb5, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, + 0x75, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xb6, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xb6, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x28, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xbe, 0x00, 0x00, 0x00, + 0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xbf, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0xc8, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, + 0xd3, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0xd5, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0xd4, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x6b, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, + 0xdb, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, + 0xea, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x63, 0x00, 0x00, 0x00, + 0xf0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x2d, 0x01, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, + 0xf0, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, + 0x21, 0x01, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x98, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x98, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x2b, 0x01, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x28, 0x01, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x72, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, + 0x1f, 0x01, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0xff, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x08, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x0b, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x09, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x0b, 0x01, 0x00, 0x00, + 0x20, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x2b, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_blit_EQUAL_comp_len = 2936; +unsigned int glsl_deconvolutionDepthwise_comp_len = 4540; -const unsigned char glsl_binary_blit_NOTEQUAL_comp[] = { +const unsigned char glsl_deconvolutionDepthwise_RELU_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x06, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x91, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x94, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, - 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, - 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x61, 0x64, 0x00, 0x06, 0x00, 0x06, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x53, 0x69, + 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x64, 0x69, 0x6c, 0x61, 0x74, 0x65, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x62, 0x61, 0x74, 0x63, + 0x68, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x32, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x75, 0x42, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, + 0xc3, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xc5, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xdb, 0x00, 0x00, 0x00, + 0x75, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xfa, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x9f, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x9f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, - 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x46, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x06, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x51, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x79, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x90, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x95, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x9e, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x9e, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, - 0xaa, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, - 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, - 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, - 0xb6, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb9, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, - 0xb9, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, - 0xbc, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xbf, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x79, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xca, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd0, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, - 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd6, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0xd8, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x79, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe8, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x67, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xc2, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xc3, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xc5, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xd8, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xdb, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xf9, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xfa, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xfc, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x11, 0x01, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x0a, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x66, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x67, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xc3, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xc5, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0xd8, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0xda, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0xda, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, + 0x63, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0xfa, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xfb, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, + 0x10, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x22, 0x01, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x22, 0x01, 0x00, 0x00, 0x22, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x6c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x2f, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x70, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x7f, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, + 0x7f, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x81, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x81, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x92, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x92, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x8e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x96, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x96, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x97, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x63, 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, + 0x24, 0x01, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x25, 0x01, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, + 0xf2, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x75, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0x25, 0x01, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x7d, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x25, 0x01, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0xad, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xae, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0xae, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb3, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0xb3, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbb, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x28, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xb6, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x28, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xbf, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, + 0xc8, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xca, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd4, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x6b, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, + 0xc5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0xd5, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, + 0x25, 0x01, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe8, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, - 0xe3, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xee, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, - 0xe9, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, - 0x99, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, - 0x9a, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x98, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, - 0x77, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, - 0xa2, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x05, 0x00, 0x39, 0x00, 0x00, 0x00, - 0xfb, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0xa9, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, - 0xfb, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, - 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x98, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, - 0x77, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x56, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, - 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 -}; -unsigned int glsl_binary_blit_NOTEQUAL_comp_len = 2936; - -const unsigned char glsl_binary_blit_VMOD_comp[] = { - 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, - 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, - 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x06, 0x00, 0x89, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, - 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, - 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x46, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x90, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x99, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x73, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x88, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x89, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x8d, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x8f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, - 0xa3, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x4b, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x57, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb0, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, - 0xab, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb6, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x73, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xc6, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, - 0xc6, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, - 0xc9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xcc, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, - 0xcc, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, - 0xcf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd2, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x73, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x81, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xdd, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, - 0x6c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe3, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, - 0xeb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, - 0x99, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x05, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0xa1, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x92, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x03, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x50, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0xe1, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x63, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x08, 0x00, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x63, 0x00, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, + 0x2c, 0x01, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0xbf, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, + 0x75, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x9c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x98, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x98, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x63, 0x00, 0x00, 0x00, 0x2f, 0x01, 0x00, 0x00, + 0x24, 0x01, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x72, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, + 0x75, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x71, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x63, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x03, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x09, 0x01, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, + 0x09, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, + 0x0c, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x0f, 0x01, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x0d, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x0f, 0x01, 0x00, 0x00, + 0xf8, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x2b, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_binary_blit_VMOD_comp_len = 2808; +unsigned int glsl_deconvolutionDepthwise_RELU_comp_len = 4612; -const unsigned char glsl_deconvolutionDepthwise_comp[] = { +const unsigned char glsl_deconvolutionDepthwise_RELU6_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x2e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x34, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -22969,10 +32220,10 @@ const unsigned char glsl_deconvolutionDepthwise_comp[] = { 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x75, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x00, 0x05, 0x00, 0x05, 0x00, - 0xf6, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, + 0x05, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, @@ -23016,15 +32267,15 @@ const unsigned char glsl_deconvolutionDepthwise_comp[] = { 0x47, 0x00, 0x04, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xf5, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0xfb, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xf8, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x0d, 0x01, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x13, 0x01, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, @@ -23080,1899 +32331,6276 @@ const unsigned char glsl_deconvolutionDepthwise_comp[] = { 0xd9, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xda, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xda, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0xf5, 0x00, 0x00, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0xf6, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xf7, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0xf7, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x0d, 0x01, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x26, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x26, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, - 0x29, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, - 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x52, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, - 0x26, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x6b, 0x00, 0x00, 0x00, - 0x6c, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x6d, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x6f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x63, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, - 0x6d, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x01, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x1f, 0x01, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0xf4, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x75, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, - 0x1f, 0x01, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, - 0x71, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x71, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x7d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x1f, 0x01, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x85, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x86, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, - 0x86, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, - 0xaa, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x8c, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x93, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, - 0x94, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x8e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, - 0x98, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x97, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x9a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x9a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x28, 0x01, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, - 0x2d, 0x01, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x97, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0xa0, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, - 0xa2, 0x00, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0xf6, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xa2, 0x00, 0x00, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa5, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, - 0xa7, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa9, 0x00, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, - 0xa5, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x19, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, - 0xaa, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, - 0xae, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, - 0xb4, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, - 0xb6, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xb5, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, + 0x63, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x40, 0x2c, 0x00, 0x07, 0x00, 0x63, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0xfb, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0xfd, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0xfd, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x12, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x12, 0x01, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x06, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x07, 0x00, 0x13, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x24, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x26, 0x01, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x31, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, + 0x81, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, + 0x86, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xbc, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0xaf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, - 0xaa, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, - 0xaf, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0xb6, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xb6, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x28, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, - 0xb4, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, - 0xb5, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xc0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xbe, 0x00, 0x00, 0x00, - 0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xbf, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, - 0xc8, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x28, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x97, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x9a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x2e, 0x01, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x28, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, + 0xa8, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, + 0xad, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x28, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xb6, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0xbb, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xb6, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x28, 0x00, 0x00, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0xca, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd3, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x63, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0x25, 0x01, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, + 0xe8, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0xea, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, + 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, + 0x2e, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, 0x2e, 0x01, 0x00, 0x00, + 0xb6, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xf2, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x9a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x98, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x98, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x2e, 0x01, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x72, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xf4, 0x00, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x71, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x63, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x26, 0x01, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x0b, 0x01, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, + 0x0b, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, + 0x0e, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x11, 0x01, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x0f, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x11, 0x01, 0x00, 0x00, + 0xfa, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x2b, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_deconvolutionDepthwise_RELU6_comp_len = 4660; + +const unsigned char glsl_preluWithChannel_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xc2, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x72, 0x65, 0x6c, 0x75, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x69, 0x6d, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x75, 0x50, 0x72, 0x65, 0x6c, 0x75, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x00, 0x05, 0x00, 0x06, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x75, 0x53, 0x6c, 0x6f, + 0x70, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x15, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x2b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x07, 0x00, 0x26, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xc9, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, - 0xc9, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xcb, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x19, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, - 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, - 0xd3, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x6b, 0x00, 0x00, 0x00, - 0xd5, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, - 0xd4, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, - 0xd6, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x1f, 0x01, 0x00, 0x00, - 0xa1, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe1, 0x00, 0x00, 0x00, 0x21, 0x01, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, - 0x77, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe9, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x6b, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, - 0xdb, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, - 0xea, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x63, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, - 0xd6, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xc0, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x2d, 0x01, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, - 0x21, 0x01, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x9a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x98, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x98, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x2b, 0x01, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0x28, 0x01, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x72, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, - 0x1f, 0x01, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x6f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x05, 0x01, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, - 0x05, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x09, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x08, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x6b, 0x00, 0x00, 0x00, - 0x0b, 0x01, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x09, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x0b, 0x01, 0x00, 0x00, - 0x20, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x2b, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x2b, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x05, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_deconvolutionDepthwise_comp_len = 4540; +unsigned int glsl_preluWithChannel_comp_len = 1804; + +const unsigned char glsl_reduce_int_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x08, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x00, 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x72, 0x65, 0x64, 0x75, + 0x63, 0x65, 0x41, 0x78, 0x69, 0x73, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x08, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x4c, + 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x44, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x62, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0xd1, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0xd1, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0xd1, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xd3, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x07, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0xd2, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0xd8, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x46, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x46, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x57, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, + 0xe0, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0xa6, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0xa6, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, + 0xac, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xab, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb3, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xac, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xac, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_reduce_int_comp_len = 2684; -const unsigned char glsl_deconvolutionDepthwise_RELU_comp[] = { +const unsigned char glsl_reduce_int_VMAX_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, - 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, - 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x61, 0x64, 0x00, 0x06, 0x00, 0x06, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x53, 0x69, - 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x64, 0x69, 0x6c, 0x61, 0x74, 0x65, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x62, 0x61, 0x74, 0x63, - 0x68, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x32, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x75, 0x42, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, - 0xc3, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, + 0x0d, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x08, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x00, 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x72, 0x65, 0x64, 0x75, + 0x63, 0x65, 0x41, 0x78, 0x69, 0x73, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x08, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x4c, + 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x44, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xc5, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, - 0xd9, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xdb, 0x00, 0x00, 0x00, - 0x75, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x00, 0x05, 0x00, 0x05, 0x00, - 0xfa, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0xfa, 0x00, 0x00, 0x00, + 0x92, 0x00, 0x00, 0x00, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x62, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x66, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x67, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x67, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xc2, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xc3, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xc5, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xd8, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xd9, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xf9, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xfa, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xfc, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x11, 0x01, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x0a, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x28, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x45, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, - 0x62, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x66, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x67, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, - 0x69, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x6b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x7d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0xc3, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xc4, 0x00, 0x00, 0x00, - 0xc5, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0xd8, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0xd9, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0xda, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0xda, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, - 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, - 0x63, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, - 0xf6, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0xfa, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xfb, 0x00, 0x00, 0x00, - 0xfc, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, - 0x10, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xde, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x07, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x92, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0xd8, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0xd8, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0xde, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x46, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x46, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x76, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x76, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0x75, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x77, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x76, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0xf1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x04, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0xac, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0xad, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xae, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, + 0xae, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0xba, 0x00, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0xf2, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x19, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc5, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, + 0xc5, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xc2, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xc2, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0xc7, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, + 0xf2, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, + 0xce, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, + 0xf2, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xb8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xba, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_reduce_int_VMAX_comp_len = 3384; + +const unsigned char glsl_reduce_int_VMIN_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x08, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x00, 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x72, 0x65, 0x64, 0x75, + 0x63, 0x65, 0x41, 0x78, 0x69, 0x73, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x08, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x4c, + 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x44, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x92, 0x00, 0x00, 0x00, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x62, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xde, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x07, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x92, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0xd8, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0xd8, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0xde, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x27, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, - 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x29, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x22, 0x01, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x45, 0x00, 0x00, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x22, 0x01, 0x00, 0x00, 0x22, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x52, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x5b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, - 0x69, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, - 0x6c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x2f, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, - 0x51, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x76, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x77, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, - 0x77, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x70, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x7e, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x7f, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, - 0x7f, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x81, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, - 0x85, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x81, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x00, 0x00, - 0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x8d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x92, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, - 0x92, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2d, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x93, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, - 0x95, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x8e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x28, 0x00, 0x00, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x95, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, - 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x96, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x97, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x9a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x9a, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x63, 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, - 0x24, 0x01, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x25, 0x01, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, - 0xf2, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x19, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x75, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, - 0x25, 0x01, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x9b, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x19, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x7d, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x46, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x46, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x76, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x76, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0x75, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x77, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x76, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0xf1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x04, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0xac, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0xad, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xae, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, + 0xae, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0xba, 0x00, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0xf2, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x19, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc5, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, + 0xc5, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xc2, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xc2, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0xc7, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, + 0xf2, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, + 0xce, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, + 0xf2, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xb8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xba, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_reduce_int_VMIN_comp_len = 3384; + +const unsigned char glsl_reduce_int_MEAN_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x08, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x00, 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x72, 0x65, 0x64, 0x75, + 0x63, 0x65, 0x41, 0x78, 0x69, 0x73, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x08, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x4c, + 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x44, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x92, 0x00, 0x00, 0x00, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x62, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xdf, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xde, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xe1, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xe6, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x07, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x92, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0xde, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0xde, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x46, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x46, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x4f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x75, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x76, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x76, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x86, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x76, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x04, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xa3, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, - 0x25, 0x01, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, - 0xa9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, - 0xad, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xae, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, - 0xae, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, - 0xaa, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, - 0xb3, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, - 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0xb4, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xbb, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, - 0x28, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, - 0xbc, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xb6, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x28, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, - 0xc0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xbf, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, - 0xc8, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xca, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, - 0xaf, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, - 0xc9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, - 0xd1, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd2, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, - 0xd2, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd4, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x6b, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, - 0xc5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0xd5, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, - 0x25, 0x01, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0xa1, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe8, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, - 0xe1, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x6b, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x63, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x08, 0x00, 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0xeb, 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0xc0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xc0, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x63, 0x00, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, - 0x2c, 0x01, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, - 0xbf, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, - 0x75, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x9a, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x9c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x98, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x98, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x63, 0x00, 0x00, 0x00, 0x2f, 0x01, 0x00, 0x00, - 0x24, 0x01, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x72, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x23, 0x01, 0x00, 0x00, - 0x75, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x71, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x07, 0x00, - 0x63, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, - 0x03, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x09, 0x01, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, - 0x09, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, - 0x0c, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x6b, 0x00, 0x00, 0x00, - 0x0f, 0x01, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x0d, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x0f, 0x01, 0x00, 0x00, - 0xf8, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x2b, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x2b, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, - 0x38, 0x00, 0x01, 0x00 + 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0xac, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0xad, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xae, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, + 0xae, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0xba, 0x00, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x19, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc5, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, + 0xc5, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xc2, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xc2, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0xc7, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, + 0xce, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd5, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xba, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0xd8, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, + 0xdb, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, + 0x14, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0xdb, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdd, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_reduce_int_MEAN_comp_len = 3488; + +const unsigned char glsl_reduce_int_PROD_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x08, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x00, 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x72, 0x65, 0x64, 0x75, + 0x63, 0x65, 0x41, 0x78, 0x69, 0x73, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x08, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x4c, + 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x44, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x92, 0x00, 0x00, 0x00, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x62, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xde, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x07, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x92, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0xd8, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0xd8, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0xde, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x46, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x46, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x76, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x76, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0x75, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x77, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0xf1, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x76, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x78, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0x92, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x57, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, + 0xe0, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0xad, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0xad, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xae, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb6, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xb8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, + 0xb6, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xf2, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, + 0xd5, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, + 0xba, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0xc2, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, + 0xf2, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xc2, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xc2, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xc7, 0x00, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xce, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x9a, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, + 0x92, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0xf4, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xba, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0xdd, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_deconvolutionDepthwise_RELU_comp_len = 4612; +unsigned int glsl_reduce_int_PROD_comp_len = 3368; -const unsigned char glsl_deconvolutionDepthwise_RELU6_comp[] = { +const unsigned char glsl_reduce_int_SUM_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x34, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, - 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, - 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x61, 0x64, 0x00, 0x06, 0x00, 0x06, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x53, 0x69, - 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x73, 0x74, 0x72, 0x69, 0x64, 0x65, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x64, 0x69, 0x6c, 0x61, 0x74, 0x65, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x62, 0x61, 0x74, 0x63, - 0x68, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x32, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x75, 0x42, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, - 0xc3, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, + 0x0d, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x08, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x00, 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x72, 0x65, 0x64, 0x75, + 0x63, 0x65, 0x41, 0x78, 0x69, 0x73, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x08, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x4c, + 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x44, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xc5, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, - 0xd9, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0xdb, 0x00, 0x00, 0x00, - 0x75, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x00, 0x05, 0x00, 0x05, 0x00, - 0xfc, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0xfc, 0x00, 0x00, 0x00, + 0x92, 0x00, 0x00, 0x00, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x62, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x66, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x67, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x67, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xc2, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xc3, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xd9, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xde, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x07, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x67, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x92, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0xd8, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0xd8, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0xde, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x46, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x46, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, + 0x5f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x76, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x76, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0x75, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, + 0xf6, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x77, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x77, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0xf1, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x76, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x78, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0x92, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0x57, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x57, 0x00, 0x00, 0x00, + 0xe0, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xa4, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0xad, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0xad, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xae, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb6, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xb8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, + 0xb6, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xf2, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, + 0xd5, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, + 0xba, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0xc2, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xc1, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, + 0xf2, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xc2, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xc2, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x3f, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xc7, 0x00, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xce, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x9a, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, + 0x92, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0xf4, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xba, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x19, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0xdd, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_reduce_int_SUM_comp_len = 3368; + +const unsigned char glsl_scale_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x69, 0x6d, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x73, 0x63, 0x61, 0x6c, + 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, + 0x75, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x62, 0x69, 0x61, 0x73, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x75, 0x42, 0x69, 0x61, + 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x48, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xc5, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xd8, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xdb, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xfb, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xfc, 0x00, 0x00, 0x00, + 0x32, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xfe, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x13, 0x01, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x0a, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x28, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x45, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, - 0x62, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x66, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x67, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, - 0x69, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x6b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x7d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0xc3, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xc4, 0x00, 0x00, 0x00, - 0xc5, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0xd8, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0xd9, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0xda, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0xda, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, - 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, - 0x63, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, - 0xf6, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x62, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x40, 0x2c, 0x00, 0x07, 0x00, 0x63, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0xfb, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0xfc, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0xfd, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0xfd, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x12, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x12, 0x01, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x27, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x2b, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x32, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x06, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, - 0x32, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x07, 0x00, 0x13, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, - 0x24, 0x01, 0x00, 0x00, 0x24, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, - 0x53, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x6b, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x6f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x63, 0x00, 0x00, 0x00, - 0x26, 0x01, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x31, 0x01, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, - 0x76, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, - 0xf6, 0x00, 0x04, 0x00, 0x71, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x7b, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, - 0x7e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, - 0x7b, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, - 0x81, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, - 0x86, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, - 0x8c, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x8d, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, - 0x75, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, - 0xaa, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x28, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, - 0x8c, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, - 0x8d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x98, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x97, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x9a, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x9a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x2e, 0x01, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, - 0x51, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, - 0xa0, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa1, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x28, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, - 0xa1, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0xa2, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, - 0xa7, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x32, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x35, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xaa, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, - 0xad, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xaf, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, - 0xaa, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, - 0x28, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xb6, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xb4, 0x00, 0x00, 0x00, - 0xb5, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xb5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xba, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, - 0xba, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2d, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, - 0xbb, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x05, 0x00, 0x28, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xb6, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x28, 0x00, 0x00, 0x00, - 0xbe, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, - 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0xbe, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x19, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, - 0xca, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd0, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, - 0xd1, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xd3, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, - 0xcb, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x6b, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x63, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, - 0x25, 0x01, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe5, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x2e, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x26, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_scale_comp_len = 1956; + +const unsigned char glsl_argmax_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x00, 0x06, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, + 0x73, 0x74, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x67, 0x6c, 0x5f, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x62, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xe4, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xe7, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xe7, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x59, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x9f, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0x08, 0x01, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0xe6, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0xe6, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x45, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x46, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x46, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x6c, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x56, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x62, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0xba, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x7f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x81, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x81, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xfb, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xee, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x56, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0xed, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x93, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0x94, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x9f, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xa0, 0x00, 0x00, 0x00, + 0xee, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x04, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x05, 0x00, + 0x40, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x93, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x56, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x9f, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xbb, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x56, 0x00, 0x00, 0x00, + 0xf4, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xbf, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xbf, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, + 0xef, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0xc3, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x40, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xc5, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xc5, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x40, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, + 0xbf, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0xca, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, + 0xef, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x93, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, + 0xd3, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0xba, 0x00, 0x05, 0x00, + 0x40, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0xf4, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xd8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x9f, 0x00, 0x00, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xd8, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xd8, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x06, 0x00, 0x56, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe3, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, + 0xea, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xea, 0x00, 0x00, 0x00, + 0xf1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_argmax_comp_len = 3340; + +const unsigned char glsl_argmax_ARGMIN_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x00, 0x06, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, + 0x73, 0x74, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, 0x1d, 0x00, 0x00, 0x00, + 0x67, 0x6c, 0x5f, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x00, 0x05, 0x00, 0x05, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x62, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xe4, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xe7, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0xe7, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x59, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x5b, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x62, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x9f, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0x08, 0x01, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0xe6, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0xe6, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x09, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x1f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x45, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x46, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x46, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0xf7, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x62, 0x00, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x6c, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x56, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xec, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0x2e, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x7a, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x62, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x7f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x81, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x81, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xfb, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0xee, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x56, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, + 0xed, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x6c, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x93, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, + 0x94, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x9f, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xa0, 0x00, 0x00, 0x00, + 0xee, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x04, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, + 0x2a, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x05, 0x00, + 0x40, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xa8, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xaf, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x93, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x56, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x9f, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xbb, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x56, 0x00, 0x00, 0x00, + 0xf4, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0xba, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xbf, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xbf, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, + 0xef, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0xc3, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, + 0x40, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xc5, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xc5, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x40, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, + 0xbf, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xfa, 0x00, 0x04, 0x00, 0xca, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xbc, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, + 0xef, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x93, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0xd1, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, + 0xd3, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x05, 0x00, + 0x40, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, + 0xf4, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xd8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xd7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x9f, 0x00, 0x00, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, + 0xe0, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xd8, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xd8, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, + 0xbc, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, + 0xa9, 0x00, 0x06, 0x00, 0x56, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xbe, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe3, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, + 0xea, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xea, 0x00, 0x00, 0x00, + 0xf1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xaa, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_argmax_ARGMIN_comp_len = 3340; + +const unsigned char glsl_binary_blit_int_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0x12, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x83, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x40, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x04, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x83, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x03, 0x00, 0x83, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x85, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x85, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x06, 0x00, 0x40, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x82, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x83, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x83, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x39, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x3c, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x49, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x44, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x5d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x7b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdc, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe2, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x44, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x4a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_blit_int_comp_len = 1716; + +const unsigned char glsl_binary_blit_int_ADD_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x86, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x85, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x70, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x86, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x87, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x92, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, + 0x9f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xad, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb3, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc5, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdb, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, + 0xdb, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0xde, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe7, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x9e, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_blit_int_ADD_comp_len = 2764; + +const unsigned char glsl_binary_blit_int_SUB_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x86, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x85, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x70, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x86, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x87, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x92, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, + 0x9f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xad, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb3, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc5, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdb, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, + 0xdb, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0xde, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe7, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x9e, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_blit_int_SUB_comp_len = 2764; + +const unsigned char glsl_binary_blit_int_MUL_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x86, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x85, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x70, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x86, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x87, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x92, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, + 0x9f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xad, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb3, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc5, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdb, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, + 0xdb, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0xde, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe7, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x9e, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_blit_int_MUL_comp_len = 2764; + +const unsigned char glsl_binary_blit_int_DIV_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x86, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x85, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x70, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x86, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x87, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x92, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, + 0x9f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xad, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb3, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc5, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdb, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, + 0xdb, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0xde, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe7, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x9e, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_blit_int_DIV_comp_len = 2764; + +const unsigned char glsl_binary_blit_int_VMAX_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x86, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x85, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x70, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x86, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x87, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x92, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, + 0x9f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xad, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb3, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc5, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdb, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, + 0xdb, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0xde, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe7, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_blit_int_VMAX_comp_len = 2772; + +const unsigned char glsl_binary_blit_int_SQUDIFF_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x47, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x47, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x41, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x41, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x40, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x4f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x50, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x57, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, + 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0x68, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb7, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, + 0xc4, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcf, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, + 0xca, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x74, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, + 0x5a, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdf, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, + 0xdf, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, + 0xe2, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, + 0xe8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x07, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0xf5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x4b, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0xa2, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x51, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x51, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_blit_int_SQUDIFF_comp_len = 2784; + +const unsigned char glsl_binary_blit_int_VMIN_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x86, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x85, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x70, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x86, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x87, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x92, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, + 0x9f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xad, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb3, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc5, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdb, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, + 0xdb, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0xde, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe7, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x03, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_blit_int_VMIN_comp_len = 2772; + +const unsigned char glsl_binary_blit_int_LESS_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x35, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x35, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x52, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb7, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, + 0xc4, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcf, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, + 0xca, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x74, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdf, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, + 0xdf, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, + 0xe2, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, - 0xe5, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, - 0xe8, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x6b, 0x00, 0x00, 0x00, - 0xea, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, - 0xe9, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00, - 0xeb, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, - 0x63, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x32, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, - 0x2e, 0x01, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xc0, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, 0x2e, 0x01, 0x00, 0x00, - 0xb6, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x9d, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xf2, 0x00, 0x00, 0x00, 0x27, 0x01, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x9a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x9c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x98, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x98, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, - 0x8e, 0x00, 0x00, 0x00, 0x2e, 0x01, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x72, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x72, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xf4, 0x00, 0x00, 0x00, 0x25, 0x01, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x71, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x63, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, - 0x26, 0x01, 0x00, 0x00, 0xf7, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0x01, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, - 0x05, 0x01, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x0b, 0x01, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x00, - 0x0b, 0x01, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x0f, 0x01, 0x00, 0x00, 0x06, 0x01, 0x00, 0x00, - 0x0e, 0x01, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x6b, 0x00, 0x00, 0x00, - 0x11, 0x01, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x0f, 0x01, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x11, 0x01, 0x00, 0x00, - 0xfa, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x2b, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x2b, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, + 0xe8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x36, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, + 0x07, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0xef, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x53, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_blit_int_LESS_comp_len = 2860; + +const unsigned char glsl_binary_blit_int_LESSEQUAL_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x35, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x35, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x52, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb7, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, + 0xc4, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcf, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, + 0xca, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x74, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdf, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, + 0xdf, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, + 0xe2, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, + 0xe8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0xb3, 0x00, 0x05, 0x00, 0x36, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, + 0x07, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0xef, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x53, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_deconvolutionDepthwise_RELU6_comp_len = 4660; +unsigned int glsl_binary_blit_int_LESSEQUAL_comp_len = 2860; -const unsigned char glsl_preluWithChannel_comp[] = { +const unsigned char glsl_binary_blit_int_GREATER_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, - 0xc2, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x45, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x72, 0x65, 0x6c, 0x75, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x69, 0x6d, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x05, 0x00, 0x05, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x75, 0x50, 0x72, 0x65, 0x6c, 0x75, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x00, 0x05, 0x00, 0x06, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x75, 0x53, 0x6c, 0x6f, - 0x70, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x35, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x8c, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, - 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x32, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x35, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x15, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x29, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x2b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x32, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x34, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x07, 0x00, 0x26, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x26, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x24, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x2e, 0x00, 0x00, 0x00, - 0x2f, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x26, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, - 0x85, 0x00, 0x05, 0x00, 0x26, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x05, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x42, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x2e, 0x00, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x52, 0x00, 0x00, 0x00, - 0x51, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x35, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x35, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x52, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb7, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, + 0xc4, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcf, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, + 0xca, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x74, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdf, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, + 0xdf, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, + 0xe2, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, + 0xe8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0xad, 0x00, 0x05, 0x00, 0x36, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, + 0x07, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0xef, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x53, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_preluWithChannel_comp_len = 1804; +unsigned int glsl_binary_blit_int_GREATER_comp_len = 2860; -const unsigned char glsl_scale_comp[] = { +const unsigned char glsl_binary_blit_int_GREATEREQUAL_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x45, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x69, 0x6d, 0x67, 0x53, 0x69, 0x7a, 0x65, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x00, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x73, 0x63, 0x61, 0x6c, - 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x06, 0x00, 0x05, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x75, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x62, 0x69, 0x61, 0x73, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x75, 0x42, 0x69, 0x61, - 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x3b, 0x00, 0x00, 0x00, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, - 0x05, 0x00, 0x06, 0x00, 0x48, 0x00, 0x00, 0x00, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x29, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x32, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x33, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x3a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x3b, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x03, 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x50, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x14, 0x00, 0x02, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x26, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, - 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x32, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x33, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x33, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, - 0x35, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0x3a, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x47, 0x00, 0x00, 0x00, - 0x26, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x48, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x49, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x2e, 0x00, 0x00, 0x00, - 0x2f, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x26, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x3f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x26, 0x00, 0x00, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x4a, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, - 0x3e, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0x8c, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x35, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x35, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x52, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb7, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, + 0xc4, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcf, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, + 0xca, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x74, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdf, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, + 0xdf, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, + 0xe2, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, + 0xe8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0xaf, 0x00, 0x05, 0x00, 0x36, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, + 0x07, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0xef, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x53, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_scale_comp_len = 1956; +unsigned int glsl_binary_blit_int_GREATEREQUAL_comp_len = 2860; -const unsigned char glsl_argmax_comp[] = { +const unsigned char glsl_binary_blit_int_EQUAL_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, - 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, - 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x00, 0x06, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, - 0x73, 0x74, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x67, 0x6c, 0x5f, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x06, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, - 0x05, 0x00, 0x06, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x6c, 0x6f, 0x63, 0x61, - 0x6c, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, 0x6c, 0x6f, 0x63, 0x61, - 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x00, 0x05, 0x00, 0x05, 0x00, - 0xe5, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x62, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0xe5, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, - 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x5a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xe4, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0xe5, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xe7, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xe7, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xec, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x59, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x5a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x62, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, - 0x56, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x8a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, - 0x95, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x95, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x9f, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0x08, 0x01, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xba, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0xe4, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0xe5, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0xe6, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0xe6, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0xec, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x3a, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, - 0x34, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x45, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x46, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x46, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x34, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x62, 0x00, 0x00, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x61, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, - 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x6c, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x6c, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x56, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, - 0x64, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, - 0x6f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xed, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x6e, 0x00, 0x00, 0x00, - 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x7a, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x62, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, - 0x7b, 0x00, 0x00, 0x00, 0xba, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x7f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x81, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x81, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xfc, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, - 0xef, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x56, 0x00, 0x00, 0x00, - 0xfd, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, - 0xee, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x6c, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x91, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x93, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0x94, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x9f, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, - 0x91, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xa0, 0x00, 0x00, 0x00, - 0xef, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x04, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0xaa, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x05, 0x00, - 0x40, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, - 0xa7, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xaa, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xa8, 0x00, 0x00, 0x00, - 0xa9, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xa9, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xaf, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x93, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x56, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x9f, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, - 0x97, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xbb, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x56, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, - 0xfe, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, - 0xa9, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, - 0xba, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, - 0xbe, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0xbd, 0x00, 0x00, 0x00, - 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0xbf, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xbf, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, - 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0xc3, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x40, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xc5, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0xc5, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x40, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, - 0xbf, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0xca, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xbc, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x93, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0xd1, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, - 0xd3, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0xba, 0x00, 0x05, 0x00, - 0x40, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xd8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0xd7, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xd7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x9f, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xd8, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0xd8, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, - 0xbc, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, - 0xa9, 0x00, 0x06, 0x00, 0x56, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, - 0xd6, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xbe, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, - 0xea, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x62, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0xeb, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0xaa, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xaa, 0x00, 0x00, 0x00, - 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0x45, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x35, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x35, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x52, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb7, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, + 0xc4, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcf, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, + 0xca, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x74, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdf, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, + 0xdf, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, + 0xe2, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, + 0xe8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x05, 0x00, 0x36, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, + 0x07, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0xef, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x53, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_argmax_comp_len = 3356; +unsigned int glsl_binary_blit_int_EQUAL_comp_len = 2860; -const unsigned char glsl_argmax_ARGMIN_comp[] = { +const unsigned char glsl_binary_blit_int_NOTEQUAL_comp[] = { 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, - 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, - 0x02, 0x00, 0x00, 0x00, 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x99, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x02, 0x00, 0x35, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x36, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x8e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x97, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x99, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x35, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x52, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x49, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x66, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x74, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, + 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb7, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x7c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc9, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, + 0xc4, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcf, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, + 0xca, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0xd0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x74, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, + 0x5c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdf, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, + 0xdf, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, + 0xe2, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, + 0xe8, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, + 0xe9, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x4e, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0xd6, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x05, 0x00, 0x36, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, + 0x07, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x4e, 0x00, 0x00, 0x00, + 0xa2, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, + 0xef, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xa2, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x53, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x53, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 +}; +unsigned int glsl_binary_blit_int_NOTEQUAL_comp_len = 2860; + +const unsigned char glsl_binary_blit_int_VMOD_comp[] = { + 0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x00, 0x08, 0x00, + 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, + 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, - 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x00, 0x06, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x75, 0x43, 0x6f, 0x6e, - 0x73, 0x74, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, 0x1d, 0x00, 0x00, 0x00, - 0x67, 0x6c, 0x5f, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x6e, 0x76, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x06, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, + 0x3e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb8, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x08, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x49, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x73, 0x72, 0x63, 0x76, 0x69, 0x65, 0x77, 0x31, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x64, 0x73, 0x74, 0x76, 0x69, 0x65, 0x77, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x73, 0x69, 0x7a, 0x65, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x75, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x06, 0x00, 0x86, 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x05, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x05, 0x00, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, - 0x05, 0x00, 0x06, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x6c, 0x6f, 0x63, 0x61, - 0x6c, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, 0x6c, 0x6f, 0x63, 0x61, - 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x00, 0x05, 0x00, 0x05, 0x00, - 0xe5, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x62, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, 0xe5, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x06, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x30, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x30, 0x00, 0x06, 0x00, 0x05, 0x00, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x04, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x75, 0x4f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, 0x75, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x31, 0x00, 0x47, 0x00, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x43, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x45, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, - 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x5a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xe4, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0xe5, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xe7, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x85, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0xe7, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0x00, 0x04, 0x00, 0xec, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x92, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x03, 0x00, 0x59, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x03, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x5a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x5b, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x62, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x89, 0x00, 0x00, 0x00, - 0x56, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x8a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, - 0x95, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x95, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x96, 0x00, 0x00, 0x00, - 0x97, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x9f, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0x08, 0x01, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xba, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, - 0xe4, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, - 0xe5, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0xe6, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0xe6, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x00, 0x00, - 0xec, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x0e, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x09, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x7c, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x25, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x87, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x3a, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x39, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, - 0x34, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x45, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x46, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x46, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, - 0xf7, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, - 0x4d, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x34, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, - 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x62, 0x00, 0x00, 0x00, - 0x63, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x61, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, - 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x6c, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x6c, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x56, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, - 0x64, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, - 0x6f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xed, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0x6e, 0x00, 0x00, 0x00, - 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0x74, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, - 0x2e, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x7a, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x06, 0x00, 0x62, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, - 0x7b, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x7f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x81, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x81, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xfc, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, - 0xef, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x06, 0x00, 0x56, 0x00, 0x00, 0x00, - 0xfd, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, - 0xee, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x6c, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x91, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x93, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0x94, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x9f, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, - 0x91, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xa0, 0x00, 0x00, 0x00, - 0xef, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x04, 0x00, - 0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, - 0xaa, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x05, 0x00, - 0x40, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, - 0xa7, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xaa, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xa8, 0x00, 0x00, 0x00, - 0xa9, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xa9, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xaf, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x93, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x56, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x9f, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, - 0x97, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xbb, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, 0x56, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, - 0xfe, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, - 0xa9, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, - 0xba, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, - 0xbe, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x04, 0x00, 0xbd, 0x00, 0x00, 0x00, - 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0xbf, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xbf, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x05, 0x00, 0x40, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, - 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, - 0xc3, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0xc4, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x05, 0x00, - 0x40, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xc5, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0xc5, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x40, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, - 0xbf, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, - 0xfa, 0x00, 0x04, 0x00, 0xca, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xbc, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, - 0x93, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, - 0xd1, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, - 0xd3, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x05, 0x00, - 0x40, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0xd8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, 0xd6, 0x00, 0x00, 0x00, - 0xd7, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xd7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x9f, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xd8, 0x00, 0x00, 0x00, - 0xf8, 0x00, 0x02, 0x00, 0xd8, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x07, 0x00, - 0x06, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, - 0xbc, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, - 0xa9, 0x00, 0x06, 0x00, 0x56, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, - 0xd6, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xbe, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, - 0xe3, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0xbd, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x04, 0x00, 0x56, 0x00, 0x00, 0x00, - 0xea, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, - 0x62, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, - 0xeb, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0xaa, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xaa, 0x00, 0x00, 0x00, - 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00 + 0x01, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x3d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x06, 0x00, 0x43, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x44, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, + 0x4a, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x70, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x7e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, + 0x85, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, + 0x86, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x87, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x87, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x8b, 0x00, 0x00, 0x00, + 0x8a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x8c, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1d, 0x00, 0x03, 0x00, 0x92, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x03, 0x00, 0x93, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x93, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, + 0x95, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x2c, 0x00, 0x06, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, + 0x9f, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x39, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, + 0xb1, 0x00, 0x05, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x04, 0x00, + 0x4b, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x53, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x42, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x87, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, + 0x69, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xad, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xb3, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00, + 0x72, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, + 0xb5, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xc5, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xcb, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, + 0xc6, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x70, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xdb, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00, + 0xdb, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, + 0xde, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x84, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe4, 0x00, 0x00, 0x00, + 0xe1, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x80, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, + 0xe7, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x80, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, + 0xe5, 0x00, 0x00, 0x00, 0xe7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, + 0x47, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0xd2, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, + 0x91, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x47, 0x00, 0x00, 0x00, + 0x9e, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, + 0xeb, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x9e, 0x00, 0x00, 0x00, + 0x9d, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, + 0x38, 0x00, 0x01, 0x00 }; -unsigned int glsl_argmax_ARGMIN_comp_len = 3356; +unsigned int glsl_binary_blit_int_VMOD_comp_len = 2764; diff --git a/source/backend/vulkan/buffer/compiler/VulkanShaderMap.cpp b/source/backend/vulkan/buffer/compiler/VulkanShaderMap.cpp index 9a10271c0..376f2a965 100644 --- a/source/backend/vulkan/buffer/compiler/VulkanShaderMap.cpp +++ b/source/backend/vulkan/buffer/compiler/VulkanShaderMap.cpp @@ -19,6 +19,7 @@ mMaps.insert(std::make_pair("glsl_gridSampleNearest_comp", std::make_pair(glsl_g mMaps.insert(std::make_pair("glsl_gridSampleNearest_PAD_MODE_ZEROS_comp", std::make_pair(glsl_gridSampleNearest_PAD_MODE_ZEROS_comp,glsl_gridSampleNearest_PAD_MODE_ZEROS_comp_len))); mMaps.insert(std::make_pair("glsl_binary_comp", std::make_pair(glsl_binary_comp,glsl_binary_comp_len))); mMaps.insert(std::make_pair("glsl_binary_ADD_comp", std::make_pair(glsl_binary_ADD_comp,glsl_binary_ADD_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_ATAN2_comp", std::make_pair(glsl_binary_ATAN2_comp,glsl_binary_ATAN2_comp_len))); mMaps.insert(std::make_pair("glsl_binary_SUB_comp", std::make_pair(glsl_binary_SUB_comp,glsl_binary_SUB_comp_len))); mMaps.insert(std::make_pair("glsl_binary_MUL_comp", std::make_pair(glsl_binary_MUL_comp,glsl_binary_MUL_comp_len))); mMaps.insert(std::make_pair("glsl_binary_DIV_comp", std::make_pair(glsl_binary_DIV_comp,glsl_binary_DIV_comp_len))); @@ -33,10 +34,29 @@ mMaps.insert(std::make_pair("glsl_binary_GREATEREQUAL_comp", std::make_pair(glsl mMaps.insert(std::make_pair("glsl_binary_EQUAL_comp", std::make_pair(glsl_binary_EQUAL_comp,glsl_binary_EQUAL_comp_len))); mMaps.insert(std::make_pair("glsl_binary_NOTEQUAL_comp", std::make_pair(glsl_binary_NOTEQUAL_comp,glsl_binary_NOTEQUAL_comp_len))); mMaps.insert(std::make_pair("glsl_binary_VMOD_comp", std::make_pair(glsl_binary_VMOD_comp,glsl_binary_VMOD_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_FLOORDIV_comp", std::make_pair(glsl_binary_FLOORDIV_comp,glsl_binary_FLOORDIV_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_FLOORMOD_comp", std::make_pair(glsl_binary_FLOORMOD_comp,glsl_binary_FLOORMOD_comp_len))); mMaps.insert(std::make_pair("glsl_matmulunit_HAS_BIAS_comp", std::make_pair(glsl_matmulunit_HAS_BIAS_comp,glsl_matmulunit_HAS_BIAS_comp_len))); +mMaps.insert(std::make_pair("glsl_cast_float_int_comp", std::make_pair(glsl_cast_float_int_comp,glsl_cast_float_int_comp_len))); +mMaps.insert(std::make_pair("glsl_cast_float_int_REVERT_comp", std::make_pair(glsl_cast_float_int_REVERT_comp,glsl_cast_float_int_REVERT_comp_len))); mMaps.insert(std::make_pair("glsl_convolution_comp", std::make_pair(glsl_convolution_comp,glsl_convolution_comp_len))); mMaps.insert(std::make_pair("glsl_convolution_RELU_comp", std::make_pair(glsl_convolution_RELU_comp,glsl_convolution_RELU_comp_len))); mMaps.insert(std::make_pair("glsl_convolution_RELU6_comp", std::make_pair(glsl_convolution_RELU6_comp,glsl_convolution_RELU6_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_int_comp", std::make_pair(glsl_binary_int_comp,glsl_binary_int_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_int_ADD_comp", std::make_pair(glsl_binary_int_ADD_comp,glsl_binary_int_ADD_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_int_SUB_comp", std::make_pair(glsl_binary_int_SUB_comp,glsl_binary_int_SUB_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_int_MUL_comp", std::make_pair(glsl_binary_int_MUL_comp,glsl_binary_int_MUL_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_int_DIV_comp", std::make_pair(glsl_binary_int_DIV_comp,glsl_binary_int_DIV_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_int_VMAX_comp", std::make_pair(glsl_binary_int_VMAX_comp,glsl_binary_int_VMAX_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_int_SQUDIFF_comp", std::make_pair(glsl_binary_int_SQUDIFF_comp,glsl_binary_int_SQUDIFF_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_int_VMIN_comp", std::make_pair(glsl_binary_int_VMIN_comp,glsl_binary_int_VMIN_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_int_LESS_comp", std::make_pair(glsl_binary_int_LESS_comp,glsl_binary_int_LESS_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_int_LESSEQUAL_comp", std::make_pair(glsl_binary_int_LESSEQUAL_comp,glsl_binary_int_LESSEQUAL_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_int_GREATER_comp", std::make_pair(glsl_binary_int_GREATER_comp,glsl_binary_int_GREATER_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_int_GREATEREQUAL_comp", std::make_pair(glsl_binary_int_GREATEREQUAL_comp,glsl_binary_int_GREATEREQUAL_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_int_EQUAL_comp", std::make_pair(glsl_binary_int_EQUAL_comp,glsl_binary_int_EQUAL_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_int_NOTEQUAL_comp", std::make_pair(glsl_binary_int_NOTEQUAL_comp,glsl_binary_int_NOTEQUAL_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_int_VMOD_comp", std::make_pair(glsl_binary_int_VMOD_comp,glsl_binary_int_VMOD_comp_len))); mMaps.insert(std::make_pair("glsl_roipooling_comp", std::make_pair(glsl_roipooling_comp,glsl_roipooling_comp_len))); mMaps.insert(std::make_pair("glsl_blit_comp", std::make_pair(glsl_blit_comp,glsl_blit_comp_len))); mMaps.insert(std::make_pair("glsl_blit_C4_comp", std::make_pair(glsl_blit_C4_comp,glsl_blit_C4_comp_len))); @@ -82,16 +102,25 @@ mMaps.insert(std::make_pair("glsl_reduce_MEAN_comp", std::make_pair(glsl_reduce_ mMaps.insert(std::make_pair("glsl_reduce_PROD_comp", std::make_pair(glsl_reduce_PROD_comp,glsl_reduce_PROD_comp_len))); mMaps.insert(std::make_pair("glsl_reduce_SUM_comp", std::make_pair(glsl_reduce_SUM_comp,glsl_reduce_SUM_comp_len))); mMaps.insert(std::make_pair("glsl_resizeBilinear_comp", std::make_pair(glsl_resizeBilinear_comp,glsl_resizeBilinear_comp_len))); +mMaps.insert(std::make_pair("glsl_cast_int_bool_comp", std::make_pair(glsl_cast_int_bool_comp,glsl_cast_int_bool_comp_len))); mMaps.insert(std::make_pair("glsl_nchwTonc4hw4_comp", std::make_pair(glsl_nchwTonc4hw4_comp,glsl_nchwTonc4hw4_comp_len))); mMaps.insert(std::make_pair("glsl_nc4hw4Tonchw_comp", std::make_pair(glsl_nc4hw4Tonchw_comp,glsl_nc4hw4Tonchw_comp_len))); mMaps.insert(std::make_pair("glsl_matmulunit_comp", std::make_pair(glsl_matmulunit_comp,glsl_matmulunit_comp_len))); mMaps.insert(std::make_pair("glsl_blitregion_comp", std::make_pair(glsl_blitregion_comp,glsl_blitregion_comp_len))); mMaps.insert(std::make_pair("glsl_range_comp", std::make_pair(glsl_range_comp,glsl_range_comp_len))); +mMaps.insert(std::make_pair("glsl_range_USE_INT_comp", std::make_pair(glsl_range_USE_INT_comp,glsl_range_USE_INT_comp_len))); +mMaps.insert(std::make_pair("glsl_convolutionint4_comp", std::make_pair(glsl_convolutionint4_comp,glsl_convolutionint4_comp_len))); +mMaps.insert(std::make_pair("glsl_convolutionint4_RELU_comp", std::make_pair(glsl_convolutionint4_RELU_comp,glsl_convolutionint4_RELU_comp_len))); +mMaps.insert(std::make_pair("glsl_convolutionint4_RELU6_comp", std::make_pair(glsl_convolutionint4_RELU6_comp,glsl_convolutionint4_RELU6_comp_len))); mMaps.insert(std::make_pair("glsl_avgpool_comp", std::make_pair(glsl_avgpool_comp,glsl_avgpool_comp_len))); mMaps.insert(std::make_pair("glsl_maxpool_comp", std::make_pair(glsl_maxpool_comp,glsl_maxpool_comp_len))); +mMaps.insert(std::make_pair("glsl_convolutionint8_comp", std::make_pair(glsl_convolutionint8_comp,glsl_convolutionint8_comp_len))); +mMaps.insert(std::make_pair("glsl_convolutionint8_RELU_comp", std::make_pair(glsl_convolutionint8_RELU_comp,glsl_convolutionint8_RELU_comp_len))); +mMaps.insert(std::make_pair("glsl_convolutionint8_RELU6_comp", std::make_pair(glsl_convolutionint8_RELU6_comp,glsl_convolutionint8_RELU6_comp_len))); mMaps.insert(std::make_pair("glsl_onehot_comp", std::make_pair(glsl_onehot_comp,glsl_onehot_comp_len))); mMaps.insert(std::make_pair("glsl_binary_blit_comp", std::make_pair(glsl_binary_blit_comp,glsl_binary_blit_comp_len))); mMaps.insert(std::make_pair("glsl_binary_blit_ADD_comp", std::make_pair(glsl_binary_blit_ADD_comp,glsl_binary_blit_ADD_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_blit_ATAN2_comp", std::make_pair(glsl_binary_blit_ATAN2_comp,glsl_binary_blit_ATAN2_comp_len))); mMaps.insert(std::make_pair("glsl_binary_blit_SUB_comp", std::make_pair(glsl_binary_blit_SUB_comp,glsl_binary_blit_SUB_comp_len))); mMaps.insert(std::make_pair("glsl_binary_blit_MUL_comp", std::make_pair(glsl_binary_blit_MUL_comp,glsl_binary_blit_MUL_comp_len))); mMaps.insert(std::make_pair("glsl_binary_blit_DIV_comp", std::make_pair(glsl_binary_blit_DIV_comp,glsl_binary_blit_DIV_comp_len))); @@ -106,12 +135,40 @@ mMaps.insert(std::make_pair("glsl_binary_blit_GREATEREQUAL_comp", std::make_pair mMaps.insert(std::make_pair("glsl_binary_blit_EQUAL_comp", std::make_pair(glsl_binary_blit_EQUAL_comp,glsl_binary_blit_EQUAL_comp_len))); mMaps.insert(std::make_pair("glsl_binary_blit_NOTEQUAL_comp", std::make_pair(glsl_binary_blit_NOTEQUAL_comp,glsl_binary_blit_NOTEQUAL_comp_len))); mMaps.insert(std::make_pair("glsl_binary_blit_VMOD_comp", std::make_pair(glsl_binary_blit_VMOD_comp,glsl_binary_blit_VMOD_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_blit_FLOORDIV_comp", std::make_pair(glsl_binary_blit_FLOORDIV_comp,glsl_binary_blit_FLOORDIV_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_blit_FLOORMOD_comp", std::make_pair(glsl_binary_blit_FLOORMOD_comp,glsl_binary_blit_FLOORMOD_comp_len))); +mMaps.insert(std::make_pair("glsl_unary_int_comp", std::make_pair(glsl_unary_int_comp,glsl_unary_int_comp_len))); +mMaps.insert(std::make_pair("glsl_unary_int_ABS_comp", std::make_pair(glsl_unary_int_ABS_comp,glsl_unary_int_ABS_comp_len))); +mMaps.insert(std::make_pair("glsl_unary_int_NEG_comp", std::make_pair(glsl_unary_int_NEG_comp,glsl_unary_int_NEG_comp_len))); +mMaps.insert(std::make_pair("glsl_unary_int_SQUARE_comp", std::make_pair(glsl_unary_int_SQUARE_comp,glsl_unary_int_SQUARE_comp_len))); +mMaps.insert(std::make_pair("glsl_unary_int_SIGN_comp", std::make_pair(glsl_unary_int_SIGN_comp,glsl_unary_int_SIGN_comp_len))); mMaps.insert(std::make_pair("glsl_deconvolutionDepthwise_comp", std::make_pair(glsl_deconvolutionDepthwise_comp,glsl_deconvolutionDepthwise_comp_len))); mMaps.insert(std::make_pair("glsl_deconvolutionDepthwise_RELU_comp", std::make_pair(glsl_deconvolutionDepthwise_RELU_comp,glsl_deconvolutionDepthwise_RELU_comp_len))); mMaps.insert(std::make_pair("glsl_deconvolutionDepthwise_RELU6_comp", std::make_pair(glsl_deconvolutionDepthwise_RELU6_comp,glsl_deconvolutionDepthwise_RELU6_comp_len))); mMaps.insert(std::make_pair("glsl_preluWithChannel_comp", std::make_pair(glsl_preluWithChannel_comp,glsl_preluWithChannel_comp_len))); +mMaps.insert(std::make_pair("glsl_reduce_int_comp", std::make_pair(glsl_reduce_int_comp,glsl_reduce_int_comp_len))); +mMaps.insert(std::make_pair("glsl_reduce_int_VMAX_comp", std::make_pair(glsl_reduce_int_VMAX_comp,glsl_reduce_int_VMAX_comp_len))); +mMaps.insert(std::make_pair("glsl_reduce_int_VMIN_comp", std::make_pair(glsl_reduce_int_VMIN_comp,glsl_reduce_int_VMIN_comp_len))); +mMaps.insert(std::make_pair("glsl_reduce_int_MEAN_comp", std::make_pair(glsl_reduce_int_MEAN_comp,glsl_reduce_int_MEAN_comp_len))); +mMaps.insert(std::make_pair("glsl_reduce_int_PROD_comp", std::make_pair(glsl_reduce_int_PROD_comp,glsl_reduce_int_PROD_comp_len))); +mMaps.insert(std::make_pair("glsl_reduce_int_SUM_comp", std::make_pair(glsl_reduce_int_SUM_comp,glsl_reduce_int_SUM_comp_len))); mMaps.insert(std::make_pair("glsl_scale_comp", std::make_pair(glsl_scale_comp,glsl_scale_comp_len))); mMaps.insert(std::make_pair("glsl_argmax_comp", std::make_pair(glsl_argmax_comp,glsl_argmax_comp_len))); mMaps.insert(std::make_pair("glsl_argmax_ARGMIN_comp", std::make_pair(glsl_argmax_ARGMIN_comp,glsl_argmax_ARGMIN_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_blit_int_comp", std::make_pair(glsl_binary_blit_int_comp,glsl_binary_blit_int_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_blit_int_ADD_comp", std::make_pair(glsl_binary_blit_int_ADD_comp,glsl_binary_blit_int_ADD_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_blit_int_SUB_comp", std::make_pair(glsl_binary_blit_int_SUB_comp,glsl_binary_blit_int_SUB_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_blit_int_MUL_comp", std::make_pair(glsl_binary_blit_int_MUL_comp,glsl_binary_blit_int_MUL_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_blit_int_DIV_comp", std::make_pair(glsl_binary_blit_int_DIV_comp,glsl_binary_blit_int_DIV_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_blit_int_VMAX_comp", std::make_pair(glsl_binary_blit_int_VMAX_comp,glsl_binary_blit_int_VMAX_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_blit_int_SQUDIFF_comp", std::make_pair(glsl_binary_blit_int_SQUDIFF_comp,glsl_binary_blit_int_SQUDIFF_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_blit_int_VMIN_comp", std::make_pair(glsl_binary_blit_int_VMIN_comp,glsl_binary_blit_int_VMIN_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_blit_int_LESS_comp", std::make_pair(glsl_binary_blit_int_LESS_comp,glsl_binary_blit_int_LESS_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_blit_int_LESSEQUAL_comp", std::make_pair(glsl_binary_blit_int_LESSEQUAL_comp,glsl_binary_blit_int_LESSEQUAL_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_blit_int_GREATER_comp", std::make_pair(glsl_binary_blit_int_GREATER_comp,glsl_binary_blit_int_GREATER_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_blit_int_GREATEREQUAL_comp", std::make_pair(glsl_binary_blit_int_GREATEREQUAL_comp,glsl_binary_blit_int_GREATEREQUAL_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_blit_int_EQUAL_comp", std::make_pair(glsl_binary_blit_int_EQUAL_comp,glsl_binary_blit_int_EQUAL_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_blit_int_NOTEQUAL_comp", std::make_pair(glsl_binary_blit_int_NOTEQUAL_comp,glsl_binary_blit_int_NOTEQUAL_comp_len))); +mMaps.insert(std::make_pair("glsl_binary_blit_int_VMOD_comp", std::make_pair(glsl_binary_blit_int_VMOD_comp,glsl_binary_blit_int_VMOD_comp_len))); } } diff --git a/source/backend/vulkan/buffer/execution/VulkanBinary.cpp b/source/backend/vulkan/buffer/execution/VulkanBinary.cpp index 8857f3d2f..fc37acbe4 100644 --- a/source/backend/vulkan/buffer/execution/VulkanBinary.cpp +++ b/source/backend/vulkan/buffer/execution/VulkanBinary.cpp @@ -45,6 +45,9 @@ std::string VulkanBinary::getMidName(const Op *op) { case BinaryOpOperation_ADD: mid = "ADD"; break; + case BinaryOpOperation_ATAN2: + mid = "ATAN2"; + break; case BinaryOpOperation_SUB: mid = "SUB"; break; @@ -86,9 +89,14 @@ std::string VulkanBinary::getMidName(const Op *op) { mid = "NOTEQUAL"; break; case BinaryOpOperation_MOD: - case BinaryOpOperation_FLOORMOD: mid = "VMOD"; break; + case BinaryOpOperation_FLOORDIV: + mid = "FLOORDIV"; + break; + case BinaryOpOperation_FLOORMOD: + mid = "FLOORMOD"; + break; default: FUNC_PRINT(op->main_as_BinaryOp()->opType()); break; @@ -96,8 +104,11 @@ std::string VulkanBinary::getMidName(const Op *op) { } return mid; } -static std::string _getShaderName(const Op* op, bool image) { +static std::string _getShaderName(const Op* op, bool isInt) { std::string prefix = "glsl_binary_"; + if (isInt) { + prefix = "glsl_binary_int_"; + } std::string posfix = "_comp"; auto mid = VulkanBinary::getMidName(op); if (mid.empty()) { @@ -184,7 +195,7 @@ class VulkanBinaryCreator : public VulkanBackend::Creator { virtual VulkanBasicExecution* onCreate(const std::vector& inputs, const std::vector& outputs, const MNN::Op* op, Backend* backend) const override { auto input0 = inputs[0]; - auto shader = _getShaderName(op, false); + auto shader = _getShaderName(op, input0->getType().code == halide_type_int); if (shader.empty()) { return nullptr; } diff --git a/source/backend/vulkan/buffer/execution/VulkanConvolution.cpp b/source/backend/vulkan/buffer/execution/VulkanConvolution.cpp index b3efdf1c1..87b1c85bf 100644 --- a/source/backend/vulkan/buffer/execution/VulkanConvolution.cpp +++ b/source/backend/vulkan/buffer/execution/VulkanConvolution.cpp @@ -261,6 +261,148 @@ ErrorCode VulkanConvolutionDepthwise::onEncodeConvolution(const Convolution2DCom return NO_ERROR; } +class VulkanConvolutionSlideWindowsInt8 : public VulkanConvolutionCommon { +public: + struct Resource { + const VulkanPipeline* mPipeline; + std::shared_ptr mBias; + std::shared_ptr mKernel; + std::shared_ptr mWeightScale; + std::pair mChannels; + }; +private: + std::shared_ptr mResource; + std::shared_ptr mConvSet; +public: + static std::shared_ptr makeResource( std::shared_ptr quanParam, const float* biasPtr, const Convolution2DCommon* convOption, VulkanBackend* vkBn, int srcCount, int outputCount) { + std::shared_ptr resP(new Resource); + auto& res = *resP; + int kxky = quanParam->weight.size() / srcCount / outputCount; + // Reorder + auto& pool = vkBn->getMemoryPool(); + int icC4 = UP_DIV(srcCount, 4); + int ocC4 = UP_DIV(outputCount, 4); + int unit = 4; + int packSize = unit * unit; + std::vector weightReorder(icC4 * ocC4 * kxky * packSize); + ::memset(weightReorder.data(), 0, weightReorder.size()); + int divSize = 1; + for (int oz=0; ozweight.get() + oz * srcCount * kxky; + for (int sz=0; szcanUseInt4) { + divSize = 2; + } + res.mKernel.reset(new VulkanBuffer(pool, false, icC4 * ocC4 * kxky * (packSize / divSize), nullptr, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT, VK_SHARING_MODE_EXCLUSIVE, 0)); + res.mBias.reset(new VulkanBuffer(pool, false, ocC4 * 4 * sizeof(float), nullptr, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT, VK_SHARING_MODE_EXCLUSIVE, 0)); + res.mWeightScale.reset(new VulkanBuffer(pool, false, ocC4 * 4 * 2 * sizeof(float), nullptr, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT, VK_SHARING_MODE_EXCLUSIVE, 0)); + float originOffset = 0.0f; + float unpackRate = 127.0f; + if (quanParam->canUseInt4) { + originOffset = -8.0f; + unpackRate = 1.0f; + size_t weightLength = icC4 * ocC4 * kxky * packSize / 2; + std::vector weightNew(weightLength); + for (int i=0; icopyToGPUBuffer(weightNew.data(), res.mKernel->buffer(), weightNew.size(), 0); + } else { + vkBn->copyToGPUBuffer(weightReorder.data(), res.mKernel->buffer(), weightReorder.size(), 0); + } + vkBn->copyToGPUBuffer(biasPtr, res.mBias->buffer(), outputCount * sizeof(float), 0); + auto alphaPtr = quanParam->alpha.get(); + auto asym = quanParam->asymmetric; + std::vector wscaleData(ocC4 * 4 * 2, 0.0f); + if (asym) { + for (int i=0; icopyToGPUBuffer(wscaleData.data(), res.mWeightScale->buffer(), ocC4 * 4 * 2 * sizeof(float), 0); + + // Build Pipeline + // Create Pipeline + std::vector convTypes{ + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER + }; + auto macro = getPostTreatMacro(convOption); + if (quanParam->canUseInt4) { + res.mPipeline = vkBn->getPipeline("glsl_convolutionint4_" + macro + "comp", convTypes); + } else { + res.mPipeline = vkBn->getPipeline("glsl_convolutionint8_" + macro + "comp", convTypes); + } + return resP; + } + + VulkanConvolutionSlideWindowsInt8(VulkanBackend* backend, const Convolution2DCommon* convOption, std::shared_ptr resource) : VulkanConvolutionCommon(convOption, backend) { + mResource = resource; + mConvSet.reset(mResource->mPipeline->createSet()); + } + ~VulkanConvolutionSlideWindowsInt8() { + // Do nothing + } + virtual bool onClone(Backend* bn, const Op* op, VulkanBasicExecution** dst) override { + if (nullptr == dst) { + return true; + } + auto res = new VulkanConvolutionSlideWindowsInt8((VulkanBackend*)bn, op->main_as_Convolution2D()->common(), mResource); + *dst = res; + return true; + } + virtual ErrorCode onEncodeConvolution(const Convolution2DCommon* common, const std::vector& inputs, + const std::vector& outputs, + const VulkanCommandPool::Buffer* cmdBuffer, + const VulkanBuffer* constConvBuffer) override { + auto src = inputs[0]; + auto dst = outputs[0]; + const int icDiv4 = UP_DIV(src->channel(), 4); + const int ocDiv4 = UP_DIV(dst->channel(), 4); + auto vkBn = (VulkanBackend*)backend(); + auto extra = static_cast(backend()); + /*Write Command Buffer*/ + auto outputBuffer = extra->getTensorBuffer(outputs[0]); + auto inputBuffer = extra->getTensorBuffer(inputs[0]); + mConvSet->writeBuffer(outputBuffer.first->buffer(), 0, extra->getTensorSize(outputs[0]), outputBuffer.second); + mConvSet->writeBuffer(inputBuffer.first->buffer(), 1, extra->getTensorSize(inputs[0]), inputBuffer.second); + mConvSet->writeBuffer(mResource->mKernel->buffer(), 2, mResource->mKernel->size()); + mConvSet->writeBuffer(mResource->mBias->buffer(), 3, mResource->mBias->size()); + mConvSet->writeBuffer(mResource->mWeightScale->buffer(), 4, mResource->mWeightScale->size()); + mConvSet->writeBuffer(constConvBuffer->buffer(), 5, constConvBuffer->size()); + int totalSize = ocDiv4 * outputs[0]->width() * outputs[0]->height() * outputs[0]->batch(); + mResource->mPipeline->bind(cmdBuffer->get(), mConvSet->get()); + vkCmdDispatch(cmdBuffer->get(), UP_DIV(totalSize, 64), 1, 1); + return NO_ERROR; + } +}; + + class VulkanConvolutionCreator : public VulkanBackend::Creator { public: virtual VulkanBasicExecution* onCreate(const std::vector& inputs, const std::vector& outputs, const MNN::Op* op, @@ -276,6 +418,7 @@ class VulkanConvolutionCreator : public VulkanBackend::Creator { const float* biasPtr = nullptr; int weightSize = 0; std::shared_ptr quanWeight; + bool useInt8Conv = false; if (nullptr != op->main_as_Convolution2D()->quanParameter()) { auto quan = op->main_as_Convolution2D()->quanParameter(); if (1 == quan->type() || 2 == quan->type()) { @@ -284,10 +427,19 @@ class VulkanConvolutionCreator : public VulkanBackend::Creator { return nullptr; } } - quanWeight = ConvolutionCommon::load(op->main_as_Convolution2D(), backend, true); - srcCount = quanWeight->weightFloat.size() / (outputCount * fh * fw); - source = quanWeight->weightFloat.get(); - weightSize = quanWeight->weightFloat.size(); + if (quan->buffer() && OpType_Convolution == op->type()) { + quanWeight = ConvolutionCommon::load(op->main_as_Convolution2D(), backend, false, true); + } else { + quanWeight = ConvolutionCommon::load(op->main_as_Convolution2D(), backend, true); + } + if (quanWeight->weight.get() != nullptr) { + useInt8Conv = true; + srcCount = inputs[0]->channel(); + } else { + srcCount = quanWeight->weightFloat.size() / (outputCount * fh * fw); + source = quanWeight->weightFloat.get(); + weightSize = quanWeight->weightFloat.size(); + } } else { if (nullptr != convReal->weight()) { srcCount = convReal->weight()->size() / (outputCount * fh * fw); @@ -304,6 +456,10 @@ class VulkanConvolutionCreator : public VulkanBackend::Creator { auto convCommonParam = op->main_as_Convolution2D()->common(); const int group = convCommonParam->group(); if (1 == group) { + if (useInt8Conv) { + auto res = VulkanConvolutionSlideWindowsInt8::makeResource(quanWeight, biasPtr, convCommonParam, extra, srcCount, outputCount); + return new VulkanConvolutionSlideWindowsInt8(extra, common, res); + } return VulkanConvolutionImpl::create(extra, common, inputs, outputs[0], source, biasPtr, srcCount, outputCount); diff --git a/source/backend/vulkan/buffer/execution/VulkanLayernorm.cpp b/source/backend/vulkan/buffer/execution/VulkanLayernorm.cpp index 300688673..2f3114e51 100644 --- a/source/backend/vulkan/buffer/execution/VulkanLayernorm.cpp +++ b/source/backend/vulkan/buffer/execution/VulkanLayernorm.cpp @@ -20,7 +20,9 @@ struct Param { VulkanLayernorm::VulkanLayernorm(const Op* op, Backend* backend) : VulkanBasicExecution(backend) { auto layer_norm_param = op->main_as_LayerNorm(); auto vkbackend = static_cast(backend); - mAxisSize = layer_norm_param->axis()->size(); + if (nullptr != layer_norm_param->axis()) { + mAxisSize = layer_norm_param->axis()->size(); + } mGroup = layer_norm_param->group(); mParam = vkbackend->allocUniform(); diff --git a/source/backend/vulkan/buffer/execution/VulkanLayernorm.hpp b/source/backend/vulkan/buffer/execution/VulkanLayernorm.hpp index daf922bff..071945b9b 100644 --- a/source/backend/vulkan/buffer/execution/VulkanLayernorm.hpp +++ b/source/backend/vulkan/buffer/execution/VulkanLayernorm.hpp @@ -30,7 +30,7 @@ class VulkanLayernorm : public VulkanBasicExecution { float mEps; bool mHasScale = false; int mGroup = 0; - int mAxisSize; + int mAxisSize = 0; }; } // namespace MNN diff --git a/source/backend/vulkan/buffer/execution/VulkanLoop.cpp b/source/backend/vulkan/buffer/execution/VulkanLoop.cpp index e32cfc272..38ac9451e 100644 --- a/source/backend/vulkan/buffer/execution/VulkanLoop.cpp +++ b/source/backend/vulkan/buffer/execution/VulkanLoop.cpp @@ -124,12 +124,17 @@ struct BinaryBroadCastInfo { class VulkanBinaryBroadCast : public VulkanBasicExecution { public: - VulkanBinaryBroadCast(const LoopParam* loop, Backend *bn) : VulkanBasicExecution(bn) { + VulkanBinaryBroadCast(const LoopParam* loop, Backend *bn, bool isInt) : VulkanBasicExecution(bn) { mLoop = loop; auto vkbackend = static_cast(bn); mParam.reset(new VulkanBuffer(vkbackend->getMemoryPool(), false, sizeof(BinaryBroadCastInfo), nullptr, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT)); - std::string shaderName = "glsl_binary_blit_" + VulkanBinary::getMidName( mLoop->commands()->GetAs(0)->op()) + "_comp"; - + std::string shaderName; + if (isInt) { + shaderName = "glsl_binary_blit_int_" + VulkanBinary::getMidName( mLoop->commands()->GetAs(0)->op()) + "_comp"; + } else { + shaderName = "glsl_binary_blit_" + VulkanBinary::getMidName( mLoop->commands()->GetAs(0)->op()) + "_comp"; + } + mPipeline = vkbackend->getPipeline(shaderName, { VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, @@ -293,7 +298,8 @@ VulkanBasicExecution* VulkanLoop::create(const std::vector& inputs, con return new VulkanBatchMatMul(loop, bn); } if (OpType_BinaryOp == subop->type() && cmd->fuse() < 0 && 1 == loop->loopNumber()) { - return new VulkanBinaryBroadCast(loop, bn); + bool isInt = inputs[1]->getType().code == halide_type_int; + return new VulkanBinaryBroadCast(loop, bn, isInt); } } return nullptr; diff --git a/source/backend/vulkan/buffer/execution/VulkanRange.cpp b/source/backend/vulkan/buffer/execution/VulkanRange.cpp index 76303e9d2..7e5ee9fa5 100644 --- a/source/backend/vulkan/buffer/execution/VulkanRange.cpp +++ b/source/backend/vulkan/buffer/execution/VulkanRange.cpp @@ -25,7 +25,11 @@ VulkanRange::VulkanRange(halide_type_t type, Backend* backend) : VulkanBasicExec VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, }; - mPipeline = vkbackend->getPipeline("glsl_range_comp", types); + if (type.code == halide_type_int) { + mPipeline = vkbackend->getPipeline("glsl_range_USE_INT_comp", types); + } else { + mPipeline = vkbackend->getPipeline("glsl_range_comp", types); + } mDesSet.reset(mPipeline->createSet()); } diff --git a/source/backend/vulkan/buffer/execution/VulkanRaster.cpp b/source/backend/vulkan/buffer/execution/VulkanRaster.cpp index 70fbc9679..b53f5241d 100644 --- a/source/backend/vulkan/buffer/execution/VulkanRaster.cpp +++ b/source/backend/vulkan/buffer/execution/VulkanRaster.cpp @@ -318,6 +318,9 @@ ErrorCode VulkanRaster::onEncode(const std::vector &____inputs, const class VulkanRasterCreator : public VulkanBackend::Creator { public: virtual VulkanBasicExecution* onCreate(const std::vector& inputs, const std::vector& outputs, const MNN::Op* op, Backend* bn) const override { + if (outputs[0]->getType().bytes() < 4) { + return nullptr; + } return new VulkanRaster(bn); } }; diff --git a/source/backend/vulkan/buffer/execution/VulkanReduce.cpp b/source/backend/vulkan/buffer/execution/VulkanReduce.cpp index 1257f58f4..53aeb9134 100644 --- a/source/backend/vulkan/buffer/execution/VulkanReduce.cpp +++ b/source/backend/vulkan/buffer/execution/VulkanReduce.cpp @@ -79,8 +79,11 @@ ErrorCode VulkanReduce::onEncode(const std::vector& inputs, const std:: return NO_ERROR; } -static std::string _getShaderName(const Op* op) { +static std::string _getShaderName(const Op* op, bool isInt) { std::string prefix = "glsl_reduce_"; + if (isInt) { + prefix = "glsl_reduce_int_"; + } std::string posfix = "_comp"; std::string mid = ""; switch (op->main_as_ReductionParam()->operation()) { @@ -112,7 +115,8 @@ class VulkanReduceCreator : public VulkanBackend::Creator { virtual VulkanBasicExecution* onCreate(const std::vector& inputs, const std::vector& outputs, const MNN::Op* op, Backend* backend) const override { auto input0 = inputs[0]; - auto shader = _getShaderName(op); + bool isint = input0->getType().code == halide_type_int; + auto shader = _getShaderName(op, isint); if (shader.empty()) { return nullptr; } diff --git a/source/backend/vulkan/buffer/execution/VulkanUnary.cpp b/source/backend/vulkan/buffer/execution/VulkanUnary.cpp index 952e778ee..de98e09ed 100644 --- a/source/backend/vulkan/buffer/execution/VulkanUnary.cpp +++ b/source/backend/vulkan/buffer/execution/VulkanUnary.cpp @@ -17,7 +17,7 @@ struct Param { vec4 slope; }; -VulkanUnary::VulkanUnary(const std::string& midType, Backend* bn, float slope0, float slope1) : VulkanBasicExecution(bn) { +VulkanUnary::VulkanUnary(const std::string& midType, Backend* bn, bool isInt, float slope0, float slope1, bool iscast) : VulkanBasicExecution(bn) { mSlopes[0] = slope0; mSlopes[1] = slope1; auto vkbackend = static_cast(bn); @@ -28,13 +28,20 @@ VulkanUnary::VulkanUnary(const std::string& midType, Backend* bn, float slope0, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, }; - if (!midType.empty()) { - auto prefix = "glsl_unary_"; - std::string posfix = "_comp"; - // get pipeline - mUnaryPipeline = vkbackend->getPipeline(prefix + midType + posfix, types); + if (iscast) { + mUnaryPipeline = vkbackend->getPipeline(midType, types); } else { - mUnaryPipeline = vkbackend->getPipeline("glsl_unary_comp", types); + if (!midType.empty()) { + auto prefix = "glsl_unary_"; + if (isInt) { + prefix = "glsl_unary_int_"; + } + std::string posfix = "_comp"; + // get pipeline + mUnaryPipeline = vkbackend->getPipeline(prefix + midType + posfix, types); + } else { + mUnaryPipeline = vkbackend->getPipeline("glsl_unary_comp", types); + } } mDesSet.reset(mUnaryPipeline->createSet()); } @@ -122,19 +129,43 @@ class VulkanUnaryCreator : public VulkanBackend::Creator { minValue = op->main_as_Relu6()->minValue(); maxValue = op->main_as_Relu6()->maxValue(); } - return new VulkanUnary("CLAMP", bn, minValue, maxValue); + return new VulkanUnary("CLAMP", bn, false, minValue, maxValue); } if (op->type() == OpType_ReLU) { - return new VulkanUnary("RELU", bn, op->main_as_Relu()->slope()); + return new VulkanUnary("RELU", bn, false, op->main_as_Relu()->slope()); } if (op->type() == OpType_Cast) { - return new VulkanUnary("", bn); + if (inputs[0]->getType().bytes() != 4 || outputs[0]->getType().bytes() != 4) { + return nullptr; + } + if (op->main_as_CastParam()->dstT() == MNN::DataType_DT_BOOL) { + return new VulkanUnary("glsl_cast_int_bool_comp", bn, false, 0.0f, 0.0f, true); + } + if (inputs[0]->getType().code == halide_type_float) { + if (outputs[0]->getType().code == halide_type_float) { + return new VulkanUnary("", bn, false); + } + if (outputs[0]->getType().code == halide_type_int) { + return new VulkanUnary("glsl_cast_float_int_comp", bn, false, 0.0f, 0.0f, true); + } + return nullptr; + } + if (inputs[0]->getType().code == halide_type_int) { + if (outputs[0]->getType().code == halide_type_int) { + return new VulkanUnary("", bn, false); + } + if (outputs[0]->getType().code == halide_type_float) { + return new VulkanUnary("glsl_cast_float_int_REVERT_comp", bn, false, 0.0f, 0.0f, true); + } + return nullptr; + } + return nullptr; } auto midType = _getMidType(op); if (midType.empty()) { return nullptr; } - return new VulkanUnary(midType, bn); + return new VulkanUnary(midType, bn, inputs[0]->getType().code == halide_type_int); } }; diff --git a/source/backend/vulkan/buffer/execution/VulkanUnary.hpp b/source/backend/vulkan/buffer/execution/VulkanUnary.hpp index 64b0c0996..dd7f6a032 100644 --- a/source/backend/vulkan/buffer/execution/VulkanUnary.hpp +++ b/source/backend/vulkan/buffer/execution/VulkanUnary.hpp @@ -16,7 +16,7 @@ namespace MNN { class VulkanUnary : public VulkanBasicExecution { public: - VulkanUnary(const std::string& midType, Backend* bn, float slope0 = 0.0f, float slope1 = 6.0f); + VulkanUnary(const std::string& midType, Backend* bn, bool isInt, float slope0 = 0.0f, float slope1 = 6.0f, bool iscast = false); virtual ~VulkanUnary(); ErrorCode onEncode(const std::vector& inputs, const std::vector& outputs, const VulkanCommandPool::Buffer* cmdBuffer) override; diff --git a/source/backend/vulkan/buffer/execution/glsl/argmax.comp b/source/backend/vulkan/buffer/execution/glsl/argmax.comp index b885db372..95fe3f2e2 100644 --- a/source/backend/vulkan/buffer/execution/glsl/argmax.comp +++ b/source/backend/vulkan/buffer/execution/glsl/argmax.comp @@ -1,7 +1,7 @@ #version 440 core layout(std430) buffer; layout(set=0, binding=0) buffer destbuffer{ - float data[]; + int data[]; }uOutput; layout(set=0, binding=1) readonly buffer sourceBuffer{ diff --git a/source/backend/vulkan/buffer/execution/glsl/binary.comp b/source/backend/vulkan/buffer/execution/glsl/binary.comp index 7919c5323..64170692c 100644 --- a/source/backend/vulkan/buffer/execution/glsl/binary.comp +++ b/source/backend/vulkan/buffer/execution/glsl/binary.comp @@ -1,15 +1,14 @@ #version 440 core -#ifdef FP16 -#extension GL_AMD_gpu_shader_half_float: enable -#define FLOAT4 f16vec4 -#define MAT4 f16mat4 -#extension GL_AMD_gpu_shader_half_float: enable -#else -#define FLOAT4 vec4 -#define MAT4 mat4 +#define OUTPUT_TYPE vec4 + +#if defined(LESS) || defined(LESSEQUAL) || defined(GREATER) || defined(GREATEREQUAL) || defined(EQUAL) || defined(NOTEQUAL) +#undef OUTPUT_TYPE +#define OUTPUT_TYPE ivec4 #endif + +#define FLOAT4 vec4 layout(set=0, binding=0) writeonly buffer destBuffer{ - FLOAT4 data[]; + OUTPUT_TYPE data[]; } uOutput; layout(set=0, binding=1) readonly buffer sourceBuffer0{ @@ -55,6 +54,9 @@ void main() #ifdef DIV value = x0 / x1; #endif +#ifdef ATAN2 + value = atan(x0, x1); +#endif #ifdef POW value = pow(x0, x1); #endif @@ -87,10 +89,16 @@ void main() #endif #ifdef VMOD value = mod(x0, x1); +#endif +#ifdef FLOORMOD + value = x0 - x1 * floor(x0/x1); +#endif +#ifdef FLOORDIV + value = floor(x0/x1); #endif if(uConstant.activationType == 1) { value = max(value, vec4(0)); } - uOutput.data[posTmp.x] = value; + uOutput.data[posTmp.x] = OUTPUT_TYPE(value); } } diff --git a/source/backend/vulkan/buffer/execution/glsl/binary_blit.comp b/source/backend/vulkan/buffer/execution/glsl/binary_blit.comp index 245010303..ad2e20b26 100644 --- a/source/backend/vulkan/buffer/execution/glsl/binary_blit.comp +++ b/source/backend/vulkan/buffer/execution/glsl/binary_blit.comp @@ -5,10 +5,17 @@ #define FLOAT float #endif +#define OUTPUT_TYPE float + +#if defined(LESS) || defined(LESSEQUAL) || defined(GREATER) || defined(GREATEREQUAL) || defined(EQUAL) || defined(NOTEQUAL) +#undef OUTPUT_TYPE +#define OUTPUT_TYPE int +#endif + #define FLOAT4 vec4 layout(std430) buffer; layout(set=0, binding=0) writeonly buffer sourceBuffer{ - FLOAT data[]; + OUTPUT_TYPE data[]; } uOutput; @@ -38,6 +45,9 @@ FLOAT4 binary(FLOAT4 x0, FLOAT4 x1) { #ifdef ADD value = x0 + x1; #endif +#ifdef ATAN2 + value = atan(x0, x1); +#endif #ifdef SUB value = x0 - x1; #endif @@ -79,6 +89,12 @@ FLOAT4 binary(FLOAT4 x0, FLOAT4 x1) { #endif #ifdef VMOD value = mod(x0, x1); +#endif +#ifdef FLOORMOD + value = x0 - x1 * floor(x0/x1); +#endif +#ifdef FLOORDIV + value = floor(x0/x1); #endif return value; } @@ -98,6 +114,6 @@ void main() int s1 = computeVec4dot(uConstant.srcview1, pos); int d = computeVec4dot(uConstant.dstview, pos); - uOutput.data[d] = binary(FLOAT4(uInput0.data[s0]), FLOAT4(uInput1.data[s1])).x; + uOutput.data[d] = OUTPUT_TYPE(binary(FLOAT4(uInput0.data[s0]), FLOAT4(uInput1.data[s1])).x); } } diff --git a/source/backend/vulkan/buffer/execution/glsl/binary_blit_int.comp b/source/backend/vulkan/buffer/execution/glsl/binary_blit_int.comp new file mode 100644 index 000000000..a0a100b85 --- /dev/null +++ b/source/backend/vulkan/buffer/execution/glsl/binary_blit_int.comp @@ -0,0 +1,98 @@ +#version 440 core + +#define OUTPUT_TYPE int +#define FLOAT int + +#define FLOAT4 ivec4 +layout(std430) buffer; +layout(set=0, binding=0) writeonly buffer sourceBuffer{ + OUTPUT_TYPE data[]; +} uOutput; + + +layout(set=0, binding=1) readonly buffer destBuffer{ + FLOAT data[]; +} uInput0; + +layout(set=0, binding=2) readonly buffer destBuffer0{ + FLOAT data[]; +} uInput1; + +layout(set=0, binding=3) uniform constBuffer{ + ivec4 srcview0; + ivec4 srcview1; + ivec4 dstview; + ivec4 size; +} uConstant; + +layout (local_size_x = 256, local_size_y = 1, local_size_z = 1) in; + +int computeVec4dot(ivec4 a, ivec4 b) { + return a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w; +} + +ivec4 binary(ivec4 x0, ivec4 x1) { + ivec4 value; +#ifdef ADD + value = x0 + x1; +#endif +#ifdef SUB + value = x0 - x1; +#endif +#ifdef MUL + value = x0 * x1; +#endif +#ifdef DIV + value = x0 / x1; +#endif +#ifdef VMAX + value = max(x0, x1); +#endif +#ifdef VMIN + value = min(x0, x1); +#endif +#ifdef SQUDIFF + value = (x0 - x1) * (x0 - x1); +#endif +#ifdef LESS + value = FLOAT4(lessThan(x0, x1)); +#endif +#ifdef LESSEQUAL + value = FLOAT4(lessThanEqual(x0, x1)); +#endif +#ifdef GREATER + value = FLOAT4(greaterThan(x0, x1)); +#endif +#ifdef GREATEREQUAL + value = FLOAT4(greaterThanEqual(x0, x1)); +#endif +#ifdef EQUAL + value = FLOAT4(equal(x0, x1)); +#endif +#ifdef NOTEQUAL + value = FLOAT4(notEqual(x0, x1)); +#endif +#ifdef VMOD + value = x0 % x1; +#endif + return value; +} + +void main() +{ + ivec3 posTmp = ivec3(gl_GlobalInvocationID); + if (posTmp.x < uConstant.size.w) + { + ivec4 pos; + pos.x = posTmp.x / (uConstant.size.y * uConstant.size.z); + int subIndex = posTmp.x % (uConstant.size.y * uConstant.size.z); + pos.z = subIndex % uConstant.size.z; + pos.y = subIndex / uConstant.size.z; + pos.w = 1; + int s0 = computeVec4dot(uConstant.srcview0, pos); + int s1 = computeVec4dot(uConstant.srcview1, pos); + int d = computeVec4dot(uConstant.dstview, pos); + + uOutput.data[d] = OUTPUT_TYPE(binary(FLOAT4(uInput0.data[s0]), FLOAT4(uInput1.data[s1])).x); + } +} diff --git a/source/backend/vulkan/buffer/execution/glsl/binary_int.comp b/source/backend/vulkan/buffer/execution/glsl/binary_int.comp new file mode 100644 index 000000000..5fa8fc8cf --- /dev/null +++ b/source/backend/vulkan/buffer/execution/glsl/binary_int.comp @@ -0,0 +1,85 @@ +#version 440 core +#define FLOAT4 ivec4 +layout(set=0, binding=0) writeonly buffer destBuffer{ + ivec4 data[]; +} uOutput; + +layout(set=0, binding=1) readonly buffer sourceBuffer0{ + ivec4 data[]; +} uInput0; + +layout(set=0, binding=2) readonly buffer sourceBuffer1{ + ivec4 data[]; +} uInput1; + +layout(set=0, binding=3) uniform constBuffer{ + ivec4 stride00;//WHC, LIMIT + int activationType; +} uConstant; + +layout(local_size_x = 256, local_size_y = 1, local_size_z = 1) in; + + +void main() +{ + ivec3 posTmp = ivec3(gl_GlobalInvocationID); + ivec3 inSize = uConstant.stride00.xyz; + if(posTmp.x < uConstant.stride00.w) + { + ivec4 x0 = uInput0.data[uConstant.stride00.x * posTmp.x]; + if (uConstant.stride00.x == 0) { + x0 = ivec4(x0.r); + } + ivec4 x1 = uInput1.data[uConstant.stride00.y * posTmp.x]; + if (uConstant.stride00.y == 0) { + x1 = ivec4(x1.r); + } + ivec4 value = x0; +#ifdef ADD + value = x0 + x1; +#endif +#ifdef SUB + value = x0 - x1; +#endif +#ifdef MUL + value = x0 * x1; +#endif +#ifdef DIV + value = x0 / x1; +#endif +#ifdef VMAX + value = max(x0, x1); +#endif +#ifdef VMIN + value = min(x0, x1); +#endif +#ifdef SQUDIFF + value = (x0 - x1) * (x0 - x1); +#endif +#ifdef LESS + value = FLOAT4(lessThan(x0, x1)); +#endif +#ifdef LESSEQUAL + value = FLOAT4(lessThanEqual(x0, x1)); +#endif +#ifdef GREATER + value = FLOAT4(greaterThan(x0, x1)); +#endif +#ifdef GREATEREQUAL + value = FLOAT4(greaterThanEqual(x0, x1)); +#endif +#ifdef EQUAL + value = FLOAT4(equal(x0, x1)); +#endif +#ifdef NOTEQUAL + value = FLOAT4(notEqual(x0, x1)); +#endif +#ifdef VMOD + value = x0 % x1; +#endif + if(uConstant.activationType == 1) { + value = max(value, FLOAT4(0)); + } + uOutput.data[posTmp.x] = value; + } +} diff --git a/source/backend/vulkan/buffer/execution/glsl/blitregion.comp b/source/backend/vulkan/buffer/execution/glsl/blitregion.comp index e5c3ef0fe..eead474b1 100644 --- a/source/backend/vulkan/buffer/execution/glsl/blitregion.comp +++ b/source/backend/vulkan/buffer/execution/glsl/blitregion.comp @@ -15,11 +15,11 @@ layout(set=0, binding=1) readonly buffer s0{ } uInput; layout(set=0, binding=2) readonly buffer s1{ - FLOAT data[]; + int data[]; } uSrcOffset; layout(set=0, binding=3) readonly buffer s2{ - FLOAT data[]; + int data[]; } uDstOffset; layout(set=0, binding=4) uniform constBuffer{ diff --git a/source/backend/vulkan/buffer/execution/glsl/cast_float_int.comp b/source/backend/vulkan/buffer/execution/glsl/cast_float_int.comp new file mode 100644 index 000000000..d2d1a1d76 --- /dev/null +++ b/source/backend/vulkan/buffer/execution/glsl/cast_float_int.comp @@ -0,0 +1,36 @@ +#version 440 +#ifndef REVERT +#define INPUT_TYPE vec4 +#define OUTPUT_TYPE ivec4 +#else +#define INPUT_TYPE ivec4 +#define OUTPUT_TYPE vec4 +#endif +layout(std430) buffer; + +layout(set=0, binding=0) writeonly buffer destBuffer{ + OUTPUT_TYPE data[]; +} uOutput; + +layout(set=0, binding=1) readonly buffer sourceBuffer0{ + INPUT_TYPE data[]; +} uInput; +layout(set=0, binding=2) uniform constBuffer{ + ivec4 size; // x: limit, y: channelC4*b, z:height, w:width + vec4 slope; +} uConstant; + +//for dynamic change threads counts from outside +// from vkCreateComputePipelines->VkComputePipelineCreateInfo->VkPipelineShaderStageCreateInfo->VkSpecializationInfo->VkSpecializationMapEntry +// layout(local_size_x_id = 1, local_size_y_id = 2, local_size_z_id = 3) in; + +layout(local_size_x = 256, local_size_y = 1, local_size_z = 1) in; + +void main() +{ + ivec3 posTmp = ivec3(gl_GlobalInvocationID); + if (posTmp.x < uConstant.size.x) { + INPUT_TYPE value = uInput.data[posTmp.x]; + uOutput.data[posTmp.x] = OUTPUT_TYPE(value); + } +} diff --git a/source/backend/vulkan/buffer/execution/glsl/cast_int_bool.comp b/source/backend/vulkan/buffer/execution/glsl/cast_int_bool.comp new file mode 100644 index 000000000..e0352a946 --- /dev/null +++ b/source/backend/vulkan/buffer/execution/glsl/cast_int_bool.comp @@ -0,0 +1,36 @@ +#version 440 +#define INPUT_TYPE ivec4 +#define OUTPUT_TYPE ivec4 +layout(std430) buffer; + +layout(set=0, binding=0) writeonly buffer destBuffer{ + OUTPUT_TYPE data[]; +} uOutput; + +layout(set=0, binding=1) readonly buffer sourceBuffer0{ + INPUT_TYPE data[]; +} uInput; +layout(set=0, binding=2) uniform constBuffer{ + ivec4 size; // x: limit, y: channelC4*b, z:height, w:width + vec4 slope; +} uConstant; + +//for dynamic change threads counts from outside +// from vkCreateComputePipelines->VkComputePipelineCreateInfo->VkPipelineShaderStageCreateInfo->VkSpecializationInfo->VkSpecializationMapEntry +// layout(local_size_x_id = 1, local_size_y_id = 2, local_size_z_id = 3) in; + +layout(local_size_x = 256, local_size_y = 1, local_size_z = 1) in; + +void main() +{ + ivec3 posTmp = ivec3(gl_GlobalInvocationID); + if (posTmp.x < uConstant.size.x) { + INPUT_TYPE v = uInput.data[posTmp.x]; + OUTPUT_TYPE ov; + ov.x = v.x == 0 ? 0 : 1; + ov.y = v.y == 0 ? 0 : 1; + ov.z = v.z == 0 ? 0 : 1; + ov.w = v.w == 0 ? 0 : 1; + uOutput.data[posTmp.x] = ov; + } +} diff --git a/source/backend/vulkan/buffer/execution/glsl/convolutionint4.comp b/source/backend/vulkan/buffer/execution/glsl/convolutionint4.comp new file mode 100644 index 000000000..2e6db6560 --- /dev/null +++ b/source/backend/vulkan/buffer/execution/glsl/convolutionint4.comp @@ -0,0 +1,119 @@ +#version 440 core + +#ifdef FP16 +#extension GL_AMD_gpu_shader_half_float: enable +#define FLOAT4 f16vec4 +#define MAT4 f16mat4 +#extension GL_AMD_gpu_shader_half_float: enable +#else +#define FLOAT4 vec4 +#define MAT4 mat4 +#endif +layout(std430) buffer; +layout(set=0, binding=0) writeonly buffer destBuffer{ + FLOAT4 data[]; +}uOutput; + +layout(set=0, binding=1) readonly buffer inputBuffer { + FLOAT4 data[]; +} uInput; + +layout(set=0, binding=2) readonly buffer KernelBuffer{ + uint data[]; +} uKernel; + +layout(set=0, binding=3) readonly buffer BiasBuffer{ + FLOAT4 data[]; +} uBias; + +layout(set=0, binding=4) readonly buffer wss{ + FLOAT4 data[]; +} uWeightScale; + +layout(set=0, binding=5) uniform constBuffer { + ivec2 pad; + ivec2 kernelSize; + ivec2 stride; + ivec2 dilate; + ivec4 inputSize; + ivec4 outputSize; + ivec4 offset;//batchOffset, hOffset, outputHeight, other +} uConstant; + +#define UP_DIV(x, y) (((x)+(y)-1)/(y)) + +layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; + +void main() +{ + int gpuIndex = int(gl_GlobalInvocationID.x); + int gpuIndexX = gpuIndex % uConstant.outputSize.x; + int temp = gpuIndex / uConstant.outputSize.x; + int gpuIndexY = temp % uConstant.outputSize.y; + int gpuIndexZ = temp / uConstant.outputSize.y; + ivec3 pos = ivec3(gpuIndexX, gpuIndexY, gpuIndexZ); + ivec3 outputSize = uConstant.outputSize.xyz; + int oz = pos.z / uConstant.outputSize.w; + int ob = pos.z % uConstant.outputSize.w; + + if (gpuIndex < uConstant.outputSize.x * uConstant.outputSize.y * uConstant.outputSize.z * uConstant.outputSize.w) + { + ivec3 inputSize = uConstant.inputSize.xyz; + ivec2 s0 = pos.xy*uConstant.stride-uConstant.pad; + ivec2 sta = max(ivec2(0, 0), (UP_DIV(-s0, uConstant.dilate))); + ivec2 end = min(uConstant.kernelSize, UP_DIV(uConstant.inputSize.xy - s0, uConstant.dilate)); + int fx, fy, fz; + vec4 color = uBias.data[oz]; + vec4 ws = uWeightScale.data[oz]; + vec4 wb = uWeightScale.data[oz+uConstant.outputSize.z]; + for (fy=sta.y; fyVkComputePipelineCreateInfo->VkPipelineShaderStageCreateInfo->VkSpecializationInfo->VkSpecializationMapEntry +// layout(local_size_x_id = 1, local_size_y_id = 2, local_size_z_id = 3) in; + +layout(local_size_x = 256, local_size_y = 1, local_size_z = 1) in; + +void main() +{ + ivec3 posTmp = ivec3(gl_GlobalInvocationID); + if (posTmp.x < uConstant.size.x) { + FLOAT4 value = uInput.data[posTmp.x]; +#ifdef NEG + value = -value; +#endif +#ifdef SIGN + value = sign(value); +#endif +#ifdef ABS + value = abs(value); +#endif +#ifdef SQUARE + value = value * value; +#endif + uOutput.data[posTmp.x] = value; + } +} diff --git a/source/backend/vulkan/buffer/shaders/AllShader.h b/source/backend/vulkan/buffer/shaders/AllShader.h index 860807e3d..a7c55c0bd 100644 --- a/source/backend/vulkan/buffer/shaders/AllShader.h +++ b/source/backend/vulkan/buffer/shaders/AllShader.h @@ -32,6 +32,8 @@ extern const unsigned char glsl_binary_comp[]; extern unsigned int glsl_binary_comp_len; extern const unsigned char glsl_binary_ADD_comp[]; extern unsigned int glsl_binary_ADD_comp_len; +extern const unsigned char glsl_binary_ATAN2_comp[]; +extern unsigned int glsl_binary_ATAN2_comp_len; extern const unsigned char glsl_binary_SUB_comp[]; extern unsigned int glsl_binary_SUB_comp_len; extern const unsigned char glsl_binary_MUL_comp[]; @@ -60,14 +62,52 @@ extern const unsigned char glsl_binary_NOTEQUAL_comp[]; extern unsigned int glsl_binary_NOTEQUAL_comp_len; extern const unsigned char glsl_binary_VMOD_comp[]; extern unsigned int glsl_binary_VMOD_comp_len; +extern const unsigned char glsl_binary_FLOORDIV_comp[]; +extern unsigned int glsl_binary_FLOORDIV_comp_len; +extern const unsigned char glsl_binary_FLOORMOD_comp[]; +extern unsigned int glsl_binary_FLOORMOD_comp_len; extern const unsigned char glsl_matmulunit_HAS_BIAS_comp[]; extern unsigned int glsl_matmulunit_HAS_BIAS_comp_len; +extern const unsigned char glsl_cast_float_int_comp[]; +extern unsigned int glsl_cast_float_int_comp_len; +extern const unsigned char glsl_cast_float_int_REVERT_comp[]; +extern unsigned int glsl_cast_float_int_REVERT_comp_len; extern const unsigned char glsl_convolution_comp[]; extern unsigned int glsl_convolution_comp_len; extern const unsigned char glsl_convolution_RELU_comp[]; extern unsigned int glsl_convolution_RELU_comp_len; extern const unsigned char glsl_convolution_RELU6_comp[]; extern unsigned int glsl_convolution_RELU6_comp_len; +extern const unsigned char glsl_binary_int_comp[]; +extern unsigned int glsl_binary_int_comp_len; +extern const unsigned char glsl_binary_int_ADD_comp[]; +extern unsigned int glsl_binary_int_ADD_comp_len; +extern const unsigned char glsl_binary_int_SUB_comp[]; +extern unsigned int glsl_binary_int_SUB_comp_len; +extern const unsigned char glsl_binary_int_MUL_comp[]; +extern unsigned int glsl_binary_int_MUL_comp_len; +extern const unsigned char glsl_binary_int_DIV_comp[]; +extern unsigned int glsl_binary_int_DIV_comp_len; +extern const unsigned char glsl_binary_int_VMAX_comp[]; +extern unsigned int glsl_binary_int_VMAX_comp_len; +extern const unsigned char glsl_binary_int_SQUDIFF_comp[]; +extern unsigned int glsl_binary_int_SQUDIFF_comp_len; +extern const unsigned char glsl_binary_int_VMIN_comp[]; +extern unsigned int glsl_binary_int_VMIN_comp_len; +extern const unsigned char glsl_binary_int_LESS_comp[]; +extern unsigned int glsl_binary_int_LESS_comp_len; +extern const unsigned char glsl_binary_int_LESSEQUAL_comp[]; +extern unsigned int glsl_binary_int_LESSEQUAL_comp_len; +extern const unsigned char glsl_binary_int_GREATER_comp[]; +extern unsigned int glsl_binary_int_GREATER_comp_len; +extern const unsigned char glsl_binary_int_GREATEREQUAL_comp[]; +extern unsigned int glsl_binary_int_GREATEREQUAL_comp_len; +extern const unsigned char glsl_binary_int_EQUAL_comp[]; +extern unsigned int glsl_binary_int_EQUAL_comp_len; +extern const unsigned char glsl_binary_int_NOTEQUAL_comp[]; +extern unsigned int glsl_binary_int_NOTEQUAL_comp_len; +extern const unsigned char glsl_binary_int_VMOD_comp[]; +extern unsigned int glsl_binary_int_VMOD_comp_len; extern const unsigned char glsl_roipooling_comp[]; extern unsigned int glsl_roipooling_comp_len; extern const unsigned char glsl_blit_comp[]; @@ -158,6 +198,8 @@ extern const unsigned char glsl_reduce_SUM_comp[]; extern unsigned int glsl_reduce_SUM_comp_len; extern const unsigned char glsl_resizeBilinear_comp[]; extern unsigned int glsl_resizeBilinear_comp_len; +extern const unsigned char glsl_cast_int_bool_comp[]; +extern unsigned int glsl_cast_int_bool_comp_len; extern const unsigned char glsl_nchwTonc4hw4_comp[]; extern unsigned int glsl_nchwTonc4hw4_comp_len; extern const unsigned char glsl_nc4hw4Tonchw_comp[]; @@ -168,16 +210,32 @@ extern const unsigned char glsl_blitregion_comp[]; extern unsigned int glsl_blitregion_comp_len; extern const unsigned char glsl_range_comp[]; extern unsigned int glsl_range_comp_len; +extern const unsigned char glsl_range_USE_INT_comp[]; +extern unsigned int glsl_range_USE_INT_comp_len; +extern const unsigned char glsl_convolutionint4_comp[]; +extern unsigned int glsl_convolutionint4_comp_len; +extern const unsigned char glsl_convolutionint4_RELU_comp[]; +extern unsigned int glsl_convolutionint4_RELU_comp_len; +extern const unsigned char glsl_convolutionint4_RELU6_comp[]; +extern unsigned int glsl_convolutionint4_RELU6_comp_len; extern const unsigned char glsl_avgpool_comp[]; extern unsigned int glsl_avgpool_comp_len; extern const unsigned char glsl_maxpool_comp[]; extern unsigned int glsl_maxpool_comp_len; +extern const unsigned char glsl_convolutionint8_comp[]; +extern unsigned int glsl_convolutionint8_comp_len; +extern const unsigned char glsl_convolutionint8_RELU_comp[]; +extern unsigned int glsl_convolutionint8_RELU_comp_len; +extern const unsigned char glsl_convolutionint8_RELU6_comp[]; +extern unsigned int glsl_convolutionint8_RELU6_comp_len; extern const unsigned char glsl_onehot_comp[]; extern unsigned int glsl_onehot_comp_len; extern const unsigned char glsl_binary_blit_comp[]; extern unsigned int glsl_binary_blit_comp_len; extern const unsigned char glsl_binary_blit_ADD_comp[]; extern unsigned int glsl_binary_blit_ADD_comp_len; +extern const unsigned char glsl_binary_blit_ATAN2_comp[]; +extern unsigned int glsl_binary_blit_ATAN2_comp_len; extern const unsigned char glsl_binary_blit_SUB_comp[]; extern unsigned int glsl_binary_blit_SUB_comp_len; extern const unsigned char glsl_binary_blit_MUL_comp[]; @@ -206,6 +264,20 @@ extern const unsigned char glsl_binary_blit_NOTEQUAL_comp[]; extern unsigned int glsl_binary_blit_NOTEQUAL_comp_len; extern const unsigned char glsl_binary_blit_VMOD_comp[]; extern unsigned int glsl_binary_blit_VMOD_comp_len; +extern const unsigned char glsl_binary_blit_FLOORDIV_comp[]; +extern unsigned int glsl_binary_blit_FLOORDIV_comp_len; +extern const unsigned char glsl_binary_blit_FLOORMOD_comp[]; +extern unsigned int glsl_binary_blit_FLOORMOD_comp_len; +extern const unsigned char glsl_unary_int_comp[]; +extern unsigned int glsl_unary_int_comp_len; +extern const unsigned char glsl_unary_int_ABS_comp[]; +extern unsigned int glsl_unary_int_ABS_comp_len; +extern const unsigned char glsl_unary_int_NEG_comp[]; +extern unsigned int glsl_unary_int_NEG_comp_len; +extern const unsigned char glsl_unary_int_SQUARE_comp[]; +extern unsigned int glsl_unary_int_SQUARE_comp_len; +extern const unsigned char glsl_unary_int_SIGN_comp[]; +extern unsigned int glsl_unary_int_SIGN_comp_len; extern const unsigned char glsl_deconvolutionDepthwise_comp[]; extern unsigned int glsl_deconvolutionDepthwise_comp_len; extern const unsigned char glsl_deconvolutionDepthwise_RELU_comp[]; @@ -214,10 +286,52 @@ extern const unsigned char glsl_deconvolutionDepthwise_RELU6_comp[]; extern unsigned int glsl_deconvolutionDepthwise_RELU6_comp_len; extern const unsigned char glsl_preluWithChannel_comp[]; extern unsigned int glsl_preluWithChannel_comp_len; +extern const unsigned char glsl_reduce_int_comp[]; +extern unsigned int glsl_reduce_int_comp_len; +extern const unsigned char glsl_reduce_int_VMAX_comp[]; +extern unsigned int glsl_reduce_int_VMAX_comp_len; +extern const unsigned char glsl_reduce_int_VMIN_comp[]; +extern unsigned int glsl_reduce_int_VMIN_comp_len; +extern const unsigned char glsl_reduce_int_MEAN_comp[]; +extern unsigned int glsl_reduce_int_MEAN_comp_len; +extern const unsigned char glsl_reduce_int_PROD_comp[]; +extern unsigned int glsl_reduce_int_PROD_comp_len; +extern const unsigned char glsl_reduce_int_SUM_comp[]; +extern unsigned int glsl_reduce_int_SUM_comp_len; extern const unsigned char glsl_scale_comp[]; extern unsigned int glsl_scale_comp_len; extern const unsigned char glsl_argmax_comp[]; extern unsigned int glsl_argmax_comp_len; extern const unsigned char glsl_argmax_ARGMIN_comp[]; extern unsigned int glsl_argmax_ARGMIN_comp_len; +extern const unsigned char glsl_binary_blit_int_comp[]; +extern unsigned int glsl_binary_blit_int_comp_len; +extern const unsigned char glsl_binary_blit_int_ADD_comp[]; +extern unsigned int glsl_binary_blit_int_ADD_comp_len; +extern const unsigned char glsl_binary_blit_int_SUB_comp[]; +extern unsigned int glsl_binary_blit_int_SUB_comp_len; +extern const unsigned char glsl_binary_blit_int_MUL_comp[]; +extern unsigned int glsl_binary_blit_int_MUL_comp_len; +extern const unsigned char glsl_binary_blit_int_DIV_comp[]; +extern unsigned int glsl_binary_blit_int_DIV_comp_len; +extern const unsigned char glsl_binary_blit_int_VMAX_comp[]; +extern unsigned int glsl_binary_blit_int_VMAX_comp_len; +extern const unsigned char glsl_binary_blit_int_SQUDIFF_comp[]; +extern unsigned int glsl_binary_blit_int_SQUDIFF_comp_len; +extern const unsigned char glsl_binary_blit_int_VMIN_comp[]; +extern unsigned int glsl_binary_blit_int_VMIN_comp_len; +extern const unsigned char glsl_binary_blit_int_LESS_comp[]; +extern unsigned int glsl_binary_blit_int_LESS_comp_len; +extern const unsigned char glsl_binary_blit_int_LESSEQUAL_comp[]; +extern unsigned int glsl_binary_blit_int_LESSEQUAL_comp_len; +extern const unsigned char glsl_binary_blit_int_GREATER_comp[]; +extern unsigned int glsl_binary_blit_int_GREATER_comp_len; +extern const unsigned char glsl_binary_blit_int_GREATEREQUAL_comp[]; +extern unsigned int glsl_binary_blit_int_GREATEREQUAL_comp_len; +extern const unsigned char glsl_binary_blit_int_EQUAL_comp[]; +extern unsigned int glsl_binary_blit_int_EQUAL_comp_len; +extern const unsigned char glsl_binary_blit_int_NOTEQUAL_comp[]; +extern unsigned int glsl_binary_blit_int_NOTEQUAL_comp_len; +extern const unsigned char glsl_binary_blit_int_VMOD_comp[]; +extern unsigned int glsl_binary_blit_int_VMOD_comp_len; #endif \ No newline at end of file diff --git a/source/backend/vulkan/image/backend/VulkanBackend.cpp b/source/backend/vulkan/image/backend/VulkanBackend.cpp index 37df01b9b..0892a53b0 100644 --- a/source/backend/vulkan/image/backend/VulkanBackend.cpp +++ b/source/backend/vulkan/image/backend/VulkanBackend.cpp @@ -205,22 +205,9 @@ Execution* VulkanBackend::onCreate(const std::vector& inputs, const std continue; } auto t = inputs[i]; - auto inputDes = TensorUtils::getDescribe(t); - if (inputDes->memoryType == Tensor::InsideDescribe::MEMORY_VIRTUAL) { - for (auto& r : inputDes->regions) { - if (!_supportImageSize(r.origin)) { - valid = false; - break; - } - } - if (!valid) { - break; - } - } else { - if (!_supportImageSize(t)) { - valid = false; - break; - } + if (!_supportImageSize(t)) { + valid = false; + break; } } for (auto t : outputs) { diff --git a/source/core/Backend.cpp b/source/core/Backend.cpp index c07fa92dd..50bda5066 100644 --- a/source/core/Backend.cpp +++ b/source/core/Backend.cpp @@ -139,19 +139,16 @@ bool Backend::onAcquireBuffer(const Tensor* tensor, StorageType storageType) { if (nullptr == mem) { return false; } - if (mem == TensorUtils::getDescribe(tensor)->mem.get()) { + if (mem == TensorUtils::getDescribeOrigin(tensor)->mem.get()) { return true; } - TensorUtils::getDescribe(tensor)->mem.reset(mem); + TensorUtils::getDescribeOrigin(tensor)->mem = mem; return true; } bool Backend::onReleaseBuffer(const Tensor* tensor, StorageType storageType) { - TensorUtils::getDescribe(tensor)->mem.reset(nullptr); + TensorUtils::getDescribeOrigin(tensor)->mem = nullptr; return true; } -const std::string Backend::externalFile() { - return this->getRuntime()->getExternalFile(); -} bool Runtime::hasAsyncWork() const { return mFuture.valid(); diff --git a/source/core/Backend.hpp b/source/core/Backend.hpp index 31d845940..111f09877 100644 --- a/source/core/Backend.hpp +++ b/source/core/Backend.hpp @@ -129,8 +129,7 @@ class Backend : public NonCopyable { virtual const Runtime* getRuntime() { return nullptr; } - const std::string externalFile(); -public: + /** * @brief allocate buffer of tensor for given storage type. * @param tensor buffer provider. @@ -147,7 +146,7 @@ class Backend : public NonCopyable { */ MNN_PUBLIC bool onReleaseBuffer(const Tensor* tensor, StorageType storageType); - class MemObj { + class MemObj : public RefCount { public: MemObj() {} virtual ~ MemObj() {} @@ -161,6 +160,9 @@ class Backend : public NonCopyable { */ virtual MemObj* onAcquire(const Tensor* tensor, StorageType storageType) = 0; + virtual bool onSelectDynamicAllocator(int index, int maxIndex) { + return false; + } /** * @brief get buffer from tensor directly * @param tensor buffer provider. @@ -230,13 +232,13 @@ class Runtime : public NonCopyable { Allocator_Defer = 0, Allocator_Eager = 1, }; - - void setExternalFile(std::string file) { - mExternalFile = file; + + void setWinogradMemoryLevel(int level) { + mWinogradMemoryLevel = level; } - - std::string getExternalFile() const { - return mExternalFile; + + int getWinogradMemoryLevel() const { + return mWinogradMemoryLevel; } void setAllocatorType(int type) { @@ -317,8 +319,8 @@ class Runtime : public NonCopyable { MNN_PUBLIC void waitAsyncWork(); private: std::future mFuture; - std::string mExternalFile; AllocatorType mAllocatorType = Allocator_Eager; + int mWinogradMemoryLevel = 3; }; /** abstract Runtime register */ diff --git a/source/core/BufferAllocator.cpp b/source/core/BufferAllocator.cpp index 4dda19a6f..0dab9ffcd 100644 --- a/source/core/BufferAllocator.cpp +++ b/source/core/BufferAllocator.cpp @@ -287,6 +287,17 @@ std::pair EagerBufferAllocator::getFromFreeList(FREELIST* list, s MNN_ASSERT(pointer.second % align == 0); return pointer; } +static void _CPUMemChunkApplyToTensor(uint8_t* ptr, size_t offset, Tensor* t) { + t->buffer().host = ptr + offset; +} + +DeferBufferAllocator::DeferBufferAllocator(std::shared_ptr parent, size_t align, MemChunkApplyToTensor func) : mAllocator(parent), mAlign(align) { + if (nullptr == func) { + mApplyFunction = _CPUMemChunkApplyToTensor; + } else { + mApplyFunction = func; + } +} //------------------------------- DeferBufferAllocator -----------------------------------// MemChunk DeferBufferAllocator::alloc(size_t size, bool separate, size_t align) { @@ -420,11 +431,10 @@ ErrorCode DeferBufferAllocator::compute() { if (mPtr.ptr() == nullptr) { return OUT_OF_MEMORY; } - // mPtr.reset(static_cast(malloc(mTotalSize))); for (auto& chunk : mChunks) { chunk->base = mPtr.ptr(); for (auto t : chunk->tensors) { - t->buffer().host = mPtr.ptr() + chunk->offset; + mApplyFunction((uint8_t*)mPtr.base(), chunk->offset + mPtr.offset(), t); } } return NO_ERROR; diff --git a/source/core/BufferAllocator.hpp b/source/core/BufferAllocator.hpp index 010d0107e..78e0b8ee7 100644 --- a/source/core/BufferAllocator.hpp +++ b/source/core/BufferAllocator.hpp @@ -191,10 +191,11 @@ class MNN_PUBLIC EagerBufferAllocator : public BufferAllocator { std::shared_ptr mAllocator; size_t mAlign; }; +typedef void(*MemChunkApplyToTensor)(uint8_t* ptr, size_t offset, Tensor* tensor); class MNN_PUBLIC DeferBufferAllocator : public BufferAllocator { public: - DeferBufferAllocator(std::shared_ptr parent, size_t align = MNN_MEMORY_ALIGN_DEFAULT) : mAllocator(parent), mAlign(align) {} + DeferBufferAllocator(std::shared_ptr parent, size_t align = MNN_MEMORY_ALIGN_DEFAULT, MemChunkApplyToTensor func = nullptr); ~DeferBufferAllocator() { reset(); } @@ -229,6 +230,7 @@ class MNN_PUBLIC DeferBufferAllocator : public BufferAllocator { void insertFree(MemNode* chunk); void eraseFree(MemNode* chunk); void visiChildren(MemNode* chunk); + MemChunkApplyToTensor mApplyFunction; }; } // namespace MNN #endif diff --git a/source/core/Command.hpp b/source/core/Command.hpp index c855f9527..90d4a87d1 100644 --- a/source/core/Command.hpp +++ b/source/core/Command.hpp @@ -16,7 +16,7 @@ namespace MNN { struct Op; class Execution; class OperatorInfo; -struct Command : public RefCount { +struct Command { const Op* op; std::vector workInputs; std::vector workOutputs; @@ -28,9 +28,10 @@ struct Command : public RefCount { #ifdef MNN_BUILD_CODEGEN bool canVectorize = false; #endif + int group = 0; }; struct CommandBuffer { - std::vector> command; + std::vector> command; std::vector> extras; bool hasWrap = false; }; diff --git a/source/core/ConvolutionCommon.cpp b/source/core/ConvolutionCommon.cpp index 5b986b460..9e1f8d524 100644 --- a/source/core/ConvolutionCommon.cpp +++ b/source/core/ConvolutionCommon.cpp @@ -31,9 +31,10 @@ static int ReadBlobDim(unsigned char *&myfile, unsigned int* shape, int shapeBuf ::memcpy(shape, myfile, sizeof(unsigned int) * copyLength); myfile += copyLength * sizeof(unsigned int); } else { - auto myfileint16 = (uint16_t*)myfile; + std::vector tmpShapeInt16(copyLength); + ::memcpy(tmpShapeInt16.data(), myfile, copyLength * sizeof(int16_t)); for (int i=0; i ConvolutionCommon::load(const Con size_t buffer_size = 0, alpha_size = 0; const int8_t* buffer_ptr = nullptr; const float* alpha_ptr = nullptr; - std::unique_ptr external_buffer; - std::unique_ptr external_alpha; - if (USE_EXTERNAL_DATA(conv) && quan->buffer() == nullptr) { - // external data - buffer_size = conv->external()->Get(1); - alpha_size = conv->external()->Get(2) / sizeof(float); - external_buffer.reset(new int8_t[buffer_size]); - external_alpha.reset(new float[alpha_size]); - buffer_ptr = external_buffer.get(); - alpha_ptr = external_alpha.get(); - auto char_buffer_ptr = reinterpret_cast(external_buffer.get()); - auto char_alpha_ptr = reinterpret_cast(external_alpha.get()); - OpCommonUtils::loadExternalDatas(backend, {char_buffer_ptr, char_alpha_ptr}, conv->external()->data()); - } else { - if (quan->buffer()) { - buffer_size = quan->buffer()->size(); - buffer_ptr = quan->buffer()->data(); - } - if (quan->alpha()) { - alpha_size = quan->alpha()->size(); - alpha_ptr = quan->alpha()->data(); - } + if (quan->buffer()) { + buffer_size = quan->buffer()->size(); + buffer_ptr = quan->buffer()->data(); + } + if (quan->alpha()) { + alpha_size = quan->alpha()->size(); + alpha_ptr = quan->alpha()->data(); } if (quan->index() != nullptr) { if (forceFloat) { @@ -472,30 +461,13 @@ std::shared_ptr ConvolutionCommon::load(const Con if (2 == quan->type()) { buffer = ReadSparseQuanData_c(originBuffer, &weightLength, alpha_ptr, alpha_size, result.get(), quan->shapeInt32()); } - if (result->weightMap.size() > 0 && result->weightMap.size() <= 16) { - // Compute Remap for int4 + if (result->weightMap.size() > 0) { result->canUseInt4 = true; - result->weightReverseMap.resize(256); - ::memset(result->weightReverseMap.data(), 0, 256 * sizeof(int8_t)); - for (int i=0; iweightMap.size(); ++i) { - int value = result->weightMap[i]; - value = value + 128; - result->weightReverseMap[value] = i; - } -#ifdef MNN_TEST_REMAPQUANT - // Test reverse - std::vector originBuffer(weightLength); - for (int i=0; iweightReverseMap[(int)buffer[i] + 128]; - } - for (int i=0; iweightMap[buffer[i]]; - } - for (int i=0; iweightMap) { + if (value < -8 || value > 7) { + result->canUseInt4 = false; + } } -#endif } // read fp16 data if (3 == quan->type()) { diff --git a/source/core/ConvolutionCommon.hpp b/source/core/ConvolutionCommon.hpp index f41c88a2b..a61daa38f 100644 --- a/source/core/ConvolutionCommon.hpp +++ b/source/core/ConvolutionCommon.hpp @@ -21,7 +21,6 @@ class MNN_PUBLIC ConvolutionCommon : public Execution { const IDSTQuan* quan; bool asymmetric; std::vector weightMap; - std::vector weightReverseMap; bool canUseInt4 = false; Backend* backend = nullptr; }; diff --git a/source/core/FileLoader.cpp b/source/core/FileLoader.cpp index d7900e3fc..021dcc5de 100644 --- a/source/core/FileLoader.cpp +++ b/source/core/FileLoader.cpp @@ -11,25 +11,33 @@ #include "Windows.h" #endif namespace MNN { -FileLoader::FileLoader(const char* file) { +static FILE* _OpenFile(const char* file) { #if defined(_MSC_VER) wchar_t wFilename[1024]; if (0 == MultiByteToWideChar(CP_ACP, 0, file, -1, wFilename, sizeof(wFilename))) { - mFile = nullptr; - return; + return nullptr; } #if _MSC_VER >= 1400 + FILE* mFile = nullptr; if (0 != _wfopen_s(&mFile, wFilename, L"rb")) { - mFile = nullptr; - return; + return nullptr; } + return mFile; #else - mFile = _wfopen(wFilename, L"rb"); + return _wfopen(wFilename, L"rb"); #endif #else - mFile = fopen(file, "rb"); + return fopen(file, "rb"); #endif +} +FileLoader::FileLoader(const char* file, bool init) { + if (nullptr == file) { + return; + } mFilePath = file; + if (init) { + _init(); + } } FileLoader::~FileLoader() { @@ -42,6 +50,10 @@ FileLoader::~FileLoader() { } bool FileLoader::read() { + _init(); + if (nullptr == mFile) { + return false; + } auto block = MNNMemoryAllocAlign(gCacheSize, MNN_MEMORY_ALIGN_DEFAULT); if (nullptr == block) { MNN_PRINT("Memory Alloc Failed\n"); @@ -114,11 +126,31 @@ bool FileLoader::merge(AutoStorage& buffer) { return true; } +void FileLoader::_init() { + if (mInited) { + return; + } + mInited = true; + if (!mFilePath.empty()) { + mFile = _OpenFile(mFilePath.c_str()); + } + if (nullptr == mFile) { + MNN_ERROR("Can't open file:%s\n", mFilePath.c_str()); + } +} int FileLoader::offset(int64_t offset) { + _init(); + if (nullptr == mFile) { + return 0; + } return fseek(mFile, offset, SEEK_SET); } bool FileLoader::read(char* buffer, int64_t size) { + _init(); + if (nullptr == mFile) { + return false; + } return fread(buffer, 1, size, mFile) == size; } diff --git a/source/core/FileLoader.hpp b/source/core/FileLoader.hpp index 37065dd06..d757bcd9d 100644 --- a/source/core/FileLoader.hpp +++ b/source/core/FileLoader.hpp @@ -5,14 +5,15 @@ // Created by MNN on 2019/07/04. // Copyright © 2018, Alibaba Group Holding Limited // - +#ifndef MNN_FileLoader_hpp +#define MNN_FileLoader_hpp #include #include #include "core/AutoStorage.h" namespace MNN { class MNN_PUBLIC FileLoader { public: - FileLoader(const char* file); + FileLoader(const char* file, bool init = false); ~FileLoader(); @@ -33,10 +34,13 @@ class MNN_PUBLIC FileLoader { bool read(char* buffer, int64_t size); private: + void _init(); std::vector> mBlocks; FILE* mFile = nullptr; static const int gCacheSize = 4096; size_t mTotalSize = 0; - const char* mFilePath = nullptr; + std::string mFilePath; + bool mInited = false; }; } // namespace MNN +#endif diff --git a/source/core/Interpreter.cpp b/source/core/Interpreter.cpp index 766fce85c..e9ec694cb 100644 --- a/source/core/Interpreter.cpp +++ b/source/core/Interpreter.cpp @@ -19,7 +19,6 @@ #include "core/RuntimeFactory.hpp" #include "core/Session.hpp" #include -#include "backend/cpu/CPUBackend.hpp" #ifdef MNN_INTERNAL_ENABLED #include "internal/logging/Log.hpp" @@ -64,7 +63,7 @@ static Content* loadModelFile(const char* file) { MNN_PRINT("NULL file for create interpreter\n"); return nullptr; } - std::unique_ptr loader(new FileLoader(file)); + std::unique_ptr loader(new FileLoader(file, true)); if (!loader->valid()) { MNN_PRINT("Create interpreter failed, open %s error\n", file); return nullptr; @@ -92,6 +91,8 @@ Interpreter* Interpreter::createFromFile(const char* file) { if (nullptr == net) { return nullptr; } + // Set Default externalFile + net->externalFile = std::string(file) + ".weight"; return createFromBufferInternal(net, true); } @@ -150,6 +151,8 @@ void Interpreter::setSessionHint(HintMode mode, int hint) { case MEM_ALLOCATOR_TYPE: mNet->modes.memoryAllocatorType = hint; break; + case WINOGRAD_MEMORY_LEVEL: + mNet->modes.winogradMemoryUsed = hint; default: break; } @@ -170,6 +173,14 @@ void Interpreter::setSessionMode(SessionMode mode) { mNet->modes.memoryUsageMode = mode; } else if(mode == Session_Codegen_Disable || mode == Session_Codegen_Enable) { mNet->modes.codegenMode = mode; + } else if (mode == Session_Resize_Check) { + for (auto& iter : mNet->sessions) { + iter->openResizeCheck(); + } + } else if (mode == Session_Resize_Fix) { + for (auto& iter : mNet->sessions) { + iter->fixResizeCache(); + } } } @@ -179,7 +190,7 @@ void Interpreter::setCacheFile(const char* cacheFile, size_t keySize) { return; } mNet->cacheFile = std::string(cacheFile); - std::unique_ptr loader(new FileLoader(cacheFile)); + std::unique_ptr loader(new FileLoader(cacheFile, true)); if (!loader->valid()) { MNN_ERROR("Load Cache file error.\n"); return; @@ -250,8 +261,8 @@ Interpreter::~Interpreter() { Session* Interpreter::createMultiPathSession(const std::vector& configs) { RuntimeInfo runtime = createRuntime(configs); - runtime.second->setExternalFile(mNet->externalFile); runtime.second->setAllocatorType(mNet->modes.memoryAllocatorType); + runtime.second->setWinogradMemoryLevel(mNet->modes.winogradMemoryUsed); if (runtime.first.empty()) { MNN_ERROR("Runtime not valid for create session\n"); return nullptr; @@ -274,6 +285,7 @@ Session* Interpreter::createMultiPathSession(const std::vector& #endif int cacheMode = 0; // No cache Schedule::ScheduleInfo info; + info.externalWeightPath = mNet->externalFile; auto success = Schedule::schedule(info, mNet->net, configs, runtime); if (!success) { return nullptr; diff --git a/source/core/OpCommonUtils.cpp b/source/core/OpCommonUtils.cpp index 9ed65a343..c36635e45 100644 --- a/source/core/OpCommonUtils.cpp +++ b/source/core/OpCommonUtils.cpp @@ -7,7 +7,7 @@ // #include "OpCommonUtils.hpp" -#include "FileLoader.hpp" +#include "core/Execution.hpp" #include "MNN_generated.h" #include "Macro.h" #include @@ -31,13 +31,19 @@ Tensor::DimensionType OpCommonUtils::convertDimType(MNN_DATA_FORMAT dimensionFor return dimType; } -void OpCommonUtils::loadBlobData(Backend* backend, const Op* op, char* ptr, int size) { +void OpCommonUtils::loadBlobData(FileLoader* loader, const Op* op, char* ptr, int size) { if (OpParameter_Blob != op->main_type()) { return; } auto b = op->main_as_Blob(); if (USE_EXTERNAL_DATA(b)) { - loadExternalDatas(backend, { ptr }, b->external()->data()); + if (op->externalPath() != nullptr) { + loader = new FileLoader(op->externalPath()->c_str()); + } + loadExternalDatas(loader, { ptr }, b->external()->data()); + if (op->externalPath() != nullptr) { + delete loader; + } return; } void* result = nullptr; @@ -516,14 +522,41 @@ bool OpCommonUtils::opNeedContent(const MNN::Op* op, int index) { } return true; } -bool OpCommonUtils::opCompabilityForLowp(const Op* op) { +bool OpCommonUtils::opCompabilityForLowp(const Op* op, int bytes) { switch (op->type()) { + case OpType_While: + { + if (bytes == 4) { + return true; + } + if (op->main_type() != OpParameter_LoopParam) { + return false; + } + // Check fuse + auto loop = op->main_as_LoopParam(); + if (nullptr != loop->initCommand()) { + for (int i=0; iinitCommand()->size(); ++i) { + auto cmd = loop->initCommand()->GetAs(i); + if (cmd->fuse() >= 0) { + return false; + } + } + } + if (nullptr != loop->commands()) { + for (int i=0; icommands()->size(); ++i) { + auto cmd = loop->commands()->GetAs(i); + if (cmd->fuse() >= 0) { + return false; + } + } + } + return true; + } case OpType_Scale: case OpType_Convolution: case OpType_ConvolutionDepthwise: case OpType_Deconvolution: case OpType_DeconvolutionDepthwise: - case OpType_While: case OpType_MatMul: case OpType_BatchMatMul: case OpType_BinaryOp: @@ -533,10 +566,12 @@ bool OpCommonUtils::opCompabilityForLowp(const Op* op) { case OpType_Raster: case OpType_ReLU: case OpType_ReLU6: + case OpType_Select: case OpType_PReLU: case OpType_GridSample: case OpType_ROIPooling: case OpType_ROIAlign: + case OpType_DynamicQuant: return true; default: break; @@ -551,40 +586,133 @@ void OpCommonUtils::rasterInputReset(const std::vector &inputs, Tensor outputDes->regions[i].origin = inputs[i]; } } +static bool _RebuildExternalOp(FileLoader* external, const MNN::Op* origin, flatbuffers::FlatBufferBuilder& builder) { + if (nullptr == external) { + MNN_ERROR("Can't rebuild external op because external is nullptr\n"); + return false; + } + builder.Clear(); + bool externalTmp = false; + if (nullptr != origin->externalPath()) { + external = new FileLoader(origin->externalPath()->c_str()); + externalTmp = true; + } + std::shared_ptr op(origin->UnPack()); + switch (op->main.type) { + case OpParameter_Scale: + { + auto scale = op->main.AsScale(); + int outputCount = static_cast(scale->external[1] / sizeof(float)); + scale->scaleData.resize(outputCount); + external->offset(scale->external[0]); + external->read((char*)scale->scaleData.data(), scale->external[1]); + if (scale->external.size() > 2) { + scale->biasData.resize(outputCount); + external->read((char*)scale->biasData.data(), scale->external[2]); + } + break; + } + case OpParameter_LayerNorm: + { + auto layer_norm_param = op->main.AsLayerNorm(); + int32_t size = static_cast(layer_norm_param->external[1]); + layer_norm_param->gamma.resize(size); + layer_norm_param->beta.resize(size); + external->offset(layer_norm_param->external[0]); + external->read((char*)layer_norm_param->gamma.data(), layer_norm_param->external[1]); + external->read((char*)layer_norm_param->beta.data(), layer_norm_param->external[2]); + break; + } -void OpCommonUtils::loadExternalData(Backend* backend, char* addr, int64_t offset, int64_t size) { - FileLoader fileloader(backend->externalFile().c_str()); - fileloader.offset(offset); - fileloader.read(addr, size); -} - -void OpCommonUtils::loadExternalDatas(Backend* backend, std::vector addrs, const int64_t* external) { - FileLoader fileloader(backend->externalFile().c_str()); - fileloader.offset(external[0]); - for (int i = 0; i < addrs.size(); i++) { - fileloader.read(addrs[i], external[i+1]); + case OpParameter_Convolution2D: + { + auto param = op->main.AsConvolution2D(); + if (param->quanParameter) { + external->offset(param->external[0]); + if (0 != param->external[1]) { + param->quanParameter->buffer.resize(param->external[1]); + external->read((char*)param->quanParameter->buffer.data(), param->external[1]); + } + param->quanParameter->alpha.resize(param->external[2] / sizeof(float)); + external->read((char*)param->quanParameter->alpha.data(), param->external[2]); + if (param->bias.empty() && param->external.size() > 3) { + param->bias.resize(param->external[3]/sizeof(float)); + external->read((char*)param->bias.data(), param->external[3]); + } + if (param->quanParameter->index.empty() && param->external.size() > 4) { + param->quanParameter->index.resize(param->external[4]/sizeof(uint32_t)); + external->read((char*)param->quanParameter->index.data(), param->external[4]); + } + } else { + external->offset(param->external[0]); + param->weight.resize(param->external[1] / sizeof(float)); + external->read((char*)param->weight.data(), param->external[1]); + param->bias.resize(param->external[2] / sizeof(float)); + external->read((char*)param->bias.data(), param->external[2]); + } + break; + } + default: + break; } + if (externalTmp) { + delete external; + } + builder.Finish(Op::Pack(builder, op.get())); + return true; } - -bool OpCommonUtils::loadConvData(Backend* backend, const Op* op, std::unique_ptr& weight, std::unique_ptr& bias, int& weightSize, int& biasSize) { - auto conv2d = op->main_as_Convolution2D(); - auto offset = conv2d->external()->Get(0); - auto weightBytes = conv2d->external()->Get(1); - auto biasBytes = conv2d->external()->Get(2); - weightSize = static_cast(weightBytes / sizeof(float)); - biasSize = static_cast(biasBytes / sizeof(float)); - weight.reset(Tensor::createDevice({(int)weightBytes})); - bias.reset(Tensor::createDevice({(int)biasBytes})); - bool res = backend->onAcquireBuffer(weight.get(), Backend::STATIC); - if (!res) { - return res; +Execution* OpCommonUtils::createExecutionWithExternal(Backend* backend, const std::vector& inputs, const std::vector& outputs, + const MNN::Op* op, FileLoader* externalFile, std::shared_ptr& tmpstore) { + bool hasExternal = false; + switch (op->main_type()) { + case OpParameter_Convolution2D: + hasExternal = USE_EXTERNAL_DATA(op->main_as_Convolution2D()); + break; + case OpParameter_Scale: + hasExternal = USE_EXTERNAL_DATA(op->main_as_Scale()); + break; + case OpParameter_LayerNorm: + hasExternal = USE_EXTERNAL_DATA(op->main_as_LayerNorm()); + break; + default: + break; } - res = backend->onAcquireBuffer(bias.get(), Backend::STATIC); + if (!hasExternal) { + return backend->onCreate(inputs, outputs, op); + } + flatbuffers::FlatBufferBuilder builder; + bool res = _RebuildExternalOp(externalFile, op, builder); if (!res) { - return res; + MNN_ERROR("Rebuild External Op failed\n"); + return nullptr; + } + auto newOp = flatbuffers::GetRoot(builder.GetBufferPointer()); + auto execution = backend->onCreate(inputs, outputs, newOp); + if (nullptr == execution) { + return execution; + } + if (op->main_type() == OpParameter_Convolution2D) { + Execution* copyExe = nullptr; + execution->onClone(backend, op, ©Exe); + if (nullptr != copyExe) { + delete execution; + return copyExe; + } else { +#ifdef DEBUG + MNN_ERROR("Clone error for convolution/deconvolution, will Increase memory\n"); +#endif + tmpstore.reset(new BufferStorage); + tmpstore->storage = builder.ReleaseRaw(tmpstore->allocated_size, tmpstore->offset); + } + } + return execution; +} + +void OpCommonUtils::loadExternalDatas(FileLoader* fileloader, std::vector addrs, const int64_t* external) { + fileloader->offset(external[0]); + for (int i = 0; i < addrs.size(); i++) { + fileloader->read(addrs[i], external[i+1]); } - loadExternalDatas(backend, {weight->host(), bias->host()}, conv2d->external()->data()); - return true; } static void getBatchChannelArea(const Tensor* t, int& batch, int& channel, int& area) { @@ -630,6 +758,12 @@ bool OpCommonUtils::isTranspose(const Tensor::InsideDescribe::Region& region, in } return srcOne >= 0 && dstOne >= 0 && srcOne != dstOne; } +bool OpCommonUtils::supportDynamicInputMemory(MNNForwardType type) { + if (type == MNN_FORWARD_OPENCL || type == MNN_FORWARD_VULKAN) { + return false; + } + return true; +} void OpCommonUtils::turnRegion2Convert(const Tensor::InsideDescribe::Region& region, const Tensor* dest, OpCommonUtils::TensorConvertParameter& info) { auto origin = region.origin; diff --git a/source/core/OpCommonUtils.hpp b/source/core/OpCommonUtils.hpp index 484c8bd7b..7c35bcaa8 100644 --- a/source/core/OpCommonUtils.hpp +++ b/source/core/OpCommonUtils.hpp @@ -10,6 +10,7 @@ #define OpCommonUtils_hpp #include #include "TensorUtils.hpp" +#include "FileLoader.hpp" namespace MNN { struct Op; @@ -19,13 +20,14 @@ class MNN_PUBLIC OpCommonUtils { #define USE_EXTERNAL_DATA(param) (param->external() && param->external()->size() > 1) public: static Tensor::DimensionType convertDimType(MNN_DATA_FORMAT dimensionFormat); + static bool supportDynamicInputMemory(MNNForwardType type); static void broastCastComputeDim(int* dims, int* stride, int* iStride0, int* iStride1, const Tensor* input0, const Tensor* input1, const Tensor* output); static std::vector> computeReduceDims(const std::vector& inputs, const Op* op); static void unravelIndexHelper(int32_t* coordinate, const int32_t* mod, int size, int indice); static int computeStride(int32_t* strides, const int* shape, int length); - static void loadBlobData(Backend* backend, const Op* op, char* ptr, int size); + static void loadBlobData(FileLoader* loader, const Op* op, char* ptr, int size); static bool canBlitFast(const Tensor::InsideDescribe::Region& region, const Tensor* dest, int pack = 4, bool swapnc = false, bool swapcw = false); static void turnToPackRegion(const Tensor::InsideDescribe::Region& region, Tensor::InsideDescribe::Region& c4Region, @@ -40,13 +42,11 @@ class MNN_PUBLIC OpCommonUtils { static bool opNeedContent(const MNN::Op* op, int index); // For lowp CPU Backend - static bool opCompabilityForLowp(const Op* op); + static bool opCompabilityForLowp(const Op* op, int bytes); static void rasterInputReset(const std::vector& inputs, Tensor* output); - static void loadExternalData(Backend* backend, char* addr, int64_t offset, int64_t size); - static void loadExternalDatas(Backend* backend, std::vector addrs, const int64_t* external); - static bool loadConvData(Backend* backend, const Op* op, std::unique_ptr& weight, std::unique_ptr& bias, int& weightSize, int& biasSize); + static void loadExternalDatas(FileLoader* loader, std::vector addrs, const int64_t* external); struct TensorConvertParameter { int batch; int channel; @@ -61,6 +61,8 @@ class MNN_PUBLIC OpCommonUtils { static bool isTranspose(const Tensor::InsideDescribe::Region& region, int& srcOne, int& dstOne); static bool computeMatMulSize(bool transposeA, bool transposeB, const Tensor* A, const Tensor* B, int& e, int& l, int& h); + static Execution* createExecutionWithExternal(Backend* backend, const std::vector& inputs, const std::vector& outputs, + const MNN::Op* op, FileLoader* externalFile, std::shared_ptr& tmpstore); }; } // namespace MNN diff --git a/source/core/Pipeline.cpp b/source/core/Pipeline.cpp index a1127f1e5..163b7a2a3 100644 --- a/source/core/Pipeline.cpp +++ b/source/core/Pipeline.cpp @@ -122,7 +122,17 @@ static Backend::StorageType _getTensorStorageType(const Tensor* tensor, bool out static bool _needRelease(const Tensor* tensor, bool inputOutside) { auto des = TensorUtils::getDescribe(tensor); + auto desO = TensorUtils::getDescribeOrigin(tensor); auto usage = des->usage; + if (0 != des->useCount) { + return false; + } + if (des->memoryType == Tensor::InsideDescribe::MEMORY_HOST || des->memoryType == Tensor::InsideDescribe::MEMORY_OUTSIDE) { + return false; + } + if (nullptr == desO->getBackend()) { + return false; + } if (inputOutside) { return usage == Tensor::InsideDescribe::NORMAL; } @@ -134,27 +144,28 @@ static bool _needRelease(const Tensor* tensor, bool inputOutside) { } return true; } -static void _releaseTensor(Tensor* origin, bool mAllocInput) { - if (TensorUtils::getDescribe(origin)->usage != Tensor::InsideDescribe::CONSTANT) { - TensorUtils::getDescribe(origin)->useCount -= 1; +static void _releaseTensor(Tensor* origin, bool mAllocInput, int group) { + auto des = TensorUtils::getDescribe(origin); + if (des->usage != Tensor::InsideDescribe::CONSTANT) { + des->useCount -= 1; } - if (0 == TensorUtils::getDescribe(origin)->useCount && - TensorUtils::getDescribe(origin)->memoryType == Tensor::InsideDescribe::MEMORY_BACKEND) { - auto needRelease = _needRelease(origin, !mAllocInput); - auto bn = TensorUtils::getDescribe(origin)->getBackend(); - if (nullptr != bn && needRelease) { - // For zeroshape may not has bn - bn->onReleaseBuffer(origin, Backend::DYNAMIC); - } + if (des->group != group) { + return; + } + auto needRelease = _needRelease(origin, !mAllocInput); + if (needRelease) { + TensorUtils::getDescribeOrigin(origin)->mem = nullptr; } } -static bool _allocTensor(Tensor* t, Backend* curBackend, bool outputStatic) { +static bool _allocTensor(Tensor* t, Backend* curBackend, bool outputStatic, int group) { auto memoryType = _getTensorStorageType(t, outputStatic); - auto bn = TensorUtils::getDescribe(t)->getBackend(); + auto bn = TensorUtils::getDescribeOrigin(t)->getBackend(); auto des = TensorUtils::getDescribe(t); - if (nullptr == des->mem.get()) { - MNN_ASSERT(des->memoryType != Tensor::InsideDescribe::MEMORY_VIRTUAL); + if (des->group != group) { + return true; + } + if (nullptr == TensorUtils::getDescribeOrigin(t)->mem.get()) { TensorUtils::setLinearLayout(t); auto res = curBackend->onAcquireBuffer(t, memoryType); return res; @@ -194,12 +205,13 @@ void Pipeline::UnitInfo::setUp(const Command& command, int index, const Op* orig #endif } -Pipeline::Pipeline(Schedule::PipelineInfo&& info, bool allocInput, bool outputStatic, const TuningAttr& tune, const Runtime* rt, const Runtime* cpuRt) +Pipeline::Pipeline(const std::string& externalFile, Schedule::PipelineInfo&& info, bool allocInput, bool outputStatic, const TuningAttr& tune, const Runtime* rt, const Runtime* cpuRt) #ifndef MNN_BUILD_MINI : mContext(info.first.cache.second, info.first.cache.first->type(), info.first.info.user ? info.first.info.user->precision : BackendConfig::Precision_Normal), mUseGeometry(rt->onGetCompilerType()) { #else { #endif + mExternalFile = externalFile; rt->onCheckInfo(info.first.info); mRuntime = rt; mCpuRuntime = cpuRt; @@ -234,7 +246,7 @@ ErrorCode Pipeline::encode(bool supportDebug, bool permitCodegen) { if (!mInfo.first.needComputeGeometry) { for (int i=0; i cmd = new Command; + std::shared_ptr cmd(new Command); cmd->op = info.op; if (cmd->op->type() == OpType_Raster) { // Compability for Origin Static Model @@ -254,8 +266,9 @@ ErrorCode Pipeline::encode(bool supportDebug, bool permitCodegen) { } else { #ifndef MNN_BUILD_MINI mContext.clear(); + FileLoader l(mExternalFile.c_str()); /** Size Compute and compute Const Begin */ - auto res = GeometryComputerUtils::shapeComputeAndGeometryTransform(mInfo.second, mContext, mInfo.first.cache.second, mUseGeometry, false, permitCodegen); + auto res = GeometryComputerUtils::shapeComputeAndGeometryTransform(&l, mInfo.second, mContext, mInfo.first.cache.second, mUseGeometry, false, permitCodegen); if (res != NO_ERROR) { return res; } @@ -395,7 +408,7 @@ ErrorCode Pipeline::encode(bool supportDebug, bool permitCodegen) { des->type = runType; } cmdBuffer.extras.emplace_back(wrapTensor); - SharedPtr command(new Command); + std::shared_ptr command(new Command); command->inputs = {input}; command->outputs = {wrapTensor.get()}; info.cacheBuffer.hasWrap = true; @@ -451,17 +464,6 @@ ErrorCode Pipeline::encode(bool supportDebug, bool permitCodegen) { } } } -#ifndef MNN_BUILD_MINI - else { - for (auto& info : mInfo.second) { - auto& buffer = info.executeBuffer; - for (auto& cmdP : buffer.command) { - mFlops += SizeComputer::computeFlops(cmdP->op, cmdP->inputs, cmdP->outputs); - } - } - } -#endif - return NO_ERROR; } @@ -473,10 +475,13 @@ void Pipeline::_pushTuningTask(std::vector&& initInfos) { for (auto& info : initInfos) { auto& buffer = info.executeBuffer; + if (info.type == Schedule::CONSTANT) { + continue; + } for (int v=0; vinputs = iter.inputs; iterP->outputs = iter.outputs; @@ -511,10 +516,15 @@ void Pipeline::_pushTuningTask(std::vector&& initInfos) { // Make async task for tuning const_cast(mRuntime)->mCancelled = false; auto future = std::async(std::launch::async, [&, this](std::vector&& infos, std::map>&& tensors, std::shared_ptr backend, const std::atomic_bool& cancelled) -> int { + FileLoader loader(mExternalFile.c_str()); backend->onClearBuffer(); backend->onResizeBegin(); + std::vector> tmpStorage; for (auto& info : infos) { + if (info.type == Schedule::CONSTANT) { + continue; + } auto& buffer = info.executeBuffer; for (auto& iterP : buffer.command) { if(cancelled) { @@ -523,16 +533,20 @@ void Pipeline::_pushTuningTask(std::vector&& initInfos) { auto& iter = *iterP; // FIXME: Remove onMaskOpReady in future const_cast(mRuntime)->onMaskOpReady(iter.inputs, iter.outputs, iter.op); - + std::shared_ptr tmp; // If create op failed, we can also mask the op is ready for runtime - std::shared_ptr exe(backend->onCreate(iter.inputs, iter.outputs, iter.op)); + auto exePtr = OpCommonUtils::createExecutionWithExternal(backend.get(), iter.inputs, iter.outputs, iter.op, &loader, tmp); + std::shared_ptr exe(exePtr); if (nullptr == exe) { continue; } + if (nullptr != tmp) { + tmpStorage.emplace_back(tmp); + } std::vector forRelease; std::shared_ptr _defer(nullptr, [&forRelease](void*) { for (auto t : forRelease) { - TensorUtils::getDescribe(t)->mem.reset(nullptr); + TensorUtils::getDescribeOrigin(t)->mem = nullptr; } }); // Alloc inputs and outputs @@ -563,10 +577,17 @@ void Pipeline::_pushTuningTask(std::vector&& initInfos) { const_cast(mRuntime)->setAsyncWork(std::move(future)); } -static ErrorCode _createExecutions(Schedule::PipelineInfo& mInfo) { +static ErrorCode _createExecutions(Schedule::PipelineInfo& mInfo, const std::string& externalFile, std::vector>& extraStorage) { + FileLoader loader(externalFile.c_str()); auto& mBackend = mInfo.first.cache.first; auto& mBackupBackend = mInfo.first.cache.second; for (auto& info : mInfo.second) { + if (!info.computeCache.needComputeShape) { + continue; + } + if (info.type == Schedule::CONSTANT) { + continue; + } auto& buffer = info.executeBuffer; // MNN_PRINT("before resize, mInfo.second size:%lu, command size:%lu,op type:%s, op name:%s\n", mInfo.second.size(), buffer.command.size(), EnumNameOpType(info.op->type()), info.op->name()->c_str()); for (auto& iterP : buffer.command) { @@ -582,12 +603,13 @@ static ErrorCode _createExecutions(Schedule::PipelineInfo& mInfo) { cached = true; } } + std::shared_ptr tmpStorage; if (nullptr == iter.execution) { - iter.execution.reset(mBackend->onCreate(iter.inputs, iter.outputs, iter.op)); + iter.execution.reset(OpCommonUtils::createExecutionWithExternal(mBackend.get(), iter.inputs, iter.outputs, iter.op, &loader, tmpStorage)); } if (nullptr == iter.execution) { // Try Backup - iter.execution.reset(mBackupBackend->onCreate(iter.inputs, iter.outputs, iter.op)); + iter.execution.reset(OpCommonUtils::createExecutionWithExternal(mBackupBackend.get(), iter.inputs, iter.outputs, iter.op, &loader, tmpStorage)); if (nullptr == iter.execution) { if (mInfo.first.reportError) { MNN_ERROR("Create execution error : %d\n", iter.op->type()); @@ -595,6 +617,9 @@ static ErrorCode _createExecutions(Schedule::PipelineInfo& mInfo) { return NOT_SUPPORT; } } + if (nullptr != tmpStorage.get()) { + extraStorage.emplace_back(tmpStorage); + } // invalid means memory alloc failed if (!iter.execution->valid()) { iter.execution = nullptr; @@ -612,6 +637,9 @@ static void _SetTensorBackend(Schedule::PipelineInfo& mInfo, bool ownInputs) { // Clear Valid Tensor's Backend for (int infoIndex=0; infoIndex < mInfo.second.size(); ++infoIndex) { auto& info = mInfo.second[infoIndex]; + if (info.type == Schedule::CONSTANT) { + continue; + } auto& buffer = info.executeBuffer; // MNN_PRINT("before resize, mInfo.second size:%lu, command size:%lu,op type:%s, op name:%s\n", mInfo.second.size(), buffer.command.size(), EnumNameOpType(info.op->type()), info.op->name()->c_str()); for (int iterIndex=0; iterIndexbackend(); if (ownInputs) { for (auto t : iter.inputs) { - auto des = TensorUtils::getDescribe(t); + auto des = TensorUtils::getDescribeOrigin(t); if (nullptr == des->mem.get()) { des->setBackend(nullptr); } } } for (auto t : iter.outputs) { - auto des = TensorUtils::getDescribe(t); + auto des = TensorUtils::getDescribeOrigin(t); if (nullptr == des->mem.get()) { des->setBackend(nullptr); } @@ -640,6 +668,9 @@ static void _SetTensorBackend(Schedule::PipelineInfo& mInfo, bool ownInputs) { // Set Tensor's Backend for (auto& info : mInfo.second) { + if (info.type == Schedule::CONSTANT) { + continue; + } auto& buffer = info.executeBuffer; // MNN_PRINT("before resize, mInfo.second size:%lu, command size:%lu,op type:%s, op name:%s\n", mInfo.second.size(), buffer.command.size(), EnumNameOpType(info.op->type()), info.op->name()->c_str()); for (auto& iterP : buffer.command) { @@ -650,14 +681,14 @@ static void _SetTensorBackend(Schedule::PipelineInfo& mInfo, bool ownInputs) { auto curBackend = iter.execution->backend(); if (ownInputs) { for (auto t : iter.inputs) { - auto des = TensorUtils::getDescribe(t); + auto des = TensorUtils::getDescribeOrigin(t); if (nullptr == des->mem.get() && nullptr == des->getBackend()) { des->setBackend(curBackend); } } } for (auto t : iter.outputs) { - auto des = TensorUtils::getDescribe(t); + auto des = TensorUtils::getDescribeOrigin(t); if (nullptr == des->mem.get() && nullptr == des->getBackend()) { des->setBackend(curBackend); } @@ -675,11 +706,21 @@ static void _makeCopyOp(std::shared_ptr& copyOp) { copyOp->storage = builder.ReleaseRaw(copyOp->allocated_size, copyOp->offset); } } -static ErrorCode _InsertCopy(Schedule::PipelineInfo& mInfo, std::map>& mCacheConstTensors, std::map>& shapeFixConstCache, bool ownInput, bool permitCodegen) { - std::map, std::shared_ptr> wrapCache; +static ErrorCode _InsertCopy(Schedule::PipelineInfo& mInfo, std::map>& mCacheConstTensors, std::map, std::shared_ptr>& shapeFixConstCache, bool ownInput, bool permitCodegen) { std::shared_ptr copyOp; - shapeFixConstCache.clear(); + for (auto& iter : shapeFixConstCache) { + auto des = TensorUtils::getDescribe(iter.second.get()); + if (des->usage == Tensor::InsideDescribe::CONSTANT && des->stageMask == 0) { + // If the tensor is not compute in shape-geometry stage, needn't recopy it + continue; + } + TensorUtils::getDescribeOrigin(iter.second.get())->setBackend(nullptr); + TensorUtils::getDescribeOrigin(iter.second.get())->mem = nullptr; + } for (auto& info : mInfo.second) { + if (info.type == Schedule::CONSTANT) { + continue; + } auto& buffer = info.executeBuffer; if (buffer.command.empty()) { continue; @@ -706,12 +747,10 @@ static ErrorCode _InsertCopy(Schedule::PipelineInfo& mInfo, std::mapisMutable) { newTensor = WrapExecution::copyConstCache(t, curBackend, mCacheConstTensors, permitCodegen); - } else if (des->usage == Tensor::InsideDescribe::CONSTANT) { - newTensor = WrapExecution::copyConstCache(t, curBackend, shapeFixConstCache, permitCodegen); - } - if (nullptr != newTensor) { - iter.workInputs[v] = newTensor; - break; + if (nullptr != newTensor) { + iter.workInputs[v] = newTensor; + break; + } } if (!ownInput) { if (TensorUtils::getDescribe(t)->usage == Tensor::InsideDescribe::INPUT) { @@ -738,20 +777,42 @@ static ErrorCode _InsertCopy(Schedule::PipelineInfo& mInfo, std::map cmdP = new Command; - auto& cmd = *cmdP; - cmd.buffer = copyOp; - cmd.workInputs = {t}; - cmd.workOutputs = {copyWrap.second.get()}; - cmd.op = flatbuffers::GetRoot(cmd.buffer->buffer()); - buffer.extras.emplace_back(copyWrap.second); - cmd.execution.reset(copyWrap.first); - buffer.command.emplace_back(cmdP); + { + auto titer = shapeFixConstCache.find(std::make_pair(t, curBackend)); + if (titer != shapeFixConstCache.end()) { + newTensor = titer->second.get(); + } else { + std::shared_ptr tensor(new Tensor); + shapeFixConstCache.insert(std::make_pair(std::make_pair(t, curBackend), tensor)); + newTensor = tensor.get(); + } + iter.workInputs[v] = newTensor; } + auto newMemory = TensorUtils::getDescribeOrigin(newTensor); + if (newMemory->getBackend() != nullptr) { + // The memory has been init, skip it + break; + } + TensorUtils::copyShape(t, newTensor, true, true); + if (des->usage == Tensor::InsideDescribe::CONSTANT) { + TensorUtils::getDescribe(newTensor)->usage = des->usage; + auto tempRes = WrapExecution::allocAndCopy(curBackend, t, newTensor); + if (!tempRes) { + return OUT_OF_MEMORY; + } + break; + } + newMemory->setBackend(curBackend); + auto copyWrap = WrapExecution::makeCopyExecution(curBackend, mInfo.first.cache.second.get()); + _makeCopyOp(copyOp); + std::shared_ptr cmdP(new Command); + auto& cmd = *cmdP; + cmd.buffer = copyOp; + cmd.workInputs = {t}; + cmd.workOutputs = {newTensor}; + cmd.op = flatbuffers::GetRoot(cmd.buffer->buffer()); + cmd.execution.reset(copyWrap); + buffer.command.emplace_back(cmdP); } while(false); } } @@ -760,17 +821,19 @@ static ErrorCode _InsertCopy(Schedule::PipelineInfo& mInfo, std::mapworkOutputs[v] = copyWrap.second.get(); + auto copyWrap = WrapExecution::makeCopyExecution(curBackend, mInfo.first.cache.second.get()); + std::shared_ptr newTensor(new Tensor); + TensorUtils::copyShape(t, newTensor.get(), true, true); + iterP->workOutputs[v] = newTensor.get(); _makeCopyOp(copyOp); - SharedPtr cmdP = new Command; + std::shared_ptr cmdP(new Command); auto& cmd = *cmdP; cmd.buffer = copyOp; - cmd.workInputs = {copyWrap.second.get()}; + cmd.workInputs = {newTensor.get()}; cmd.workOutputs = {t}; cmd.op = flatbuffers::GetRoot(cmd.buffer->buffer()); - buffer.extras.emplace_back(copyWrap.second); - cmd.execution.reset(copyWrap.first); + buffer.extras.emplace_back(newTensor); + cmd.execution.reset(copyWrap); buffer.command.emplace_back(cmdP); for(int i = 0; i < iter.inputs.size(); ++i){ if(t == iter.inputs[i]){ @@ -789,111 +852,96 @@ void Pipeline::_recycleDynamicMemory(Command* command) { for (auto& t : command->workOutputs) { auto memoryType = _getTensorStorageType(t, mOutputStatic); if (Backend::DYNAMIC == memoryType) { - TensorUtils::getDescribe(t)->mem.reset(nullptr); + TensorUtils::getDescribeOrigin(t)->mem = nullptr; } } for (auto& t : command->workInputs) { auto memoryType = _getTensorStorageType(t, mOutputStatic); if (Backend::DYNAMIC == memoryType) { - TensorUtils::getDescribe(t)->mem.reset(nullptr); + TensorUtils::getDescribeOrigin(t)->mem = nullptr; } } } +void Pipeline::openResizeCheck() { + for (auto& info : mInfo.second) { + info.computeCache.open(); + } +} -ErrorCode Pipeline::allocMemory(bool firstMalloc, bool forbidReplace) { - // MNN_PRINT("allocMemory mtype:%d, cpubackendType:%d, cpuBackend runtime:%p\n", mBackend->type(), mBackupBackend->type(), mBackupBackend->getRuntime()); - if (!firstMalloc) { - // For session setNeedMalloc, if session's output is set as some input, It may cause error - // Dup des to avoid it - for (auto& info : mInfo.second) { - auto& buffer = info.executeBuffer; - for (const auto& infoP : buffer.command) { - auto& info = *infoP; - for (auto t : info.workOutputs) { - if (!TensorUtils::getDescribe(t)->isMutable) { - continue; - } - auto des = TensorUtils::getDescribe(t); - auto usage = des->usage; - if (TensorUtils::getDescribeOrigin(t)->mContent->count() > 1) { - TensorUtils::getDescribeOrigin(t)->mContent = new Tensor::InsideDescribe::NativeInsideDescribe; - auto dstDes = TensorUtils::getDescribe(t); - t->buffer().dim = dstDes->dims; - ::memcpy(t->buffer().dim, des->dims, MNN_MAX_TENSOR_DIM * sizeof(halide_dimension_t)); - dstDes->dimensionFormat = des->dimensionFormat; - dstDes->usage = usage; - dstDes->regions = des->regions; - dstDes->quantAttr = des->quantAttr; - dstDes->tensorArrayAttr = des->tensorArrayAttr; - } - } - } +ErrorCode Pipeline::fixResizeCache() { + for (auto& info : mInfo.second) { + if (info.type == Schedule::CONSTANT && (!info.computeCache.needExecuteConst)) { + info.executeBuffer.command.clear(); + info.executeBuffer.extras.clear(); + info.cacheBuffer.command.clear(); + info.cacheBuffer.extras.clear(); } } - - /* Create Execution Begin */ - auto& mBackend = mInfo.first.cache.first; - auto& mBackupBackend = mInfo.first.cache.second; - mBackend->onClearBuffer(); - mBackupBackend->onClearBuffer(); - // Check If we need a lone time for init - if (mBackend->type() != MNN_FORWARD_CPU && mBackend->type() != MNN_FORWARD_CPU_EXTENSION && mTuneAttr.autoSetOpType) { - Runtime::OpInfo dstInfo; - int currentInitCount = 0; - std::vector initInfos; - for (auto& info : mInfo.second) { - auto& buffer = info.executeBuffer; - for (auto& iterP : buffer.command) { - auto& iter = *iterP; - dstInfo.initCostLong = false; - mRuntime->onMeasure(iter.inputs, iter.outputs, iter.op, dstInfo); - if (dstInfo.initCostLong) { - initInfos.emplace_back(info); - currentInitCount++; - break; + auto res = mInfo.first.cache.first->onSelectDynamicAllocator(1, 2); + res = res && mInfo.first.cache.second->onSelectDynamicAllocator(1, 2); + if (!res) { + MNN_PRINT("%d backend don't support resize fix optimize\n", mInfo.first.cache.first->type()); + return NOT_SUPPORT; + } + size_t totalNumber = 0; + size_t fixNumber = 0; + // Mask begin + for (auto& info : mInfo.second) { + auto& buffer = info.executeBuffer; + if (info.type != Schedule::CONSTANT) { + totalNumber += buffer.command.size(); + } + if (info.computeCache.needComputeShape) { + info.computeCache.close(false); + continue; + } + info.computeCache.close(true); + if (info.type == Schedule::CONSTANT) { + continue; + } + // TODO: OCL and Vulkan don't support input vary + bool notSupportInputVarying = !OpCommonUtils::supportDynamicInputMemory(mInfo.first.cache.first->type()); + for (int cmdIndex=0; cmdIndexgroup < 0 || TensorUtils::getDescribe(t)->usage != Tensor::InsideDescribe::NORMAL) { + cmd.group = 0; + break; + } } } - if (currentInitCount >= mTuneAttr.maxTuningNumber) { - break; + if (1 == cmd.group) { + fixNumber++; } - } - if (currentInitCount > 0) { - MNN_PRINT("Turn back to cpu\n"); - // Reset execution - for (auto& info : mInfo.second) { - info.executionCache.clear(); - for (auto& iterP : info.executeBuffer.command) { - iterP->execution = nullptr; - iterP->execution = nullptr; - _recycleDynamicMemory(iterP.get()); + for (auto t : cmd.workInputs) { + if (TensorUtils::getDescribe(t)->group == 0) { + TensorUtils::getDescribe(t)->group = 1; } } - if (!mRuntime->hasAsyncWork()) { - _pushTuningTask(std::move(initInfos)); + for (auto t : cmd.workOutputs) { + TensorUtils::getDescribe(t)->group = 1; } - mBackend.reset(mCpuRuntime->onCreate(nullptr)); - } - } - { - auto code = _createExecutions(mInfo); - if (NO_ERROR != code) { - return code; - } - } - /* Create Execution End */ - - _SetTensorBackend(mInfo, mAllocInput); - // Insert Wrap If needed - { - auto insertCode = _InsertCopy(mInfo, mCacheConstTensors, mShapeFixConstCache, mAllocInput, forbidReplace); - if (NO_ERROR != insertCode) { - return insertCode; } } - /* Insert Wrap End*/ + // Mask End + _allocForTensor(1, true); + mInfo.first.cache.first->onSelectDynamicAllocator(0, 2); + res && mInfo.first.cache.second->onSelectDynamicAllocator(0, 2); + MNN_PRINT("Fix: %d - Total: %d, rate = %f\n", fixNumber, totalNumber, (float)fixNumber / (float)totalNumber); + return NO_ERROR; +} +ErrorCode Pipeline::_allocForTensor(int index, bool allocInput) { +#ifdef MNN_PIPELINE_DEBUG + int resizeNumber = 0; +#endif // Compute RefCount Begin for (auto& info : mInfo.second) { + if (info.type == Schedule::CONSTANT) { + continue; + } auto& buffer = info.executeBuffer; // MNN_PRINT("before resize, mInfo.second size:%lu, command size:%lu,op type:%s, op name:%s\n", mInfo.second.size(), buffer.command.size(), EnumNameOpType(info.op->type()), info.op->name()->c_str()); for (auto& iterP : buffer.command) { @@ -907,6 +955,9 @@ ErrorCode Pipeline::allocMemory(bool firstMalloc, bool forbidReplace) { } } for (auto& info : mInfo.second) { + if (info.type == Schedule::CONSTANT) { + continue; + } auto& buffer = info.executeBuffer; for (auto& iterP : buffer.command) { auto& iter = *iterP; @@ -919,11 +970,14 @@ ErrorCode Pipeline::allocMemory(bool firstMalloc, bool forbidReplace) { } } // Compute RefCount End - - // Alloc tensor + auto& mBackend = mInfo.first.cache.first; + auto& mBackupBackend = mInfo.first.cache.second; mBackend->onResizeBegin(); mBackupBackend->onResizeBegin(); for (auto& info : mInfo.second) { + if (info.type == Schedule::CONSTANT) { + continue; + } auto& buffer = info.executeBuffer; for (int cmdIndex=0; cmdIndex < buffer.command.size(); ++cmdIndex) { auto& iterP = buffer.command[cmdIndex]; @@ -934,12 +988,11 @@ ErrorCode Pipeline::allocMemory(bool firstMalloc, bool forbidReplace) { MNN_PRINT("%f, before Resize: %s - %d\n", memory, info.op->name()->c_str(), cmdIndex); } #endif - // Alloc for Tensors auto curBackend = iter.execution->backend(); - if (mAllocInput) { + if (allocInput) { for (auto t : iter.workInputs) { - auto allocRes = _allocTensor(t, curBackend, mOutputStatic); + auto allocRes = _allocTensor(t, curBackend, mOutputStatic, index); if (!allocRes) { return OUT_OF_MEMORY; } @@ -947,7 +1000,7 @@ ErrorCode Pipeline::allocMemory(bool firstMalloc, bool forbidReplace) { } { for (auto t : iter.workOutputs) { - auto res = _allocTensor(t, curBackend, mOutputStatic); + auto res = _allocTensor(t, curBackend, mOutputStatic, index); if (!res) { return OUT_OF_MEMORY; } @@ -958,19 +1011,24 @@ ErrorCode Pipeline::allocMemory(bool firstMalloc, bool forbidReplace) { MNN_PRINT("before Resize 2, calling: %s - %d \n", iter.info->name().c_str(), cmdIndex); } #endif - auto code = iter.execution->onResize(iter.workInputs, iter.workOutputs); - if (NO_ERROR != code) { + if (iter.group == index) { +#ifdef MNN_PIPELINE_DEBUG + resizeNumber++; +#endif + auto code = iter.execution->onResize(iter.workInputs, iter.workOutputs); + if (NO_ERROR != code) { #ifdef MNN_PIPELINE_DEBUG - MNN_ERROR("Pipeline Resize error: %d\n", code); + MNN_ERROR("Pipeline Resize error: %d\n", code); #endif - if (iter.info.get()) { - MNN_ERROR("Resize error for type = %s, name = %s \n", iter.info->type().c_str(), iter.info->name().c_str()); + if (iter.info.get()) { + MNN_ERROR("Resize error for type = %s, name = %s \n", iter.info->type().c_str(), iter.info->name().c_str()); + } + return code; } - return code; } // Free mid tensor for (auto t : iter.workInputs) { - _releaseTensor(t, mAllocInput); + _releaseTensor(t, allocInput, index); } } } @@ -978,6 +1036,9 @@ ErrorCode Pipeline::allocMemory(bool firstMalloc, bool forbidReplace) { for (auto& info : mInfo.second) { auto& buffer = info.executeBuffer; for (auto& c : buffer.command) { + if (c->group != index) { + continue; + } _recycleDynamicMemory(c.get()); } } @@ -985,9 +1046,108 @@ ErrorCode Pipeline::allocMemory(bool firstMalloc, bool forbidReplace) { if (code != NO_ERROR) { return code; } +#ifdef MNN_PIPELINE_DEBUG + MNN_PRINT("Resize %d op for index: %d\n", resizeNumber, index); +#endif code = mBackupBackend->onResizeEnd(); return code; } +ErrorCode Pipeline::allocMemory(bool firstMalloc, bool forbidReplace) { + // MNN_PRINT("allocMemory mtype:%d, cpubackendType:%d, cpuBackend runtime:%p\n", mBackend->type(), mBackupBackend->type(), mBackupBackend->getRuntime()); + if (!firstMalloc) { + // For session setNeedMalloc, if session's output is set as some input, It may cause error + // Dup des to avoid it + for (auto& info : mInfo.second) { + auto& buffer = info.executeBuffer; + for (const auto& infoP : buffer.command) { + auto& info = *infoP; + for (auto t : info.workOutputs) { + if (!TensorUtils::getDescribe(t)->isMutable) { + continue; + } + auto des = TensorUtils::getDescribe(t); + auto usage = des->usage; + if (TensorUtils::getDescribeOrigin(t)->mContent->count() > 1 && usage != Tensor::InsideDescribe::CONSTANT) { + TensorUtils::getDescribeOrigin(t)->mem = nullptr; + auto res = TensorUtils::getDescribeOrigin(t)->getBackend()->onAcquireBuffer(t, Backend::STATIC); + if (!res) { + return OUT_OF_MEMORY; + } + } + } + } + } + if (OpCommonUtils::supportDynamicInputMemory(mInfo.first.cache.first->type())) { + return NO_ERROR; + } + } + + /* Create Execution Begin */ + auto& mBackend = mInfo.first.cache.first; + auto& mBackupBackend = mInfo.first.cache.second; + mBackend->onClearBuffer(); + mBackupBackend->onClearBuffer(); + // Check If we need a lone time for init + if (mBackend->type() != MNN_FORWARD_CPU && mBackend->type() != MNN_FORWARD_CPU_EXTENSION && mTuneAttr.autoSetOpType) { + Runtime::OpInfo dstInfo; + int currentInitCount = 0; + std::vector initInfos; + for (auto& info : mInfo.second) { + if (info.type == Schedule::CONSTANT) { + continue; + } + auto& buffer = info.executeBuffer; + for (auto& iterP : buffer.command) { + auto& iter = *iterP; + dstInfo.initCostLong = false; + mRuntime->onMeasure(iter.inputs, iter.outputs, iter.op, dstInfo); + if (dstInfo.initCostLong) { + initInfos.emplace_back(info); + currentInitCount++; + break; + } + } + if (currentInitCount >= mTuneAttr.maxTuningNumber) { + break; + } + } + if (currentInitCount > 0) { + MNN_PRINT("Turn back to cpu\n"); + // Reset execution + for (auto& info : mInfo.second) { + info.executionCache.clear(); + for (auto& iterP : info.executeBuffer.command) { + iterP->execution = nullptr; + iterP->execution = nullptr; + _recycleDynamicMemory(iterP.get()); + } + } + if (!mRuntime->hasAsyncWork()) { + _pushTuningTask(std::move(initInfos)); + } + mBackend.reset(mCpuRuntime->onCreate(nullptr)); + } + } + { + auto code = _createExecutions(mInfo, mExternalFile, mExternalStorage); + if (NO_ERROR != code) { + return code; + } + } + /* Create Execution End */ + + _SetTensorBackend(mInfo, mAllocInput); + // Insert Wrap If needed + { + auto insertCode = _InsertCopy(mInfo, mCacheConstTensors, mWrapTensors, mAllocInput, forbidReplace); + if (NO_ERROR != insertCode) { + return insertCode; + } + } + /* Insert Wrap End*/ + + return _allocForTensor(0, mAllocInput); +} void Pipeline::_copyInputs() { for (auto& iter : mInfo.first.inputTensorCopyCache) { @@ -998,9 +1158,9 @@ void Pipeline::_copyInputs() { if (!std::get<3>(tensorCache)) { continue; } - auto curBackend = TensorUtils::getDescribe(std::get<0>(tensorCache))->getBackend(); + auto curBackend = TensorUtils::getDescribeOrigin(std::get<0>(tensorCache))->getBackend(); if (curBackend->type() == MNN_FORWARD_CPU) { - TensorUtils::getDescribe(iter.first)->getBackend()->onCopyBuffer(iter.first, std::get<0>(tensorCache)); + TensorUtils::getDescribeOrigin(iter.first)->getBackend()->onCopyBuffer(iter.first, std::get<0>(tensorCache)); } else { curBackend->onCopyBuffer(iter.first, std::get<0>(tensorCache)); } @@ -1013,42 +1173,33 @@ ErrorCode Pipeline::execute() { auto& mBackupBackend = mInfo.first.cache.second; mBackend->onExecuteBegin(); for (auto& info : mInfo.second) { + if (info.type == Schedule::CONSTANT) { + continue; + } auto& buffer = info.executeBuffer; -//#define LOG_VERPOSE -#ifdef LOG_VERPOSE - FUNC_PRINT_ALL(info.op->name()->c_str(), s); -#endif - for (auto& cmdP : buffer.command) { - auto& cmd = *cmdP; - auto code = cmd.execution->onExecute(cmd.workInputs, cmd.workOutputs); -// #define LOG_VERPOSE -#ifdef LOG_VERPOSE - auto dumpT = [](Tensor* t) { - auto size = TensorUtils::getRawSize(t); - size = size > 10 ? 10 : size; - if (t->getType() == halide_type_of()) { - for (int i=0; ihost()[i]); - } - } else { - for (int i=0; ihost()[i]); - } + for (int cmdIndex=0; cmdIndexname() != nullptr) { + std::string groupOfInput = "input group: ["; + for (int v=0; vgroup) + " "; } - MNN_PRINT("\n"); - }; - if (/* cmd.op->name() && cmd.op->name()->str() == "/embed/embed_/Gather_output_0"*/ - cmd.op->type() == OpType_Convolution) { - MNN_PRINT("%s Input begin:\n", EnumNameOpType(cmd.op->type())); - for (auto t : cmd.workInputs) { - dumpT(t); + groupOfInput += "]"; + std::string deviceOfInput = "input: ["; + for (int v=0; vdeviceId()) + " "; } - MNN_PRINT("%s Output begin:\n", EnumNameOpType(cmd.op->type())); - for (auto t : cmd.workOutputs) { - dumpT(t); + deviceOfInput += "]"; + std::string deviceOfOutput = "output: ["; + for (int v=0; vdeviceId()) + " "; } + deviceOfOutput += "]"; + MNN_PRINT("Group: %d, %s - %d, type=%s, inputs: %s, devices: %s - %s\n", info.group, info.op->name()->c_str(), cmdIndex, EnumNameOpType(cmd.op->type()), groupOfInput.c_str(), deviceOfInput.c_str(), deviceOfOutput.c_str()); } #endif + auto code = cmd.execution->onExecute(cmd.workInputs, cmd.workOutputs); if (NO_ERROR != code) { mBackend->onExecuteEnd(); return code; @@ -1065,6 +1216,9 @@ ErrorCode Pipeline::executeCallBack(const TensorCallBackWithInfo& before, const auto& mBackupBackend = mInfo.first.cache.second; mBackend->onExecuteBegin(); for (auto& info : mInfo.second) { + if (info.type == Schedule::CONSTANT) { + continue; + } auto& buffer = info.executeBuffer; for (int cmdIndex=0; cmdIndex < buffer.command.size(); ++cmdIndex) { auto cmdP = buffer.command[cmdIndex]; @@ -1077,7 +1231,7 @@ ErrorCode Pipeline::executeCallBack(const TensorCallBackWithInfo& before, const } continue; } - auto run = before(cmd.inputs, cmd.info.get()); + auto run = before(cmd.workInputs, cmd.info.get()); if (run) { auto code = cmd.execution->onExecute(cmd.workInputs, cmd.workOutputs); if (NO_ERROR != code) { @@ -1103,7 +1257,7 @@ Pipeline::~Pipeline() { backupbn->onClearBuffer(); mInfo.second.clear(); mCacheConstTensors.clear(); - mShapeFixConstCache.clear(); + mWrapTensors.clear(); } } // namespace MNN diff --git a/source/core/Pipeline.hpp b/source/core/Pipeline.hpp index 84b0fbae5..6fcaf142e 100644 --- a/source/core/Pipeline.hpp +++ b/source/core/Pipeline.hpp @@ -27,8 +27,11 @@ class Pipeline : public NonCopyable { bool autoSetOpType; int maxTuningNumber; }; - Pipeline(Schedule::PipelineInfo&& info, bool allocInput, bool outputStatic, const TuningAttr& tune, const Runtime* rt, const Runtime* cpuRt); + Pipeline(const std::string& externalFile, Schedule::PipelineInfo&& info, bool allocInput, bool outputStatic, const TuningAttr& tune, const Runtime* rt, const Runtime* cpuRt); ~Pipeline(); + ErrorCode fixResizeCache(); + void openResizeCheck(); + class UnitInfo : public OperatorInfo { public: UnitInfo() = default; @@ -60,6 +63,7 @@ class Pipeline : public NonCopyable { return mInfo.first.cache.first->type(); } private: + ErrorCode _allocForTensor(int index, bool allocInput); void _copyInputs(); void _pushTuningTask(std::vector&& initInfos); void _recycleDynamicMemory(Command* command); @@ -72,13 +76,15 @@ class Pipeline : public NonCopyable { // For gpu or other backend std::map> mCacheConstTensors; - std::map> mShapeFixConstCache; + std::map, std::shared_ptr> mWrapTensors; #ifndef MNN_BUILD_MINI GeometryComputer::Context mContext; Runtime::CompilerType mUseGeometry; #endif const Runtime* mRuntime; const Runtime* mCpuRuntime; + std::string mExternalFile; + std::vector> mExternalStorage; }; } // namespace MNN diff --git a/source/core/Schedule.cpp b/source/core/Schedule.cpp index b7a7bdca1..1c8cd0878 100644 --- a/source/core/Schedule.cpp +++ b/source/core/Schedule.cpp @@ -15,6 +15,7 @@ #include "core/Macro.h" #include "core/RuntimeFactory.hpp" #include "core/TensorUtils.hpp" +#include "core/FileLoader.hpp" #ifndef MNN_BUILD_MINI #include "shape/SizeComputer.hpp" #include "geometry/GeometryComputerUtils.hpp" @@ -26,6 +27,86 @@ using namespace std; //#define MNN_AUTO_CHECK_COST namespace MNN { +void Schedule::OpResizeCache::close(bool pass) { + mCanCache = false; + mInputInfos.clear(); + mPass = pass; +} +void Schedule::OpResizeCache::addContentIndex(int index) { + mNeedCompareContent.emplace_back(index); +} + +bool Schedule::OpResizeCache::match(const std::vector& inputs) { + if (!mCanCache) { + return mPass; + } + if (!mComputed) { + return false; + } + if (mInputInfos.size() != inputs.size()) { + return false; + } + for (int u=0; udimensionFormat) { + return false; + } + if (mInputInfos[u].type.code != inputs[u]->getType().code || mInputInfos[u].type.bits != inputs[u]->getType().bits) { + return false; + } + if (mInputInfos[u].dim.size() != inputs[u]->dimensions()) { + mCanCache = false; + return false; + } + for (int v=0; vlength(v)) { + mCanCache = false; + return false; + } + } + if (des->memoryType == Tensor::InsideDescribe::MEMORY_VIRTUAL && (des->stageMask & Tensor::InsideDescribe::COMPUTE_SHAPE_STAGE)) { + return false; + } + } + for (auto dim : mNeedCompareContent) { + auto t = inputs[dim]; + auto& s = mInputInfos[dim]; + if (0 != ::memcmp(s.buffer.data(), t->host(), s.buffer.size())) { + mCanCache = false; + return false; + } + } + return true; +} +void Schedule::OpResizeCache::open() { + mCanCache = true; +} + +void Schedule::OpResizeCache::insert(const std::vector& inputs) { + if (!mCanCache) { + return; + } + mComputed = true; + mInputInfos.resize(inputs.size()); + for (int u=0; ushape(); + mInputInfos[u].order = TensorUtils::getDescribe(inputs[u])->dimensionFormat; + mInputInfos[u].type = inputs[u]->getType(); + } + for (auto dim : mNeedCompareContent) { + const int limit = 10000; + auto t = inputs[dim]; + auto& s = mInputInfos[dim]; + auto size = t->usize(); + if (size > limit) { + close(); + return; + } + s.buffer.resize(size); + ::memcpy(s.buffer.data(), t->host(), size); + } +} + MNNForwardType Schedule::getApprociateType(const ScheduleConfig& config) { MNNForwardType type = config.type; @@ -213,7 +294,8 @@ bool Schedule::schedule(ScheduleInfo& scheduleInfo, const Net* net, const std::v defaultConfig.flags = 4; scheduleInfo.defaultBackend.reset(runtimeInfo.second->onCreate(&defaultConfig)); ErrorCode code = NO_ERROR; - initConstTensors(scheduleInfo.allTensors, net, scheduleInfo.defaultBackend.get(), code); + FileLoader loader(scheduleInfo.externalWeightPath.c_str()); + initConstTensors(scheduleInfo.allTensors, net, scheduleInfo.defaultBackend.get(), code, &loader); if (NO_ERROR != code) { MNN_ERROR("Schedule Const init errorcode = %d\n", code); return false; diff --git a/source/core/Schedule.hpp b/source/core/Schedule.hpp index ab04f3abd..476f37343 100644 --- a/source/core/Schedule.hpp +++ b/source/core/Schedule.hpp @@ -33,6 +33,28 @@ class MNN_PUBLIC Schedule { // Size can't be compute separately NOT_SEPERATE }; + class OpResizeCache { + public: + bool match(const std::vector& inputs); + void insert(const std::vector& inputs); + void close(bool pass = false); + void open(); + bool needComputeShape = true; + bool needExecuteConst = false; + void addContentIndex(int index); + private: + struct ShapeInfo { + int order; + std::vector dim; + halide_type_t type; + std::vector buffer; + }; + std::vector mInputInfos; + bool mComputed = false; + bool mCanCache = false; + bool mPass = false; + std::vector mNeedCompareContent; + }; /** pipeline info */ struct OpCacheInfo { /** op */ @@ -51,6 +73,7 @@ class MNN_PUBLIC Schedule { CommandBuffer executeBuffer; std::map> executionCache; + OpResizeCache computeCache; }; // Backend, Tensor, shape-dirty, content-dirty @@ -84,6 +107,8 @@ class MNN_PUBLIC Schedule { std::shared_ptr constReplaceBackend; /** size need input's content*/ bool needInputContentForShape = false; + /** external weight*/ + std::string externalWeightPath; }; /** diff --git a/source/core/Session.cpp b/source/core/Session.cpp index 5b1e8ac2e..9537bee77 100644 --- a/source/core/Session.cpp +++ b/source/core/Session.cpp @@ -59,7 +59,7 @@ Session::Session(Schedule::ScheduleInfo&& info, const ModeGroup& mode, RuntimeIn attr.autoSetOpType = mode.backendMode == Interpreter::Session_Backend_Auto; auto rt = mRuntime.first.find(iter.first.info.type)->second.get(); auto cpuRuntime = mRuntime.second; - std::shared_ptr newPipeline(new Pipeline(std::move(iter), mode.inputMode == Interpreter::Session_Input_Inside, mode.outputMode == Interpreter::Session_Output_User, attr, rt, cpuRuntime.get())); + std::shared_ptr newPipeline(new Pipeline(mInfo.externalWeightPath, std::move(iter), mode.inputMode == Interpreter::Session_Input_Inside, mode.outputMode == Interpreter::Session_Output_User, attr, rt, cpuRuntime.get())); mPipelines.emplace_back(std::move(newPipeline)); } mCallBackMode = mode.callBackMode; @@ -232,6 +232,22 @@ ErrorCode Session::resize() { #endif return NO_ERROR; } +void Session::openResizeCheck() { + for (auto& iter : mPipelines) { + iter->openResizeCheck(); + } +} + +ErrorCode Session::fixResizeCache() { + for (auto& iter : mPipelines) { + auto code = iter->fixResizeCache(); + if (NO_ERROR != code) { + return code; + } + } + return NO_ERROR; +} + bool Session::getInfo(Interpreter::SessionInfoCode code, void* ptr) const { switch (code) { case Interpreter::MEMORY: { @@ -290,7 +306,7 @@ bool Session::getInfo(Interpreter::SessionInfoCode code, void* ptr) const { } const Backend* Session::getBackEnd(const Tensor* tensor) const { - return TensorUtils::getDescribe(tensor)->getBackend(); + return TensorUtils::getDescribeOrigin(tensor)->getBackend(); } Tensor* Session::getInput(const char* name) const { @@ -388,6 +404,7 @@ Session* Session::clone(RuntimeInfo&& runtime, std::shared_ptrdefaultBackend; scheduleInfo.constReplaceBackend = sharedConst->constReplaceBackend; diff --git a/source/core/Session.hpp b/source/core/Session.hpp index bd14f542b..7a1ba8963 100644 --- a/source/core/Session.hpp +++ b/source/core/Session.hpp @@ -35,6 +35,7 @@ class MNN_PUBLIC Session { Interpreter::SessionMode codegenMode = Interpreter::Session_Codegen_Disable; int memoryAllocatorType = 0; int maxTuningNumber = MNN_DEFAULT_TUNING_NUMBER; + int winogradMemoryUsed = 3; }; Session(Schedule::ScheduleInfo&& info, const ModeGroup& mode, RuntimeInfo&& runtime); @@ -59,6 +60,8 @@ class MNN_PUBLIC Session { bool getInfo(Interpreter::SessionInfoCode code, void* ptr) const; + void openResizeCheck(); + ErrorCode fixResizeCache(); public: /** * @brief resize tensors and buffers responding to input changes. diff --git a/source/core/Tensor.cpp b/source/core/Tensor.cpp index e2c34014a..5bf50a0b2 100644 --- a/source/core/Tensor.cpp +++ b/source/core/Tensor.cpp @@ -27,6 +27,7 @@ Tensor::Tensor(int dimSize, DimensionType type) { mBuffer.device = 0; mBuffer.host = nullptr; mBuffer.dim = &nativeDescribe->dims[0]; + mBuffer.flags = 0; switch (type) { case CAFFE: @@ -55,6 +56,7 @@ Tensor::Tensor(const Tensor* tensor, DimensionType type, bool allocMemory) { mBuffer.device = 0; mBuffer.host = nullptr; mBuffer.dim = &nativeDescribe->dims[0]; + mBuffer.flags = 0; for (int i = 0; i < buffer.dimensions; ++i) { mBuffer.dim[i].extent = buffer.dim[i].extent; } @@ -115,11 +117,14 @@ Tensor::Tensor(const Tensor* tensor, DimensionType type, bool allocMemory) { Tensor::Tensor(bool deepCopy, const Tensor* tensor) { mDescribe = new InsideDescribe; mDescribe->mContent = tensor->mDescribe->mContent; + mDescribe->setBackend(tensor->mDescribe->getBackend()); + mDescribe->mem = tensor->mDescribe->mem; mBuffer.dim = TensorUtils::getDescribe(tensor)->dims; mBuffer.type = tensor->getType(); mBuffer.device = tensor->deviceId(); mBuffer.host = tensor->buffer().host; mBuffer.dimensions = tensor->buffer().dimensions; + mBuffer.flags = tensor->buffer().flags; } Tensor::~Tensor() { @@ -163,8 +168,7 @@ Tensor* Tensor::clone(const Tensor* src, bool deepCopy) { bool Tensor::copyFromHostTensor(const Tensor* hostTensor) { - auto nativeDescribe = mDescribe->mContent.get(); - auto bn = nativeDescribe->getBackend(); + auto bn = mDescribe->getBackend(); if (nullptr == bn) { return false; } @@ -173,8 +177,7 @@ bool Tensor::copyFromHostTensor(const Tensor* hostTensor) { } bool Tensor::copyToHostTensor(Tensor* hostTensor) const { - auto nativeDescribe = mDescribe->mContent.get(); - auto bn = nativeDescribe->getBackend(); + auto bn = mDescribe->getBackend(); if (nullptr == bn) { return false; } @@ -410,7 +413,7 @@ int Tensor::size() const { } void* Tensor::map(MapType mtype, DimensionType dtype) { - auto nativeDescribe = mDescribe->mContent.get(); + auto nativeDescribe = mDescribe; auto bn = nativeDescribe->getBackend(); if (nullptr == bn) { return mBuffer.host; @@ -438,7 +441,7 @@ void* Tensor::map(MapType mtype, DimensionType dtype) { } void Tensor::unmap(MapType mtype, DimensionType dtype, void *mapPtr) { - auto nativeDescribe = mDescribe->mContent.get(); + auto nativeDescribe = mDescribe; auto bn = nativeDescribe->getBackend(); if (nullptr == bn) { return; @@ -464,7 +467,7 @@ void Tensor::unmap(MapType mtype, DimensionType dtype, void *mapPtr) { } } int Tensor::wait(MapType mtype, bool finish) { - auto nativeDescribe = mDescribe->mContent.get(); + auto nativeDescribe = mDescribe; auto bn = nativeDescribe->getBackend(); if (nullptr == bn) { return 0; @@ -485,7 +488,7 @@ void Tensor::destroy(Tensor* tensor) { } } bool Tensor::getDeviceInfo(void* dst, int type) const { - auto nativeDescribe = mDescribe->mContent.get(); + auto nativeDescribe = mDescribe; if (nullptr == nativeDescribe->getBackend()) { return false; } diff --git a/source/core/TensorUtils.cpp b/source/core/TensorUtils.cpp index 104a95561..3a0823a4a 100644 --- a/source/core/TensorUtils.cpp +++ b/source/core/TensorUtils.cpp @@ -102,7 +102,11 @@ void TensorUtils::copyShape(const Tensor* source, Tensor* dest, bool copyFormat, getDescribe(dest)->dimensionFormat = getDescribe(source)->dimensionFormat; } if (copyRef) { - getDescribe(dest)->regions = getDescribe(source)->regions; + auto dstDes = getDescribe(dest); + auto srcDes = getDescribe(source); + dstDes->regions = srcDes->regions; + dstDes->quantAttr = srcDes->quantAttr; + dstDes->type = srcDes->type; dest->buffer().type = source->getType(); } adjustTensorForCompability(dest); @@ -137,7 +141,7 @@ void TensorUtils::setLinearLayout(Tensor* tensor) { static const Tensor* createHostPlanar(const Tensor* source) { // check auto bnType = MNN_FORWARD_CPU; - auto tensorBackend = TensorUtils::getDescribe(source)->getBackend(); + auto tensorBackend = TensorUtils::getDescribeOrigin(source)->getBackend(); if (tensorBackend) { bnType = tensorBackend->type(); } @@ -457,12 +461,15 @@ static inline bool expandStrideSize(int* src, int* dst, int* size, int& num, int bool TensorUtils::refTensorContent(Tensor* dst, const Tensor* src) { auto des = TensorUtils::getDescribe(dst); auto srcDes = TensorUtils::getDescribe(src); + auto desO = TensorUtils::getDescribeOrigin(dst); + auto srcDesO = TensorUtils::getDescribeOrigin(src); bool needMalloc = dst->buffer().host != src->buffer().host || dst->buffer().device != src->buffer().device || des->extra.offset != srcDes->extra.offset; - des->setBackend(srcDes->getBackend()); + desO->setBackend(srcDesO->getBackend()); dst->buffer().host = src->buffer().host; dst->buffer().device = src->buffer().device; dst->buffer().flags = src->buffer().flags; des->extra.offset = srcDes->extra.offset; + des->group = -1; return needMalloc; } @@ -750,7 +757,7 @@ int TensorUtils::getTensorChannelPack(const Tensor* tensor) { void TensorUtils::setTensorChannelPack(const Tensor* tensor, int pack) { auto srcDes = TensorUtils::getDescribe(tensor); - srcDes->channel_pack_num = pack; + srcDes->channel_pack_num = srcDes->support_pack16 ? pack : 4; } void TensorUtils::setTensorSupportPack(const Tensor* tensor, bool flag) { diff --git a/source/core/TensorUtils.hpp b/source/core/TensorUtils.hpp index e17b9b50e..61d15776a 100644 --- a/source/core/TensorUtils.hpp +++ b/source/core/TensorUtils.hpp @@ -77,7 +77,9 @@ struct Tensor::InsideDescribe { // For Mask enum StageInfo { GEOMETRY_STAGE = 1, - CONVERTED_STAGE = 1 << 4 + CONVERTED_STAGE = 1 << 1, + COMPUTE_SHAPE_STAGE = 1 << 2, + COMPUTE_CONTENT_STAGE = 1 << 3, }; /** extra tensor info container */ struct NativeInsideDescribe : public RefCount { @@ -92,6 +94,7 @@ struct Tensor::InsideDescribe { void (*handleFreeFunction)(void*); } extra; MemoryType memoryType = MEMORY_BACKEND; + std::weak_ptr rasterCommand; /** for DEVICE tensor only. */ int useCount = 0; Usage usage = NORMAL; @@ -103,25 +106,26 @@ struct Tensor::InsideDescribe { std::shared_ptr quantAttr; // Only valid when quantAttr is not nullptr DataType type = DataType_DT_FLOAT; - AutoRelease mem; bool isMutable = true; int index = -1; + int group = 0; int channel_pack_num = 4; bool support_pack16 = true; pad mPads; // For isMutable = false Tensor , determine whether the content can be convert to main backend uint32_t stageMask = 0; - inline Backend* getBackend() const { - return backend; - } - inline void setBackend(Backend* bn) { - backend = bn; - } - private: - /** for DEVICE tensor only. backend used to manage tensor's device memory. */ - Backend* backend = nullptr; }; SharedPtr mContent; + SharedPtr mem; + inline Backend* getBackend() const { + return backend; + } + inline void setBackend(Backend* bn) { + backend = bn; + } +private: + /** for DEVICE tensor only. backend used to manage tensor's device memory. */ + Backend* backend = nullptr; }; typedef Tensor::InsideDescribe::Usage TensorUsage; diff --git a/source/core/WrapExecution.cpp b/source/core/WrapExecution.cpp index 3f615fb6c..c9b9f94ea 100644 --- a/source/core/WrapExecution.cpp +++ b/source/core/WrapExecution.cpp @@ -22,7 +22,7 @@ bool WrapExecution::needWrap(const Tensor* input, Backend* curBackend) { if (curType == MNN_FORWARD_NN) { return false; } - auto des = TensorUtils::getDescribe(input); + auto des = TensorUtils::getDescribeOrigin(input); auto bn = des->getBackend(); MNNForwardType type = MNN_FORWARD_CPU; int pack = 4; @@ -48,7 +48,7 @@ bool WrapExecution::needWrap(const Tensor* input, Backend* curBackend) { curPack = dstCore->pack; } if (curBytes == bytes) { - if (curPack == pack || des->dimensionFormat != MNN_DATA_FORMAT_NC4HW4) { + if (curPack == pack || des->mContent->dimensionFormat != MNN_DATA_FORMAT_NC4HW4) { return false; } } @@ -65,8 +65,8 @@ class WrapCopyExecution : public Execution { // Do nothing } virtual ErrorCode onResize(const std::vector &inputs, const std::vector &outputs) override { - auto inputBn = TensorUtils::getDescribe(inputs[0])->getBackend(); - auto outputBn = TensorUtils::getDescribe(outputs[0])->getBackend(); + auto inputBn = TensorUtils::getDescribeOrigin(inputs[0])->getBackend(); + auto outputBn = TensorUtils::getDescribeOrigin(outputs[0])->getBackend(); auto inputForwardtype = MNN_FORWARD_CPU; auto outputForwardtype = MNN_FORWARD_CPU; if (nullptr != inputBn) { @@ -88,8 +88,8 @@ class WrapCopyExecution : public Execution { return NO_ERROR; } virtual ErrorCode onExecute(const std::vector &inputs, const std::vector &outputs) override { - auto inputBn = TensorUtils::getDescribe(inputs[0])->getBackend(); - auto outputBn = TensorUtils::getDescribe(outputs[0])->getBackend(); + auto inputBn = TensorUtils::getDescribeOrigin(inputs[0])->getBackend(); + auto outputBn = TensorUtils::getDescribeOrigin(outputs[0])->getBackend(); auto outputForwardtype = MNN_FORWARD_CPU; if (nullptr != mMidCPUTensor.get()) { inputBn->onCopyBuffer(inputs[0], mMidCPUTensor.get()); @@ -113,29 +113,27 @@ class WrapCopyExecution : public Execution { }; std::shared_ptr WrapExecution::makeCopyTensor(Tensor* t, Backend* targetBackend) { std::shared_ptr wrapTensor(new Tensor); - TensorUtils::copyShape(t, wrapTensor.get(), true); - wrapTensor->buffer().type = t->buffer().type; - TensorUtils::adjustTensorForCompability(wrapTensor.get()); - TensorUtils::getDescribe(wrapTensor.get())->quantAttr = TensorUtils::getDescribe(t)->quantAttr; - TensorUtils::getDescribe(wrapTensor.get())->type = TensorUtils::getDescribe(t)->type; - TensorUtils::getDescribe(wrapTensor.get())->setBackend(targetBackend); + TensorUtils::copyShape(t, wrapTensor.get(), true, true); + TensorUtils::getDescribeOrigin(wrapTensor.get())->setBackend(targetBackend); return wrapTensor; } -std::pair> WrapExecution::makeCopyExecution(Backend* backend, Backend* backupBackend, Tensor* tensor, std::map, std::shared_ptr>& cache, bool useCache) { - if (useCache) { - auto iter = cache.find(std::make_pair(tensor, backend)); - if (iter != cache.end()) { - return std::make_pair((Execution*)nullptr, iter->second); - } +Execution* WrapExecution::makeCopyExecution(Backend* backend, Backend* backupBackend) { + return new WrapCopyExecution(backend, backupBackend); +} + +bool WrapExecution::allocAndCopy(Backend* curBackend, const Tensor* input, Tensor* output) { + auto tempRes = curBackend->onAcquireBuffer(output, Backend::STATIC); + if (!tempRes) { + return false; } - auto t = tensor; - std::shared_ptr wrapTensor = makeCopyTensor(tensor, backend); - if (useCache) { - cache.insert(std::make_pair(std::make_pair(t, backend), wrapTensor)); + TensorUtils::getDescribeOrigin(output)->setBackend(curBackend); + if (curBackend->type() == MNN_FORWARD_CPU) { + input->copyToHostTensor(output); + } else { + output->copyFromHostTensor(input); } - Execution* copyExe = new WrapCopyExecution(backend, backupBackend); - return std::make_pair(copyExe, wrapTensor); + return true; } Tensor* WrapExecution::copyConstCache(Tensor* t, Backend* curBackend, std::map>& cache, bool forbidReplace) { @@ -150,12 +148,10 @@ Tensor* WrapExecution::copyConstCache(Tensor* t, Backend* curBackend, std::map wrapTensor = makeCopyTensor(t, curBackend); auto outDes = TensorUtils::getDescribe(wrapTensor.get()); outDes->usage = des->usage; - auto tempRes = curBackend->onAcquireBuffer(wrapTensor.get(), Backend::STATIC); + auto tempRes = allocAndCopy(curBackend, t, wrapTensor.get()); if (!tempRes) { return nullptr; } - outDes->setBackend(curBackend); - curBackend->onCopyBuffer(t, wrapTensor.get()); bool canReplace = !des->isMutable; if (des->stageMask & Tensor::InsideDescribe::GEOMETRY_STAGE) { canReplace = false; @@ -171,10 +167,7 @@ Tensor* WrapExecution::copyConstCache(Tensor* t, Backend* curBackend, std::mapstageMask |= Tensor::InsideDescribe::CONVERTED_STAGE; - TensorUtils::getDescribeOrigin(t)->mContent = TensorUtils::getDescribeOrigin(wrapTensor.get())->mContent; - t->buffer().host = wrapTensor->buffer().host; - t->buffer().device = wrapTensor->buffer().device; - t->buffer().dim = TensorUtils::getDescribe(wrapTensor.get())->dims; + copyReplaceTensor(wrapTensor.get(), t); return t; } else { cache.insert(std::make_pair(t, wrapTensor)); @@ -184,5 +177,14 @@ Tensor* WrapExecution::copyConstCache(Tensor* t, Backend* curBackend, std::mapmContent = TensorUtils::getDescribeOrigin(wrapTensor)->mContent; + TensorUtils::getDescribeOrigin(t)->mem = TensorUtils::getDescribeOrigin(wrapTensor)->mem; + TensorUtils::getDescribeOrigin(t)->setBackend( TensorUtils::getDescribeOrigin(wrapTensor)->getBackend()); + t->buffer().host = wrapTensor->buffer().host; + t->buffer().device = wrapTensor->buffer().device; + t->buffer().dim = TensorUtils::getDescribe(wrapTensor)->dims; +} + } // namespace MNN diff --git a/source/core/WrapExecution.hpp b/source/core/WrapExecution.hpp index f197f1b82..2b90eaefa 100644 --- a/source/core/WrapExecution.hpp +++ b/source/core/WrapExecution.hpp @@ -22,10 +22,12 @@ namespace MNN { /** execution wrapper. hiding cross-backend tensor converting. */ class MNN_PUBLIC WrapExecution { public: + static void copyReplaceTensor(const Tensor* input, Tensor* output); static bool needWrap(const Tensor* input, Backend* current); + static bool allocAndCopy(Backend* curBackend, const Tensor* input, Tensor* output); static Tensor* copyConstCache(Tensor* tensor, Backend* curBackend, std::map>& cache, bool forbidReplace); static std::shared_ptr makeCopyTensor(Tensor* tensor, Backend* targetBackend); - static std::pair> makeCopyExecution(Backend* backend, Backend* backupBackend, Tensor* tensor, std::map, std::shared_ptr>& cache, bool useCache); + static Execution* makeCopyExecution(Backend* backend, Backend* backupBackend); }; diff --git a/source/cv/ImageProcess.cpp b/source/cv/ImageProcess.cpp index 4e090a58b..7d57a7200 100644 --- a/source/cv/ImageProcess.cpp +++ b/source/cv/ImageProcess.cpp @@ -128,7 +128,7 @@ ErrorCode ImageProcess::convert(const uint8_t* source, int iw, int ih, int strid MNN_ERROR("null dest or source for image process\n"); return INPUT_DATA_ERROR; } - if (TensorUtils::getDescribe(dest)->getBackend() == nullptr && destOrigin->buffer().host == nullptr) { + if (TensorUtils::getDescribeOrigin(dest)->getBackend() == nullptr && destOrigin->buffer().host == nullptr) { MNN_ERROR("Invalid Tensor, the session may not be ready\n"); return INPUT_DATA_ERROR; } @@ -137,7 +137,7 @@ ErrorCode ImageProcess::convert(const uint8_t* source, int iw, int ih, int strid auto oh = dest->height(); auto bpp = dest->channel(); auto dimensionFormat = TensorUtils::getDescribe(dest)->dimensionFormat; - auto tensorBn = TensorUtils::getDescribe(dest)->getBackend(); + auto tensorBn = TensorUtils::getDescribeOrigin(dest)->getBackend(); auto bnType = MNN_FORWARD_CPU; if(tensorBn){ bnType = tensorBn->type(); diff --git a/source/geometry/GeometryBatchMatMul.cpp b/source/geometry/GeometryBatchMatMul.cpp index e8b504a0e..51d866400 100644 --- a/source/geometry/GeometryBatchMatMul.cpp +++ b/source/geometry/GeometryBatchMatMul.cpp @@ -225,7 +225,7 @@ class GeometryBatchMatMul : public GeometryComputer { if (output->dimensions() == 2) { // Use normal MatMul - SharedPtr cmd = new Command; + std::shared_ptr cmd(new Command); cmd->op = op; if (bias == nullptr) { cmd->inputs = {input0, input1}; diff --git a/source/geometry/GeometryBinary.cpp b/source/geometry/GeometryBinary.cpp index f610e585a..81d8b0869 100644 --- a/source/geometry/GeometryBinary.cpp +++ b/source/geometry/GeometryBinary.cpp @@ -101,7 +101,7 @@ class GeometryBinary : public GeometryComputer { //MNN_PRINT("On compute geometry: %d - %d - %d\n", inputL0, inputL1, outputSize); if (1 == inputL0 || 1 == inputL1) { // Can directly compute - SharedPtr cmdP(new Command); + std::shared_ptr cmdP(new Command); auto& cmd = *cmdP; cmd.op = op; cmd.inputs = {input0, input1}; @@ -227,7 +227,7 @@ class GeometryBinary : public GeometryComputer { input1 = newTensor.get(); res.extras.emplace_back(newTensor); } - SharedPtr cmdP(new Command); + std::shared_ptr cmdP(new Command); auto& cmd = *cmdP; cmd.op = op; cmd.inputs = {input0, input1}; diff --git a/source/geometry/GeometryComputer.cpp b/source/geometry/GeometryComputer.cpp index 228c25d79..dae9f9e56 100644 --- a/source/geometry/GeometryComputer.cpp +++ b/source/geometry/GeometryComputer.cpp @@ -30,13 +30,7 @@ GeometryComputer::Context::Context(std::shared_ptr allocBackend, MNNFor mForwardType = type; mPrecision = precision; } -void GeometryComputer::Context::pushCache(const CommandBuffer& buffer) { - for (auto cmd : buffer.command) { - if (cmd->op->type() == OpType_Raster) { - mRasterCmdCache.emplace_back(cmd); - } - } -} + void GeometryComputer::Context::clear() { mTempConstTensors.clear(); } @@ -56,7 +50,7 @@ std::shared_ptr GeometryComputer::Context::allocConst(const Op* key, con if (!res) { return nullptr; } - TensorUtils::getDescribe(tensor.get())->setBackend(mBackend.get()); + TensorUtils::getDescribeOrigin(tensor.get())->setBackend(mBackend.get()); auto iter = mConstTensors.find(key); if (iter != mConstTensors.end()) { iter->second.emplace_back(tensor); @@ -72,7 +66,7 @@ bool GeometryComputer::Context::allocTensor(Tensor* tensor) { return false; } TensorUtils::getDescribe(tensor)->usage = Tensor::InsideDescribe::CONSTANT; - TensorUtils::getDescribe(tensor)->setBackend(mBackend.get()); + TensorUtils::getDescribeOrigin(tensor)->setBackend(mBackend.get()); return true; } @@ -86,20 +80,22 @@ inline bool _hasZeroDim(const Tensor* t) { return false; } +static bool _virtualMemory(Tensor::InsideDescribe::NativeInsideDescribe* des) { + return des->memoryType == Tensor::InsideDescribe::MEMORY_VIRTUAL && nullptr == des->rasterCommand.lock().get(); +} void GeometryComputer::Context::getRasterCacheCreateRecursive(Tensor* src, CommandBuffer& cmd) { auto srcDes = TensorUtils::getDescribe(src); - if (srcDes->memoryType != Tensor::InsideDescribe::MEMORY_VIRTUAL) { + if (!_virtualMemory(srcDes)) { return; } - if (_hasZeroDim(src)) { return; } for (auto& input : srcDes->regions) { MNN_ASSERT(input.origin != src); auto inputDes = TensorUtils::getDescribe(input.origin); - while (inputDes->memoryType == Tensor::InsideDescribe::MEMORY_VIRTUAL) { + while (_virtualMemory(inputDes)) { if (1 != inputDes->regions.size()) { break; } @@ -115,26 +111,19 @@ void GeometryComputer::Context::getRasterCacheCreateRecursive(Tensor* src, Comma } void GeometryComputer::Context::getRasterCacheCreate(Tensor* src, CommandBuffer& cmdBuffer) { auto srcDes = TensorUtils::getDescribe(src); - if (srcDes->memoryType != Tensor::InsideDescribe::MEMORY_VIRTUAL) { - return; - } - srcDes->memoryType = Tensor::InsideDescribe::MEMORY_BACKEND; - if (mRasterCmdCache.empty()) { - SharedPtr cmdP(new Command); - auto& cmd = *cmdP; - cmd.op = flatbuffers::GetRoot(mRasterOp->buffer()); - cmd.buffer = mRasterOp; - cmd.outputs = {src}; - TensorUtils::setRasterInputs(cmdP.get()); - cmdBuffer.command.emplace_back(std::move(cmdP)); + if (!_virtualMemory(srcDes)) { return; } - auto iter = mRasterCmdCache.begin() + ((int)mRasterCmdCache.size() - 1); - auto cmdP = *iter; - mRasterCmdCache.erase(iter); - cmdP->outputs[0] = src; + std::shared_ptr cmdP(new Command); + auto& cmd = *cmdP; + cmd.op = flatbuffers::GetRoot(mRasterOp->buffer()); + cmd.buffer = mRasterOp; + cmd.outputs = {src}; TensorUtils::setRasterInputs(cmdP.get()); + srcDes->rasterCommand = std::weak_ptr(cmdP); cmdBuffer.command.emplace_back(std::move(cmdP)); +// srcDes->memoryType = Tensor::InsideDescribe::MEMORY_BACKEND; + return; } bool DefaultGeometryComputer::onRecompute(const Op* op, const std::vector& inputs, const std::vector& outputs, @@ -150,7 +139,7 @@ bool DefaultGeometryComputer::onCompute(const Op* op, const std::vector CommandBuffer& res) const { auto inputs = originInputs; // Last Command - SharedPtr cmdP(new Command); + std::shared_ptr cmdP(new Command); auto& cmd = *cmdP; cmd.op = op; cmd.inputs = std::move(inputs); diff --git a/source/geometry/GeometryComputer.hpp b/source/geometry/GeometryComputer.hpp index be1165a96..f603d361c 100644 --- a/source/geometry/GeometryComputer.hpp +++ b/source/geometry/GeometryComputer.hpp @@ -41,7 +41,6 @@ class GeometryComputer { inline BackendConfig::PrecisionMode precisionType() const { return mPrecision; } - void pushCache(const CommandBuffer& buffer); std::shared_ptr mRasterOp; private: void getRasterCacheCreate(Tensor* src, CommandBuffer& cmd); @@ -51,7 +50,6 @@ class GeometryComputer { std::shared_ptr mBackend; MNNForwardType mForwardType; BackendConfig::PrecisionMode mPrecision; - std::vector> mRasterCmdCache; }; static void init(); MNN_PUBLIC static const GeometryComputer* search(int opType, Runtime::CompilerType compType); diff --git a/source/geometry/GeometryComputerUtils.cpp b/source/geometry/GeometryComputerUtils.cpp index 2fb49f40f..a9377df7d 100644 --- a/source/geometry/GeometryComputerUtils.cpp +++ b/source/geometry/GeometryComputerUtils.cpp @@ -11,7 +11,7 @@ #include "core/RuntimeFactory.hpp" #include "shape/SizeComputer.hpp" #include "core/AutoStorage.h" - +#include "core/FileLoader.hpp" #ifdef MNN_BUILD_CODEGEN #include "OpFuse.hpp" #endif @@ -86,11 +86,15 @@ int GeometryComputerUtils::buildConstantTensors(std::vectorstageMask |= MNN::Tensor::InsideDescribe::StageInfo::GEOMETRY_STAGE; - if (TensorUtils::getDescribe(info.inputs[index])->usage != Tensor::InsideDescribe::CONSTANT) { + auto des = TensorUtils::getDescribe(info.inputs[index]); + des->stageMask |= MNN::Tensor::InsideDescribe::StageInfo::GEOMETRY_STAGE; + if (des->usage != Tensor::InsideDescribe::CONSTANT) { breakIndex = infoIndex; TensorUtils::getDescribe(info.inputs[index])->usage = Tensor::InsideDescribe::CONSTANT; } + if (des->isMutable) { + info.computeCache.addContentIndex(index); + } } } } @@ -136,6 +140,7 @@ int GeometryComputerUtils::buildConstantTensors(std::vector& infos, GeometryComputer::Context& geoContext, std::shared_ptr backupBackend, @@ -150,29 +155,35 @@ ErrorCode GeometryComputerUtils::shapeComputeAndGeometryTransform( auto& cmdBufferVir = info.executeBuffer; auto& tempBuffer = info.cacheBuffer; // TODO: Optimize - cmdBufferVir.command.clear(); - cmdBufferVir.extras.clear(); for (auto t : info.outputs) { if (!TensorUtils::getDescribe(t)->isMutable) { continue; } - auto usage = TensorUtils::getDescribe(t)->usage; - auto type = TensorUtils::getDescribe(t)->memoryType; + auto des = TensorUtils::getDescribe(t); + auto usage = des->usage; + auto type = des->memoryType; MNN_ASSERT(type != Tensor::InsideDescribe::MEMORY_OUTSIDE); MNN_ASSERT(type != Tensor::InsideDescribe::MEMORY_HOST); if (TensorUtils::getDescribeOrigin(t)->mContent->count() > 1) { TensorUtils::getDescribeOrigin(t)->mContent = new Tensor::InsideDescribe::NativeInsideDescribe; t->buffer().dim = TensorUtils::getDescribe(t)->dims; + TensorUtils::getDescribeOrigin(t)->setBackend(nullptr); + TensorUtils::getDescribeOrigin(t)->mem = nullptr; TensorUtils::getDescribe(t)->usage = usage; - } else { + info.computeCache.close(); + } else if (des->group == 0) { if (info.type != Schedule::CONSTANT && usage != Tensor::InsideDescribe::TRAINABLE) { - TensorUtils::getDescribeOrigin(t)->mContent->setBackend(nullptr); + TensorUtils::getDescribeOrigin(t)->setBackend(nullptr); // TODO: If output is static and length larger than new size, don't clear mem - TensorUtils::getDescribeOrigin(t)->mContent->mem.reset(nullptr); + TensorUtils::getDescribeOrigin(t)->mem = nullptr; } } } - if (!skipShapeCompute) { + for (auto t : info.outputs) { + TensorUtils::getDescribe(t)->stageMask &= (~Tensor::InsideDescribe::StageInfo::COMPUTE_SHAPE_STAGE); + } + bool needCompute = !info.computeCache.match(info.inputs); + if ((!skipShapeCompute) && needCompute) { auto res = SizeComputer::computeOutputSize(info.op, info.inputs, info.outputs); if (!res) { if (info.op->name() != nullptr) { @@ -194,12 +205,26 @@ ErrorCode GeometryComputerUtils::shapeComputeAndGeometryTransform( for (auto t: info.inputs) { TensorUtils::adjustTensorForCompability(t); } - } - - if (info.type == Schedule::CONSTANT) { - if (_hasZeroShapeOutput(info)) { - continue; + info.computeCache.insert(info.inputs); + for (auto t : info.outputs) { + TensorUtils::getDescribe(t)->rasterCommand.reset(); + TensorUtils::getDescribe(t)->stageMask |= Tensor::InsideDescribe::StageInfo::COMPUTE_SHAPE_STAGE; + // The content may be computed by geometry computer, which will not make execution + TensorUtils::getDescribe(t)->stageMask &= (~Tensor::InsideDescribe::StageInfo::COMPUTE_CONTENT_STAGE); } + } + info.computeCache.needComputeShape = needCompute; + if (info.type != Schedule::CONSTANT) { + continue; + } + if (_hasZeroShapeOutput(info)) { + continue; + } + // Skip geometry compute if no-needCompute + if (needCompute) { + cmdBufferVir.command.clear(); + cmdBufferVir.extras.clear(); + ctx.clear(); auto geo = GeometryComputer::search(info.op->type(), Runtime::Compiler_Loop); { @@ -217,11 +242,16 @@ ErrorCode GeometryComputerUtils::shapeComputeAndGeometryTransform( GeometryComputerUtils::makeRaster(tempBuffer, cmdBufferVir, ctx); for (auto t : info.outputs) { ctx.getRasterCacheCreateRecursive(t, cmdBufferVir); + if (Tensor::InsideDescribe::MEMORY_VIRTUAL == TensorUtils::getDescribe(t)->memoryType) { + TensorUtils::getDescribe(t)->memoryType = Tensor::InsideDescribe::MEMORY_BACKEND; + } } for (auto& cp : cmdBufferVir.command) { auto& c = *cp; + std::shared_ptr tmpStorge; if (nullptr == c.execution) { - c.execution.reset(backupBackend->onCreate(c.inputs, c.outputs, c.op)); + auto exe = OpCommonUtils::createExecutionWithExternal(backupBackend.get(), c.inputs, c.outputs, c.op, external, tmpStorge); + c.execution.reset(exe); } auto exe = c.execution; if (nullptr == exe.get()) { @@ -229,7 +259,7 @@ ErrorCode GeometryComputerUtils::shapeComputeAndGeometryTransform( return NO_EXECUTION; } for (auto t : c.outputs) { - auto des = TensorUtils::getDescribe(t); + auto des = TensorUtils::getDescribeOrigin(t); TensorUtils::setLinearLayout(t); auto res = backupBackend->onAcquireBuffer(t, Backend::STATIC); if (!res) { @@ -246,20 +276,59 @@ ErrorCode GeometryComputerUtils::shapeComputeAndGeometryTransform( if (NO_ERROR != code) { return NOT_SUPPORT; } - code = exe->onExecute(c.inputs, c.outputs); + } + } + for (auto& cp : cmdBufferVir.command) { + auto& c = *cp; + bool dirty = needCompute || c.op->type() == OpType_RandomNormal || c.op->type() == OpType_RandomUniform; + if (!dirty) { + for (auto t : c.inputs) { + auto des = TensorUtils::getDescribe(t); + if (!des->isMutable) { + continue; + } + if (des->group < 0) { + // From User Input, group = -1 + dirty = true; + break; + } + if ((des->stageMask & Tensor::InsideDescribe::StageInfo::COMPUTE_CONTENT_STAGE) == 0) { + dirty = true; + break; + } + } + } + info.computeCache.needExecuteConst = dirty; + if (dirty) { + auto code = cp->execution->onExecute(c.inputs, c.outputs); if (NO_ERROR != code) { return NOT_SUPPORT; } - + for (auto t : c.outputs) { + TensorUtils::getDescribe(t)->stageMask &= (~Tensor::InsideDescribe::StageInfo::COMPUTE_CONTENT_STAGE); + } + } + } + } + for (int i=0; iisMutable) || des->group) { + continue; + } + des->stageMask |= Tensor::InsideDescribe::StageInfo::COMPUTE_CONTENT_STAGE; } - // Clear const command - ctx.pushCache(cmdBufferVir); - cmdBufferVir.command.clear(); - cmdBufferVir.extras.clear(); } - - } + /** Size Compute and compute Const End */ /** Geometry Transform */ @@ -271,6 +340,11 @@ ErrorCode GeometryComputerUtils::shapeComputeAndGeometryTransform( if (info.type == Schedule::CONSTANT) { continue; } + if ((!info.computeCache.needComputeShape) && (!tempBuffer.hasWrap)) { + continue; + } + cmdBufferReal.command.clear(); + cmdBufferReal.extras.clear(); if (_hasZeroShapeOutput(info)) { continue; } @@ -290,11 +364,15 @@ ErrorCode GeometryComputerUtils::shapeComputeAndGeometryTransform( } tempBuffer.hasWrap = false; GeometryComputerUtils::makeRaster(tempBuffer, cmdBufferReal, geoContext); - for (auto t : info.outputs) { + for (int v=0; vusage == Tensor::InsideDescribe::OUTPUT || des->usage == Tensor::InsideDescribe::TRAINABLE) { // For output and trainable value, must directly compute the tensor geoContext.getRasterCacheCreateRecursive(t, cmdBufferReal); + if (des->memoryType == Tensor::InsideDescribe::MEMORY_VIRTUAL) { + des->memoryType = Tensor::InsideDescribe::MEMORY_BACKEND; + } } } } @@ -352,16 +430,12 @@ void GeometryComputerUtils::makeRaster(const CommandBuffer& srcBuffer, CommandBu if (!OpCommonUtils::opNeedContent(op, i)) { continue; } - auto des = TensorUtils::getDescribe(cmd.inputs[i]); - //MNN_ASSERT(des->tensorArrayAttr == nullptr); - if (des->memoryType == Tensor::InsideDescribe::MEMORY_VIRTUAL) { - ctx.getRasterCacheCreateRecursive(cmd.inputs[i], dstBuffer); - } + ctx.getRasterCacheCreateRecursive(cmd.inputs[i], dstBuffer); } dstBuffer.command.emplace_back(srcBuffer.command[index]); } } -SharedPtr GeometryComputerUtils::makeBinary(int type, Tensor* input0, Tensor* input1, Tensor* output) { +std::shared_ptr GeometryComputerUtils::makeBinary(int type, Tensor* input0, Tensor* input1, Tensor* output) { flatbuffers::FlatBufferBuilder builder(DEFAULT_ALLOCATE_SIZE); BinaryOpBuilder builder_(builder); builder_.add_opType(type); @@ -371,7 +445,7 @@ SharedPtr GeometryComputerUtils::makeBinary(int type, Tensor* input0, T opB.add_main(mainOffset); opB.add_main_type(OpParameter_BinaryOp); builder.Finish(opB.Finish()); - SharedPtr cmdP = new Command; + std::shared_ptr cmdP(new Command); auto& cmd = *cmdP; cmd.buffer.reset(new BufferStorage); cmd.buffer->storage = builder.ReleaseRaw(cmd.buffer->allocated_size, cmd.buffer->offset); @@ -381,7 +455,7 @@ SharedPtr GeometryComputerUtils::makeBinary(int type, Tensor* input0, T return cmdP; } -SharedPtr GeometryComputerUtils::makeReduce(ReductionType type, Tensor* input0, Tensor* output) { +std::shared_ptr GeometryComputerUtils::makeReduce(ReductionType type, Tensor* input0, Tensor* output) { flatbuffers::FlatBufferBuilder builder(DEFAULT_ALLOCATE_SIZE); auto vec = builder.CreateVector(std::vector{1}); ReductionParamBuilder builder_(builder); @@ -394,7 +468,7 @@ SharedPtr GeometryComputerUtils::makeReduce(ReductionType type, Tensor* opB.add_main(mainOffset); opB.add_main_type(OpParameter_ReductionParam); builder.Finish(opB.Finish()); - SharedPtr cmdP = new Command; + std::shared_ptr cmdP(new Command); auto& cmd = *cmdP; cmd.buffer.reset(new BufferStorage); cmd.buffer->storage = builder.ReleaseRaw(cmd.buffer->allocated_size, cmd.buffer->offset); @@ -403,7 +477,7 @@ SharedPtr GeometryComputerUtils::makeReduce(ReductionType type, Tensor* cmd.op = flatbuffers::GetRoot(cmd.buffer->buffer()); return cmdP; } -SharedPtr GeometryComputerUtils::makeUnary(UnaryOpOperation type, Tensor* input0, Tensor* output) { +std::shared_ptr GeometryComputerUtils::makeUnary(UnaryOpOperation type, Tensor* input0, Tensor* output) { flatbuffers::FlatBufferBuilder builder(DEFAULT_ALLOCATE_SIZE); UnaryOpBuilder builder_(builder); builder_.add_opType(type); @@ -413,7 +487,7 @@ SharedPtr GeometryComputerUtils::makeUnary(UnaryOpOperation type, Tenso opB.add_main(mainOffset); opB.add_main_type(OpParameter_UnaryOp); builder.Finish(opB.Finish()); - SharedPtr cmdP = new Command; + std::shared_ptr cmdP(new Command); auto& cmd = *cmdP; cmd.buffer.reset(new BufferStorage); cmd.buffer->storage = builder.ReleaseRaw(cmd.buffer->allocated_size, cmd.buffer->offset); @@ -422,9 +496,9 @@ SharedPtr GeometryComputerUtils::makeUnary(UnaryOpOperation type, Tenso cmd.op = flatbuffers::GetRoot(cmd.buffer->buffer()); return cmdP; } -SharedPtr GeometryComputerUtils::makeCommand(flatbuffers::FlatBufferBuilder& builder, const std::vector& inputs, +std::shared_ptr GeometryComputerUtils::makeCommand(flatbuffers::FlatBufferBuilder& builder, const std::vector& inputs, const std::vector& outputs) { - SharedPtr cmdP = new Command; + std::shared_ptr cmdP(new Command); auto& cmd = *cmdP; cmd.buffer.reset(new BufferStorage); cmd.buffer->storage = builder.ReleaseRaw(cmd.buffer->allocated_size, cmd.buffer->offset); @@ -434,9 +508,9 @@ SharedPtr GeometryComputerUtils::makeCommand(flatbuffers::FlatBufferBui return cmdP; } -SharedPtr GeometryComputerUtils::makeMatMul(Tensor* input0, Tensor* input1, Tensor* output, Tensor* Bias, bool transposeA, +std::shared_ptr GeometryComputerUtils::makeMatMul(Tensor* input0, Tensor* input1, Tensor* output, Tensor* Bias, bool transposeA, bool transposeB) { - SharedPtr cmdP = new Command; + std::shared_ptr cmdP(new Command); auto& cmd = *cmdP; flatbuffers::FlatBufferBuilder builder(DEFAULT_ALLOCATE_SIZE); MatMulBuilder builder_(builder); diff --git a/source/geometry/GeometryComputerUtils.hpp b/source/geometry/GeometryComputerUtils.hpp index 9630cc4c9..4fc26c449 100644 --- a/source/geometry/GeometryComputerUtils.hpp +++ b/source/geometry/GeometryComputerUtils.hpp @@ -11,22 +11,23 @@ #include "core/Schedule.hpp" #include "geometry/GeometryComputer.hpp" namespace MNN { +class FileLoader; class GeometryComputerUtils { public: MNN_PUBLIC static void makeRaster(const CommandBuffer& srcBuffer, CommandBuffer& dstBuffer, GeometryComputer::Context& ctx); static void addConvert(const CommandBuffer& srcBuffer, CommandBuffer& dstBuffer, GeometryComputer::Context& ctx); - static SharedPtr makeCommand(flatbuffers::FlatBufferBuilder& builder, const std::vector& inputs, const std::vector& outputs); - static SharedPtr makeBinary(int type, Tensor* input0, Tensor* input1, Tensor* output); - static SharedPtr makeReduce(ReductionType type, Tensor* input0, Tensor* output); - static SharedPtr makeUnary(UnaryOpOperation type, Tensor* input0, Tensor* output); - static SharedPtr makeMatMul(Tensor* input0, Tensor* input1, Tensor* output, Tensor* Bias = nullptr, + static std::shared_ptr makeCommand(flatbuffers::FlatBufferBuilder& builder, const std::vector& inputs, const std::vector& outputs); + static std::shared_ptr makeBinary(int type, Tensor* input0, Tensor* input1, Tensor* output); + static std::shared_ptr makeReduce(ReductionType type, Tensor* input0, Tensor* output); + static std::shared_ptr makeUnary(UnaryOpOperation type, Tensor* input0, Tensor* output); + static std::shared_ptr makeMatMul(Tensor* input0, Tensor* input1, Tensor* output, Tensor* Bias = nullptr, bool transposeA = false, bool transposeB = false); static flatbuffers::Offset makePool(flatbuffers::FlatBufferBuilder& builder, std::pair kernel, std::pair stride, PoolType type, MNN::PoolPadType pad, std::pair pads, bool isglobal, AvgPoolCountType countType = AvgPoolCountType_DEFAULT); static Tensor::InsideDescribe::Region makeRawAddressRef(Tensor* src, int srcOffset, int size, int dstOffset = 0); static void makeRawAddressRef(Tensor* dst, Tensor* src, int srcOffset, int size, int dstOffset = 0); MNN_PUBLIC static int buildConstantTensors(std::vector& infos); - MNN_PUBLIC static ErrorCode shapeComputeAndGeometryTransform(std::vector& infos, + MNN_PUBLIC static ErrorCode shapeComputeAndGeometryTransform(FileLoader* external, std::vector& infos, GeometryComputer::Context& geoContext, std::shared_ptr backupBackend, Runtime::CompilerType compileType, bool skipShapeCompute = false, bool permitCodegen = false); diff --git a/source/geometry/GeometryConvUtils.cpp b/source/geometry/GeometryConvUtils.cpp index de89c5352..dd3b53cfa 100644 --- a/source/geometry/GeometryConvUtils.cpp +++ b/source/geometry/GeometryConvUtils.cpp @@ -263,7 +263,7 @@ bool GeometryConvUtils::computeSingle(const Op* op, const std::vector& newOutputs[0] = output; res.extras.emplace_back(newOutput); } - SharedPtr cmd(new Command); + std::shared_ptr cmd(new Command); cmd->op = op; cmd->inputs = std::move(newInputs); cmd->outputs = std::move(newOutputs); diff --git a/source/geometry/GeometryDet.cpp b/source/geometry/GeometryDet.cpp index 9f88925b8..d08b09cb5 100644 --- a/source/geometry/GeometryDet.cpp +++ b/source/geometry/GeometryDet.cpp @@ -27,7 +27,7 @@ class GeometryDet : public GeometryComputer { outDes->regions = {TensorUtils::makeFullSlice(midOutput.get())}; outDes->memoryType = Tensor::InsideDescribe::MEMORY_VIRTUAL; - SharedPtr cmd(new Command); + std::shared_ptr cmd(new Command); cmd->op = op; cmd->inputs.assign({midInput.get()}); cmd->outputs.assign({midOutput.get()}); diff --git a/source/geometry/GeometryELU.cpp b/source/geometry/GeometryELU.cpp index 70cc9e2e5..eb3f0ab49 100644 --- a/source/geometry/GeometryELU.cpp +++ b/source/geometry/GeometryELU.cpp @@ -13,8 +13,7 @@ namespace MNN { static void initTensor(std::shared_ptr tensor, Tensor* input) { - tensor->buffer().type = input->getType(); - TensorUtils::copyShape(input, tensor.get(), true); + TensorUtils::copyShape(input, tensor.get(), true, true); } class GeometryELU : public GeometryComputer { @@ -67,8 +66,8 @@ class GeometryELU : public GeometryComputer { { auto zeroConst = context.allocConst(op, {}, halide_type_of()); zeroConst->host()[0] = 0; - compValue->buffer().type = halide_type_of(); - TensorUtils::copyShape(input, compValue.get(), true); + TensorUtils::copyShape(input, compValue.get(), true, true); + compValue->buffer().type = halide_type_of(); auto cmd = GeometryComputerUtils::makeBinary(BinaryOpOperation_GREATER, input, zeroConst.get(), compValue.get()); res.extras.emplace_back(compValue); res.command.emplace_back(std::move(cmd)); diff --git a/source/geometry/GeometryGather.cpp b/source/geometry/GeometryGather.cpp index 331db515b..1165b0356 100644 --- a/source/geometry/GeometryGather.cpp +++ b/source/geometry/GeometryGather.cpp @@ -39,6 +39,35 @@ static void _computeGather(const std::vector& inputs, const std::vector for (int i = axis + 1; i < params->dimensions(); ++i) { inside *= params->length(i); } + const int limit = 3; + if (TensorUtils::getDescribe(indices)->usage == Tensor::InsideDescribe::CONSTANT && N < limit) { + // Use Raster instead of loop + auto outDes = TensorUtils::getDescribe(output); + outDes->memoryType = Tensor::InsideDescribe::MEMORY_VIRTUAL; + outDes->regions.clear(); + outDes->regions.reserve(N); + auto indicePtr = indices->host(); + auto axisLen = params->length(axis); + for (int i=0; i= axisLen) { + continue; + } + Tensor::InsideDescribe::Region reg; + reg.origin = inputs[0]; + reg.size[0] = 1; + reg.size[1] = outside; + reg.size[2] = inside; + reg.src.offset = indicePtr[i] * inside; + reg.src.stride[0] = 0; + reg.src.stride[1] = inside * axisLen; + reg.src.stride[2] = 1; + reg.dst.offset = i * inside; + reg.dst.stride[1] = inside * N; + reg.dst.stride[2] = 1; + outDes->regions.emplace_back(std::move(reg)); + } + return; + } flatbuffers::FlatBufferBuilder builder; OpBuilder unaryOp(builder); unaryOp.add_type(OpType_UnaryOp); diff --git a/source/geometry/GeometryImageOp.cpp b/source/geometry/GeometryImageOp.cpp index bc111c790..8f679422e 100644 --- a/source/geometry/GeometryImageOp.cpp +++ b/source/geometry/GeometryImageOp.cpp @@ -110,7 +110,7 @@ class GeometryImageOp : public GeometryComputer { builder.Finish(makeInterp(builder, &info, resize->resizeType(), op, OpType_Interp3D)); res.command.emplace_back(GeometryComputerUtils::makeCommand(builder, {newInputs[0]}, newOutputs)); } else { - SharedPtr cmdP = new Command; + std::shared_ptr cmdP(new Command); auto& cmd = *cmdP;; cmd.op = op; cmd.inputs = std::move(newInputs); diff --git a/source/geometry/GeometrySelect.cpp b/source/geometry/GeometrySelect.cpp index d9a0c1204..8dadabc77 100644 --- a/source/geometry/GeometrySelect.cpp +++ b/source/geometry/GeometrySelect.cpp @@ -47,7 +47,7 @@ class GeometrySelect : public GeometryComputer { input2 = newTensor.get(); res.extras.emplace_back(newTensor); } - SharedPtr cmdP(new Command); + std::shared_ptr cmdP(new Command); auto& cmd = *cmdP; cmd.op = op; cmd.inputs = {input0, input1, input2}; diff --git a/source/geometry/GeometryShape.cpp b/source/geometry/GeometryShape.cpp index 52429e056..c0a3e0aae 100644 --- a/source/geometry/GeometryShape.cpp +++ b/source/geometry/GeometryShape.cpp @@ -17,7 +17,7 @@ class GeometryShape : public GeometryComputer { public: virtual bool onCompute(const Op* op, const std::vector& inputs, const std::vector& outputs, Context& context, CommandBuffer& res) const override { - if (nullptr == TensorUtils::getDescribe(outputs[0])->mem.get()) { + if (nullptr == TensorUtils::getDescribeOrigin(outputs[0])->mem.get()) { auto originSize = outputs[0]->length(0); outputs[0]->setLength(0, MNN_MAX_TENSOR_DIM); if(!context.allocTensor(outputs[0])) { @@ -46,7 +46,7 @@ class GeometryRank : public GeometryComputer { public: virtual bool onCompute(const Op* op, const std::vector& inputs, const std::vector& outputs, Context& context, CommandBuffer& res) const override { - if (nullptr == TensorUtils::getDescribe(outputs[0])->mem.get()) { + if (nullptr == TensorUtils::getDescribeOrigin(outputs[0])->mem.get()) { if(!context.allocTensor(outputs[0])) { return false; } @@ -207,7 +207,7 @@ class GeometrySize : public GeometryComputer { public: virtual bool onCompute(const Op* op, const std::vector& inputs, const std::vector& outputs, Context& context, CommandBuffer& res) const override { - if (nullptr == TensorUtils::getDescribe(outputs[0])->mem.get()) { + if (nullptr == TensorUtils::getDescribeOrigin(outputs[0])->mem.get()) { if(!context.allocTensor(outputs[0])) { return false; } diff --git a/source/geometry/GeometryTensorArray.cpp b/source/geometry/GeometryTensorArray.cpp index 9363d3904..81801f3de 100644 --- a/source/geometry/GeometryTensorArray.cpp +++ b/source/geometry/GeometryTensorArray.cpp @@ -398,6 +398,8 @@ class GeometryTensorArraySplit : public GeometryComputer { } if (splitLast == splitLen) { outDes->regions[outDes->regions.size() - 1].size[0] += 1; + splitSum += splitLen; + splitLast = splitLen; continue; } Tensor::InsideDescribe::Region reg; diff --git a/source/geometry/GeometryTile.cpp b/source/geometry/GeometryTile.cpp index 6e9676196..f167770c5 100644 --- a/source/geometry/GeometryTile.cpp +++ b/source/geometry/GeometryTile.cpp @@ -10,6 +10,24 @@ #include "core/Macro.h" #include "core/OpCommonUtils.hpp" namespace MNN { +/** + Status 0 : input = 1 and multi = 1 + Status 1 :multi > 1 + Status 2 :input > 1 + + Input = 1 , multi = 1 : No change + Input = 1 , multi > 1 : + - Status 0 / 1 : multi * prevmulti,set status 1 + - Status 2 : Export Input,set status 1 + Input > 1 , multi = 1 : + - Status 0 / 2 :input * previnput,set status 2 + - Status 1 :Export multi,set status 2 + Input > 1 , multi > 1 : + - Status 0 :Export multi and input,Set status 0 + - Status 1 :multi * prevmulti,Export multi and input, set status 0 + - Status 2 :Export prevInput,Export mult, Export input,set status 0 + */ + class GeometryTile : public GeometryComputer { public: virtual bool onCompute(const Op* op, const std::vector& inputs, const std::vector& outputs, @@ -18,81 +36,161 @@ class GeometryTile : public GeometryComputer { auto multiples = inputs[1]; auto output = outputs[0]; auto input = inputs[0]; + auto outputDes = TensorUtils::getDescribe(output); + outputDes->memoryType = Tensor::InsideDescribe::MEMORY_VIRTUAL; + outputDes->regions.clear(); - // Compute Remain size and stride because region can only support up to 3 - int remainSize = 1; - std::vector remainDims; - for (int i = 0; i < input->dimensions() - 3; ++i) { - remainSize *= input->length(i); - remainDims.emplace_back(input->length(i)); + int validLength = 0; + int status = 0; + int inputStrides[MNN_MAX_TENSOR_DIM]; + int outputStrides[MNN_MAX_TENSOR_DIM]; + { + int shapes[MNN_MAX_TENSOR_DIM]; + for (int i = 0; i < input->dimensions(); ++i) { + shapes[i] = input->length(i); + } + OpCommonUtils::computeStride(inputStrides, shapes, input->dimensions()); + for (int i = 0; i < output->dimensions(); ++i) { + shapes[i] = output->length(i); + } + OpCommonUtils::computeStride(outputStrides, shapes, input->dimensions()); } - std::vector mod(remainDims.size()); - OpCommonUtils::computeStride(mod.data(), remainDims.data(), remainDims.size()); - - // Compute Multiply Stride + + int size[MNN_MAX_TENSOR_DIM]; + int srcStride[MNN_MAX_TENSOR_DIM]; + int dstStride[MNN_MAX_TENSOR_DIM]; + int prevInput = 1; + int prevMulti = 1; + int prevIndex = 0; auto mulPtr = multiples->host(); - int copyTimes = 1; for (int i = 0; i < input->dimensions(); ++i) { - copyTimes *= mulPtr[i]; - } - auto modMultiSize = input->dimensions(); - int32_t modMulti[MNN_MAX_TENSOR_DIM]; - for (int i = 0; i < modMultiSize; ++i) { - int value = 1; - for (int j = i + 1; j < input->dimensions(); ++j) { - value *= mulPtr[j]; + auto il = input->length(i); + auto ml = mulPtr[i]; + if (il == 0 || ml == 0) { + // Zero shape + return true; + } + if (il == 1 && ml == 1) { + continue; + } + if (il == 1 && ml > 1) { + switch (status) { + case 0: + prevMulti = 1; + case 1: + prevMulti = prevMulti * ml; + prevIndex = i; + break; + case 2: + size[validLength] = prevInput; + srcStride[validLength] = inputStrides[prevIndex]; + dstStride[validLength] = outputStrides[prevIndex]; + validLength++; + prevIndex = i; + prevMulti = ml; + break; + default: + break; + } + status = 1; + continue; } - modMulti[i] = value; + if (il > 1 && ml == 1) { + switch (status) { + case 0: + prevInput = 1; + case 2: + prevInput = prevInput * il; + prevIndex = i; + break; + case 1: + size[validLength] = prevMulti; + srcStride[validLength] = 0; + dstStride[validLength] = input->length(prevIndex) * outputStrides[prevIndex]; + validLength++; + prevIndex = i; + prevInput = il; + break; + default: + break; + } + status = 2; + continue; + } + // il > 1 and ml > 1 + if (1 == status) { + ml = ml * prevMulti; + } else if (2 == status) { + size[validLength] = prevInput; + srcStride[validLength] = inputStrides[prevIndex]; + dstStride[validLength] = outputStrides[prevIndex]; + validLength++; + } + size[validLength] = ml; + srcStride[validLength] = 0; + dstStride[validLength] = il * outputStrides[i]; + validLength++; + size[validLength] = il; + srcStride[validLength] = inputStrides[i]; + dstStride[validLength] = outputStrides[i]; + validLength++; + status = 0; + } + // Check remain input length / multi + switch (status) { + case 1: + size[validLength] = prevMulti; + srcStride[validLength] = 0; + dstStride[validLength] = input->length(prevIndex) * outputStrides[prevIndex]; + validLength++; + break; + case 2: + size[validLength] = prevInput; + srcStride[validLength] = inputStrides[prevIndex]; + dstStride[validLength] = outputStrides[prevIndex]; + validLength++; + break; + default: + break; } + + // Pad to 3 if not larger than 3 + for (int i=validLength; i<3; ++i) { + size[i] = 1; + srcStride[i] = 0; + dstStride[i] = 0; + } + validLength = ALIMAX(validLength, 3); - // Compute input and output stride - // input stride use for remainSize split - // output stride use for remainSize split and tile split - std::vector inputStrides(input->dimensions()); - std::vector outputStrides(input->dimensions()); - { - int strides = 1; - int outStrides = 1; - for (int i = input->dimensions() - 1; i >= 0; --i) { - inputStrides[i] = strides; - strides *= input->length(i); - outputStrides[i] = outStrides; - outStrides *= output->length(i); - } + // Compute Remain size and stride because region can only support up to 3 + int remainSize = 1; + int remainDims[MNN_MAX_TENSOR_DIM]; + int remainDimSize = validLength - 3; + for (int i = 0; i < validLength - 3; ++i) { + remainSize *= size[i]; + remainDims[i] = size[i]; } - // Compute regions, first iter copyTimes, second iter remainSize - auto outputDes = TensorUtils::getDescribe(output); - outputDes->regions.resize(copyTimes * remainSize); - outputDes->memoryType = Tensor::InsideDescribe::MEMORY_VIRTUAL; + int mod[MNN_MAX_TENSOR_DIM]; + OpCommonUtils::computeStride(mod, remainDims, remainDimSize); + outputDes->regions.reserve(remainSize); int coordinates[MNN_MAX_TENSOR_DIM]; - for (int u = 0; u < copyTimes; ++u) { - int dstOffset = 0; - OpCommonUtils::unravelIndexHelper(coordinates, modMulti, modMultiSize, u); - for (int i = 0; i < modMultiSize; ++i) { - dstOffset += coordinates[i] * input->length(i) * outputStrides[i]; + for (int u = 0; u < remainSize; ++u) { + OpCommonUtils::unravelIndexHelper(coordinates, mod, remainDimSize, u); + Tensor::InsideDescribe::Region region; + region.origin = input; + region.src.offset = 0; + region.dst.offset = 0; + for (int v=0; vregions[u * remainSize + v]; - region.src.offset = 0; - region.origin = input; - auto value = v; - region.dst.offset = dstOffset; - for (int i = 0; i < 3; ++i) { - auto match = input->dimensions() - i - 1; - if (match < 0) { - continue; - } - region.size[3 - i - 1] = input->length(match); - region.src.stride[3 - i - 1] = inputStrides[match]; - region.dst.stride[3 - i - 1] = outputStrides[match]; - } - for (int i = 0; i < remainDims.size(); ++i) { - auto coordinate = value / mod[i]; - region.src.offset += coordinate * inputStrides[i]; - region.dst.offset += coordinate * outputStrides[i]; - value = value % mod[i]; - } + for (int v=0; v<3; ++v) { + auto ov = v + remainDimSize; + region.src.stride[v] = srcStride[ov]; + region.dst.stride[v] = dstStride[ov]; + region.size[v] = size[ov]; } + outputDes->regions.emplace_back(std::move(region)); } return true; } diff --git a/source/geometry/GeometryTopK.cpp b/source/geometry/GeometryTopK.cpp index 036148c8f..54ad0fa40 100644 --- a/source/geometry/GeometryTopK.cpp +++ b/source/geometry/GeometryTopK.cpp @@ -27,7 +27,7 @@ class GeometryTopK : public GeometryComputer { } } if (axis == numAxes - 1) { - SharedPtr cmdP(new Command); + std::shared_ptr cmdP(new Command); auto& cmd = *cmdP; cmd.op = op; cmd.inputs.assign({inputs[0], inputs[1]}); @@ -81,7 +81,7 @@ class GeometryTopK : public GeometryComputer { res.extras.emplace_back(transInd); } { // do TopK on last axis - SharedPtr cmdP(new Command); + std::shared_ptr cmdP(new Command); auto& cmd = *cmdP; cmd.op = op; cmd.inputs.assign({transInput.get(), inputs[1]}); diff --git a/source/math/Vec.hpp b/source/math/Vec.hpp index d247dcb33..8f992dffd 100644 --- a/source/math/Vec.hpp +++ b/source/math/Vec.hpp @@ -224,9 +224,6 @@ struct Vec { Vec(const float v) { value = vdupq_n_s32((int32_t)v); } - Vec(const float32x4_t v) { - value = reinterpret_cast(v); - } Vec(const int32x4_t v) { value = v; } @@ -237,14 +234,18 @@ struct Vec { value = std::move(lr.value); } float operator[](size_t i) { +#if defined(_MSC_VER) + return value.n128_i32[i]; +#else return value[i]; +#endif } static VecType load(const float* addr) { - VecType v = { reinterpret_cast(vld1q_f32(addr)) }; + VecType v = { (int32x4_t)(vld1q_f32(addr)) }; return v; } static VecType broadcast(const float* addr) { - VecType dst = { reinterpret_cast(vld1q_dup_f32(addr)) }; + VecType dst = { (int32x4_t)(vld1q_dup_f32(addr)) }; return dst; } static VecType broadcast(const int32_t* addr) { @@ -256,7 +257,7 @@ struct Vec { return v; } static void save(float* addr, const VecType& v) { - vst1q_f32(addr, reinterpret_cast(v.value)); + vst1q_f32(addr, (float32x4_t)(v.value)); } static void save(int32_t* addr, const VecType& v) { vst1q_s32(addr, v.value); @@ -283,10 +284,10 @@ struct Vec { auto m1 = vtrn2q_s32(vec0.value, vec1.value); auto m2 = vtrn1q_s32(vec2.value, vec3.value); auto m3 = vtrn2q_s32(vec2.value, vec3.value); - vec0.value = reinterpret_cast(vtrn1q_s64(reinterpret_cast(m0), reinterpret_cast(m2))); - vec1.value = reinterpret_cast(vtrn1q_s64(reinterpret_cast(m1), reinterpret_cast(m3))); - vec2.value = reinterpret_cast(vtrn2q_s64(reinterpret_cast(m0), reinterpret_cast(m2))); - vec3.value = reinterpret_cast(vtrn2q_s64(reinterpret_cast(m1), reinterpret_cast(m3))); + vec0.value = (int32x4_t)(vtrn1q_s64((int64x2_t)(m0), (int64x2_t)(m2))); + vec1.value = (int32x4_t)(vtrn1q_s64((int64x2_t)(m1), (int64x2_t)(m3))); + vec2.value = (int32x4_t)(vtrn2q_s64((int64x2_t)(m0), (int64x2_t)(m2))); + vec3.value = (int32x4_t)(vtrn2q_s64((int64x2_t)(m1), (int64x2_t)(m3))); #else auto m0m1 = vtrnq_s32(vec0.value, vec1.value); @@ -295,10 +296,10 @@ struct Vec { vec1.value = m0m1.val[1]; vec2.value = m2m3.val[0]; vec3.value = m2m3.val[1]; - vec0.value = reinterpret_cast(vsetq_lane_s64(vgetq_lane_s64(m2m3.val[0], 0), vec0.value, 1)); - vec1.value = reinterpret_cast(vsetq_lane_s64(vgetq_lane_s64(m2m3.val[1], 0), vec1.value, 1)); - vec2.value = reinterpret_cast(vsetq_lane_s64(vgetq_lane_s64(m0m1.val[0], 1), vec2.value, 0)); - vec3.value = reinterpret_cast(vsetq_lane_s64(vgetq_lane_s64(m0m1.val[1], 1), vec3.value, 0)); + vec0.value = (int32x4_t)(vsetq_lane_s64(vgetq_lane_s64(m2m3.val[0], 0), vec0.value, 1)); + vec1.value = (int32x4_t)(vsetq_lane_s64(vgetq_lane_s64(m2m3.val[1], 0), vec1.value, 1)); + vec2.value = (int32x4_t)(vsetq_lane_s64(vgetq_lane_s64(m0m1.val[0], 1), vec2.value, 0)); + vec3.value = (int32x4_t)(vsetq_lane_s64(vgetq_lane_s64(m0m1.val[1], 1), vec3.value, 0)); #endif } @@ -399,7 +400,11 @@ struct Vec { value = std::move(lr.value); } float operator[](size_t i) { +#if defined(_MSC_VER) + return value.n128_f32[i]; +#else return value[i]; +#endif } static VecType load(const float* addr) { VecType v = { vld1q_f32(addr) }; @@ -417,10 +422,10 @@ struct Vec { vst1q_f32(addr, v.value); } static void save(float* addr, const VecTypeInt32& v) { - vst1q_f32(addr, reinterpret_cast(v.value)); + vst1q_f32(addr, (float32x4_t)(v.value)); } static void save(int32_t* addr, const VecType& v) { - vst1q_s32(addr, reinterpret_cast(v.value)); + vst1q_s32(addr, (int32x4_t)(v.value)); } static VecType max(const VecType& v1, const VecType& v2) { VecType dst = { vmaxq_f32(v1.value, v2.value) }; @@ -440,26 +445,26 @@ struct Vec { } static inline void transpose4(VecType& vec0, VecType& vec1, VecType& vec2, VecType& vec3) { #ifdef __aarch64__ - auto m0 = vtrn1q_s32(reinterpret_cast(vec0.value), reinterpret_cast(vec1.value)); - auto m1 = vtrn2q_s32(reinterpret_cast(vec0.value), reinterpret_cast(vec1.value)); - auto m2 = vtrn1q_s32(reinterpret_cast(vec2.value), reinterpret_cast(vec3.value)); - auto m3 = vtrn2q_s32(reinterpret_cast(vec2.value), reinterpret_cast(vec3.value)); - vec0.value = reinterpret_cast(vtrn1q_s64(reinterpret_cast(m0), reinterpret_cast(m2))); - vec1.value = reinterpret_cast(vtrn1q_s64(reinterpret_cast(m1), reinterpret_cast(m3))); - vec2.value = reinterpret_cast(vtrn2q_s64(reinterpret_cast(m0), reinterpret_cast(m2))); - vec3.value = reinterpret_cast(vtrn2q_s64(reinterpret_cast(m1), reinterpret_cast(m3))); + auto m0 = vtrn1q_s32((int32x4_t)(vec0.value), (int32x4_t)(vec1.value)); + auto m1 = vtrn2q_s32((int32x4_t)(vec0.value), (int32x4_t)(vec1.value)); + auto m2 = vtrn1q_s32((int32x4_t)(vec2.value), (int32x4_t)(vec3.value)); + auto m3 = vtrn2q_s32((int32x4_t)(vec2.value), (int32x4_t)(vec3.value)); + vec0.value = (float32x4_t)(vtrn1q_s64((int64x2_t)(m0), (int64x2_t)(m2))); + vec1.value = (float32x4_t)(vtrn1q_s64((int64x2_t)(m1), (int64x2_t)(m3))); + vec2.value = (float32x4_t)(vtrn2q_s64((int64x2_t)(m0), (int64x2_t)(m2))); + vec3.value = (float32x4_t)(vtrn2q_s64((int64x2_t)(m1), (int64x2_t)(m3))); #else - auto m0m1 = vtrnq_s32(reinterpret_cast(vec0.value), reinterpret_cast(vec1.value)); - auto m2m3 = vtrnq_s32(reinterpret_cast(vec2.value), reinterpret_cast(vec3.value)); - vec0.value = reinterpret_cast(m0m1.val[0]); - vec1.value = reinterpret_cast(m0m1.val[1]); - vec2.value = reinterpret_cast(m2m3.val[0]); - vec3.value = reinterpret_cast(m2m3.val[1]); - vec0.value = reinterpret_cast(vsetq_lane_s64(vgetq_lane_s64(reinterpret_cast(m2m3.val[0]), 0), reinterpret_cast(vec0.value), 1)); - vec1.value = reinterpret_cast(vsetq_lane_s64(vgetq_lane_s64(reinterpret_cast(m2m3.val[1]), 0), reinterpret_cast(vec1.value), 1)); - vec2.value = reinterpret_cast(vsetq_lane_s64(vgetq_lane_s64(reinterpret_cast(m0m1.val[0]), 1), reinterpret_cast(vec2.value), 0)); - vec3.value = reinterpret_cast(vsetq_lane_s64(vgetq_lane_s64(reinterpret_cast(m0m1.val[1]), 1), reinterpret_cast(vec3.value), 0)); + auto m0m1 = vtrnq_s32((int32x4_t)(vec0.value), (int32x4_t)(vec1.value)); + auto m2m3 = vtrnq_s32((int32x4_t)(vec2.value), (int32x4_t)(vec3.value)); + vec0.value = (float32x4_t)(m0m1.val[0]); + vec1.value = (float32x4_t)(m0m1.val[1]); + vec2.value = (float32x4_t)(m2m3.val[0]); + vec3.value = (float32x4_t)(m2m3.val[1]); + vec0.value = (float32x4_t)(vsetq_lane_s64(vgetq_lane_s64((int64x2_t)(m2m3.val[0]), 0), (int64x2_t)(vec0.value), 1)); + vec1.value = (float32x4_t)(vsetq_lane_s64(vgetq_lane_s64((int64x2_t)(m2m3.val[1]), 0), (int64x2_t)(vec1.value), 1)); + vec2.value = (float32x4_t)(vsetq_lane_s64(vgetq_lane_s64((int64x2_t)(m0m1.val[0]), 1), (int64x2_t)(vec2.value), 0)); + vec3.value = (float32x4_t)(vsetq_lane_s64(vgetq_lane_s64((int64x2_t)(m0m1.val[1]), 1), (int64x2_t)(vec3.value), 0)); /* generated arm32 assembly code is almost the same as: vtrn.32 d0, d2 @@ -513,35 +518,35 @@ struct Vec { int32x4_t one = vdupq_n_s32(1); int32x4_t zero = vdupq_n_s32(0); uint32x4_t res = vcltq_f32(value, lr.value); - VecType dst = { reinterpret_cast(vbslq_s32(res, one, zero)) }; + VecType dst = { (float32x4_t)(vbslq_s32(res, one, zero)) }; return dst; } VecType operator>(const VecType& lr) const { int32x4_t one = vdupq_n_s32(1); int32x4_t zero = vdupq_n_s32(0); uint32x4_t res = vcgtq_f32(value, lr.value); - VecType dst = { reinterpret_cast(vbslq_s32(res, one, zero)) }; + VecType dst = { (float32x4_t)(vbslq_s32(res, one, zero)) }; return dst; } VecType operator<=(const VecType& lr) const { int32x4_t one = vdupq_n_s32(1); int32x4_t zero = vdupq_n_s32(0); uint32x4_t res = vcleq_f32(value, lr.value); - VecType dst = { reinterpret_cast(vbslq_s32(res, one, zero)) }; + VecType dst = { (float32x4_t)(vbslq_s32(res, one, zero)) }; return dst; } VecType operator>=(const VecType& lr) const { int32x4_t one = vdupq_n_s32(1); int32x4_t zero = vdupq_n_s32(0); uint32x4_t res = vcgeq_f32(value, lr.value); - VecType dst = { reinterpret_cast(vbslq_s32(res, one, zero)) }; + VecType dst = { (float32x4_t)(vbslq_s32(res, one, zero)) }; return dst; } VecType operator==(const VecType& lr) const { int32x4_t one = vdupq_n_s32(1); int32x4_t zero = vdupq_n_s32(0); uint32x4_t res = vceqq_f32(value, lr.value); - VecType dst = { reinterpret_cast(vbslq_s32(res, one, zero)) }; + VecType dst = { (float32x4_t)(vbslq_s32(res, one, zero)) }; return dst; } }; diff --git a/source/shape/ShapeDynamicQuant.cpp b/source/shape/ShapeDynamicQuant.cpp new file mode 100644 index 000000000..d220273ec --- /dev/null +++ b/source/shape/ShapeDynamicQuant.cpp @@ -0,0 +1,50 @@ +// +// ShapeDet.cpp +// MNN +// +// Created by MNN on 2019/01/10. +// Copyright © 2018, Alibaba Group Holding Limited +// + +#include "shape/SizeComputer.hpp" +#include "core/Macro.h" + +namespace MNN { +class DynamicQuantComputer : public SizeComputer { + virtual bool onComputeSize(const MNN::Op* op, const std::vector& inputs, + const std::vector& outputs) const override { + MNN_ASSERT(outputs.size() == 3); + if (inputs.size() != 1) { + MNN_ERROR("DynamicQuant only accept 1 input\n"); + return false; + } + auto input = inputs[0]; + auto output = outputs[0]; + int dimSize = input->dimensions(); + output->buffer().dimensions = dimSize; + for (int i = 0; i < dimSize; ++i) { + output->buffer().dim[i].extent = input->buffer().dim[i].extent; + } + auto scale = outputs[1]; + auto zeroPoint = outputs[2]; + scale->buffer().dimensions = 1; + zeroPoint->buffer().dimensions = 1; + scale->buffer().dim[0].extent = 1; + zeroPoint->buffer().dim[0].extent = 1; + + TensorUtils::getDescribe(output)->dimensionFormat = TensorUtils::getDescribe(inputs[0])->dimensionFormat; + output->buffer().type = halide_type_of(); + + TensorUtils::getDescribe(scale)->dimensionFormat = TensorUtils::getDescribe(inputs[0])->dimensionFormat; + scale->buffer().type = halide_type_of(); + + TensorUtils::getDescribe(output)->dimensionFormat = TensorUtils::getDescribe(inputs[0])->dimensionFormat; + zeroPoint->buffer().type = halide_type_of(); + + return true; + } +}; + +REGISTER_SHAPE(DynamicQuantComputer, OpType_DynamicQuant); + +} // namespace MNN diff --git a/source/shape/ShapeRegister.cpp b/source/shape/ShapeRegister.cpp index 3a19eb1d3..2c2615817 100644 --- a/source/shape/ShapeRegister.cpp +++ b/source/shape/ShapeRegister.cpp @@ -8,6 +8,7 @@ extern void ___InterpComputer__OpType_Interp__(); extern void ___CropSizeComputer__OpType_Crop__(); extern void ___MatMulSizeComputer__OpType_MatMul__(); extern void ___MatMulSizeComputer__OpType_BatchMatMul__(); +extern void ___DynamicQuantComputer__OpType_DynamicQuant__(); extern void ___ReshapeComputer__OpType_Reshape__(); extern void ___ReshapeComputer__OpType_QuantizedReshape__(); extern void ___FlattenComputer__OpType_Flatten__(); @@ -128,6 +129,7 @@ ___InterpComputer__OpType_Interp__(); ___CropSizeComputer__OpType_Crop__(); ___MatMulSizeComputer__OpType_MatMul__(); ___MatMulSizeComputer__OpType_BatchMatMul__(); +___DynamicQuantComputer__OpType_DynamicQuant__(); ___ReshapeComputer__OpType_Reshape__(); ___ReshapeComputer__OpType_QuantizedReshape__(); ___FlattenComputer__OpType_Flatten__(); diff --git a/source/shape/SizeComputer.cpp b/source/shape/SizeComputer.cpp index 672330aaf..3783aba65 100644 --- a/source/shape/SizeComputer.cpp +++ b/source/shape/SizeComputer.cpp @@ -11,6 +11,7 @@ #include #include "core/Macro.h" #include "core/TensorUtils.hpp" +#include "utils/InitNet.hpp" // #define MNN_DEBUG_TENSOR_SIZE namespace MNN { void registerShapeOps(); @@ -121,6 +122,10 @@ bool SizeComputer::computeOutputSize(const MNN::Op* op, const std::vectormain_type() == OpParameter_Blob) { + computeShapeForBlob(op->main_as_Blob(), outputs[0]); + return true; + } // For Loop Op if (op->type() == OpType_While && op->main_type() == OpParameter_LoopParam) { auto loop = op->main_as_LoopParam(); diff --git a/source/utils/InitNet.cpp b/source/utils/InitNet.cpp index 5d6ed6334..534812f96 100644 --- a/source/utils/InitNet.cpp +++ b/source/utils/InitNet.cpp @@ -18,7 +18,30 @@ bool needComputeOp(const Op* op) { } return false; } -bool initConstTensors(std::vector>& tensors, const Net* net, Backend* defaultBackend, ErrorCode& code) { +bool computeShapeForBlob(const Blob* parameter, Tensor* output) { + bool zeroShape = false; + if (parameter->dims() != nullptr) { + output->buffer().dimensions = parameter->dims()->size(); + for (int i = 0; i < output->buffer().dimensions; i++) { + output->buffer().dim[i].extent = parameter->dims()->Get(i); + if (output->length(i) <= 0) { + zeroShape = true; + } + } + } else { + output->buffer().dimensions = 0; + } + if (parameter->dataType() == DataType_DT_HALF) { + output->setType(DataType_DT_FLOAT); + } else { + output->setType(parameter->dataType()); + } + TensorUtils::getDescribe(output)->dimensionFormat = parameter->dataFormat(); + TensorUtils::setLinearLayout(output); + return zeroShape; +} + +bool initConstTensors(std::vector>& tensors, const Net* net, Backend* defaultBackend, ErrorCode& code, FileLoader* external) { bool valid = true; tensors.resize(net->tensorName()->size()); // Set up const @@ -31,31 +54,13 @@ bool initConstTensors(std::vector>& tensors, const Net* TensorUtils::getDescribe(tensors[index].get())->index = index; auto parameter = op->main_as_Blob(); auto output = tensors[index].get(); - bool zeroShape = false; - if (parameter->dims() != nullptr) { - output->buffer().dimensions = parameter->dims()->size(); - for (int i = 0; i < output->buffer().dimensions; i++) { - output->buffer().dim[i].extent = parameter->dims()->Get(i); - if (output->length(i) <= 0) { - zeroShape = true; - } - } - } else { - output->buffer().dimensions = 0; - } - if (parameter->dataType() == DataType_DT_HALF) { - output->setType(DataType_DT_FLOAT); - } else { - output->setType(parameter->dataType()); - } - TensorUtils::getDescribe(output)->dimensionFormat = parameter->dataFormat(); - TensorUtils::getDescribe(output)->usage = Tensor::InsideDescribe::CONSTANT; - TensorUtils::getDescribe(output)->isMutable = false; if (op->type() == OpType_TrainableParam) { TensorUtils::getDescribe(output)->usage = Tensor::InsideDescribe::TRAINABLE; } - TensorUtils::setLinearLayout(output); - TensorUtils::getDescribe(output)->setBackend(defaultBackend); + bool zeroShape = computeShapeForBlob(parameter, output); + TensorUtils::getDescribe(output)->usage = Tensor::InsideDescribe::CONSTANT; + TensorUtils::getDescribe(output)->isMutable = false; + TensorUtils::getDescribeOrigin(output)->setBackend(defaultBackend); //MNN_PRINT("Const tensor %p is %p bn\n", output, defaultBackend); if (zeroShape) { continue; @@ -78,7 +83,7 @@ bool initConstTensors(std::vector>& tensors, const Net* if (USE_EXTERNAL_DATA(parameter)) { tmp.reset((new half_float::half[size])); src = tmp.get(); - OpCommonUtils::loadExternalDatas(defaultBackend, {reinterpret_cast(src)}, parameter->external()->data()); + OpCommonUtils::loadExternalDatas(external, {reinterpret_cast(src)}, parameter->external()->data()); } else { src = (half_float::half*)parameter->uint8s()->data(); } @@ -86,7 +91,7 @@ bool initConstTensors(std::vector>& tensors, const Net* outputPtr[i] = src[i]; } } else { - OpCommonUtils::loadBlobData(defaultBackend, op, output->host(), output->size()); + OpCommonUtils::loadBlobData(external, op, output->host(), output->size()); } } else { if (nullptr != op->outputIndexes()) { diff --git a/source/utils/InitNet.hpp b/source/utils/InitNet.hpp index 0c5292917..6bdcc34c0 100644 --- a/source/utils/InitNet.hpp +++ b/source/utils/InitNet.hpp @@ -12,8 +12,11 @@ #include "core/Schedule.hpp" namespace MNN { +class FileLoader; MNN_PUBLIC bool needComputeOp(const Op* op); -MNN_PUBLIC bool initConstTensors(std::vector>& tensors, const Net* net, Backend* defaultBackend, ErrorCode& code); +MNN_PUBLIC bool computeShapeForBlob(const Blob* parameter, Tensor* output); + +MNN_PUBLIC bool initConstTensors(std::vector>& tensors, const Net* net, Backend* defaultBackend, ErrorCode& code, FileLoader* external); // init Tensors by net MNN_PUBLIC bool initTensors(std::vector>& allTensors, const Net* net); // init Pipeline Infos by oplist and tensors diff --git a/test.sh b/test.sh index 033c3d6ff..5dc09f3f7 100755 --- a/test.sh +++ b/test.sh @@ -240,9 +240,11 @@ linux_build() { -DMNN_OPENCL=ON \ -DMNN_BUILD_QUANTOOLS=ON \ -DMNN_BUILD_DEMO=ON \ + -DMNN_BUILD_TRAIN=ON \ -DMNN_BUILD_CONVERTER=ON \ -DMNN_BUILD_TORCH=ON \ -DMNN_BUILD_OPENCV=ON \ + -DMNN_LOW_MEMORY=ON \ -DMNN_IMGCODECS=ON \ -DMNN_ENABLE_COVERAGE=$COVERAGE make -j16 @@ -435,7 +437,7 @@ llm_test() { failed fi # 2. run llm model test - ./llm_demo ~/AliNNModel/qwen-1.8b-int4 ~/AliNNModel/qwen-1.8b-int4/prompt.txt + ./llm_demo ~/AliNNModel/qwen-1.8b-int4 0 ~/AliNNModel/qwen-1.8b-int4/prompt.txt if [ $? -gt 0 ]; then echo '### LLM模型测试失败,测试终止!' failed @@ -481,7 +483,7 @@ coverage_report() { # # ############################################################################################# android_unit_test() { - adb shell "cd /data/local/tmp/MNN&&export LD_LIBRARY_PATH=.&&./run_test.out all 0 0.002 1 $1" + adb shell "cd /data/local/tmp/MNN&&export LD_LIBRARY_PATH=.&&./run_test.out all 0 0 1 $1" if [ $? -ne 0 ]; then echo '### Android单元测试失败,测试终止!' failed @@ -496,6 +498,16 @@ android_unit_test() { echo '### Android单元测试卷积FP16多线程失败,测试终止!' failed fi + adb shell "cd /data/local/tmp/MNN&&export LD_LIBRARY_PATH=.&&./run_test.out op/col2im 0 2 4 fp16col2im$1" + if [ $? -ne 0 ]; then + echo '### Android单元测试FP16-col2im多线程失败,测试终止!' + failed + fi + adb shell "cd /data/local/tmp/MNN&&export LD_LIBRARY_PATH=.&&./run_test.out op/R 0 2 4 fp16roipooling$1" + if [ $? -ne 0 ]; then + echo '### Android单元测试FP16-roipooling多线程失败,测试终止!' + failed + fi adb shell "cd /data/local/tmp/MNN&&export LD_LIBRARY_PATH=.&&./run_test.out op 3 1 4 $1" if [ $? -ne 0 ]; then echo '### Android单元测试OpenCL失败,测试终止!' @@ -614,7 +626,7 @@ android_test() { # 3. build Android64 mkdir build_64 pushd build_64 - ../build_64.sh -DMNN_BUILD_TRAIN=OFF -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DMNN_ARM82=true -DMNN_OPENCL=true + ../build_64.sh -DMNN_BUILD_TRAIN=OFF -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DMNN_ARM82=true -DMNN_OPENCL=true -DMNN_LOW_MEMORY=true android64_build_wrong=$[$? > 0] mnn64_size=$(ls -lh libMNN.so | awk '{print $5}') expr64_size=$(ls -lh libMNN_Express.so | awk '{print $5}') @@ -628,27 +640,10 @@ android_test() { # 4. test Android64 ../updateTest.sh android_unit_test 64 + android_unit_test_low_memory 64 android_model_test 64 popd - # 5. build Android64 LowMemory - mkdir build_64_lowmemory - pushd build_64_lowmemory - ../build_64.sh -DMNN_BUILD_TRAIN=OFF -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DMNN_ARM82=true -DMNN_OPENCL=false -DMNN_LOW_MEMORY=ON - android64_build_wrong=$[$? > 0] - mnn64_size=$(ls -lh libMNN.so | awk '{print $5}') - expr64_size=$(ls -lh libMNN_Express.so | awk '{print $5}') - printf "TEST_NAME_ANDROID_64: Android64编译测试(libMNN.so - %s, libMNN_Express.so - %s)\nTEST_CASE_AMOUNT_ANDROID_64: {\"blocked\":0,\"failed\":%d,\"passed\":%d,\"skipped\":0}\n" \ - $mnn64_size $expr64_size $android64_build_wrong $[1 - $android64_build_wrong] - if [ $android64_build_wrong -ne 0 ]; then - echo '### Android64编译失败,测试终止!' - failed - fi - - # 6. test Android64 LowMemory - ../updateTest.sh - android_unit_test_low_memory aarch64 - popd popd } diff --git a/test/CommonOpCreator.hpp b/test/CommonOpCreator.hpp new file mode 100644 index 000000000..64700a253 --- /dev/null +++ b/test/CommonOpCreator.hpp @@ -0,0 +1,98 @@ +// +// CommonOpCreator.hpp +// MNN +// +// Created by MNN on 2019/01/10. +// Copyright © 2018, Alibaba Group Holding Limited +// + +#ifndef CommonOpCreator_hpp +#define CommonOpCreator_hpp +#include "TestUtils.h" +#include "cpp/IDSTEncoder.hpp" +namespace MNN { +static PadMode _convertPadMode(Express::PaddingMode mode) { + switch (mode) { + case Express::PaddingMode::CAFFE: + return PadMode_CAFFE; + case Express::PaddingMode::VALID: + return PadMode_VALID; + case Express::PaddingMode::SAME: + return PadMode_SAME; + default: + break; + } + return PadMode_CAFFE; +} +static Express::VARP _HybridConv(const std::vector& weight, std::vector&& bias, std::vector&& alpha, Express::VARP x, std::vector channel, std::vector kernelSize, + Express::PaddingMode pad, std::vector stride, std::vector dilate, int group, std::vector pads, bool relu, bool relu6, int nbits, bool async) { + std::unique_ptr convOp(new OpT); + convOp->type = OpType_Convolution; + convOp->main.type = OpParameter_Convolution2D; + convOp->main.value = new Convolution2DT; + auto conv2D = convOp->main.AsConvolution2D(); + conv2D->common.reset(new Convolution2DCommonT); + int kSize = kernelSize[0] * kernelSize[1] * channel[0] / group; + int kNum = channel[1]; + int clampMin = -(1 << (nbits - 1)); + conv2D->quanParameter = std::move(IDSTEncoder::encode(weight.data(), alpha, kSize, kNum, async, nullptr, clampMin, nbits)); + conv2D->common->padMode = _convertPadMode(pad); + if (pads.size() == 2) { + conv2D->common->padX = pads[0]; + conv2D->common->padY = pads[1]; + } else { + conv2D->common->pads = std::move(pads); + } + conv2D->common->strideX = stride[0]; + conv2D->common->strideY = stride[1]; + conv2D->common->group = group; + conv2D->common->outputCount = channel[1]; + conv2D->common->inputCount = channel[0]; + conv2D->common->dilateX = dilate[0]; + conv2D->common->dilateY = dilate[1]; + conv2D->common->kernelX = kernelSize[0]; + conv2D->common->kernelY = kernelSize[1]; + conv2D->common->relu6 = relu6; + conv2D->common->relu = relu; + conv2D->weight.clear(); + MNN_ASSERT(bias.size() == channel[1]); + conv2D->bias = std::move(bias); + return (Express::Variable::create(Express::Expr::create(convOp.get(), {x}))); +} + +static float findAbsMax(const float *weights, const int count) { + float absMax = 0.00000001f; + for (int i = 0; i < count; i++) { + float value = fabs(weights[i]); + if (value > absMax) { + absMax = value; + } + } + + return absMax; +} + +static std::pair findMinMax(const float *weights, const int count) { + float absMax = 0.00000001f; + if (0 == count) { + return std::make_pair(0.0f, 1.0f); + } + float minV = weights[0]; + float maxV = weights[0]; + for (int i = 1; i < count; i++) { + float value = weights[i]; + if (value > maxV) { + maxV = value; + } + if (value < minV) { + minV = value; + } + } + + return std::make_pair(minV, maxV); +} + +}; + + +#endif diff --git a/test/core/IDSTTest.cpp b/test/core/IDSTTest.cpp index e2e042c5e..56d1a4cf7 100644 --- a/test/core/IDSTTest.cpp +++ b/test/core/IDSTTest.cpp @@ -7,7 +7,6 @@ // #include "MNNTestSuite.h" -#include "MNN_generated.h" #include #include "cpp/IDSTEncoder.hpp" #include "core/ConvolutionCommon.hpp" diff --git a/test/expr/ModuleTest.cpp b/test/expr/ModuleTest.cpp index 440cba312..d2f4fc19e 100644 --- a/test/expr/ModuleTest.cpp +++ b/test/expr/ModuleTest.cpp @@ -37,7 +37,7 @@ static VARP convBlocTemp(VARP x, INTS channels, int stride) { x = _Conv(0.05f, -2.0f, x, {inputChannel, outputChannel}, {1, 1}, SAME, {1, 1}, {1, 1}, 1); return x; } -static VARP _mobileNetV1Expr(VARP x = nullptr) { +static VARP _mobileNetV1Expr(VARP x = nullptr, bool softmax = true) { int inputSize = 224, poolSize; // MobileNet_224, MobileNet_192, MobileNet_160, MobileNet_128 { inputSize = 224; @@ -54,7 +54,7 @@ static VARP _mobileNetV1Expr(VARP x = nullptr) { x = _Input({1, 3, inputSize, inputSize}, NC4HW4); x->setName("Input"); } - x = _Conv(0.0f, 0.0f, x, {3, channels[0]}, {3, 3}, SAME, {2, 2}, {1, 1}, 1); + x = _Conv(0.01f, 0.0f, x, {3, channels[0]}, {3, 3}, SAME, {2, 2}, {1, 1}, 1); x = convBlock(x, {channels[0], channels[1]}, 1); x = convBlock(x, {channels[1], channels[2]}, 2); x = convBlock(x, {channels[2], channels[2]}, 1); @@ -69,8 +69,10 @@ static VARP _mobileNetV1Expr(VARP x = nullptr) { x = convBlock(x, {channels[4], channels[5]}, 2); x = convBlock(x, {channels[5], channels[5]}, 1); x = _AvePool(x, {poolSize, poolSize}, {1, 1}, VALID); - x = _Conv(0.0f, 0.0f, x, {channels[5], 1001}, {1, 1}, VALID, {1, 1}, {1, 1}, 1); // reshape FC with Conv1x1 - x = _Softmax(x, -1); + x = _Conv(0.01f, 0.0f, x, {channels[5], 1001}, {1, 1}, VALID, {1, 1}, {1, 1}, 1); // reshape FC with Conv1x1 + if (softmax) { + x = _Softmax(x, -1); + } x = _Convert(x, NCHW); x->setName("Prob"); return x; @@ -1042,3 +1044,149 @@ class MutlThreadConstReplaceTest : public MNNTestCase { }; }; MNNTestSuiteRegister(MutlThreadConstReplaceTest, "expr/MutlThreadConstReplaceTest"); + +class ResizeOptimizationTest : public MNNTestCase { +public: + virtual bool run(int precision) { + std::vector buffer; + { + // Make Buffer + auto x0 = _Input({1, 3, 32, 32}, NCHW, halide_type_of()); + x0->setName("x0"); + { + auto x1s = _Shape(x0); + auto ss = _Unstack(x1s); + auto w = ss[2]; + auto h = ss[3]; + int batchNumber = 1; + int channelNumber = 3; + auto batch = _Const(&batchNumber, {}, NCHW, halide_type_of()); + auto channel = _Const(&channelNumber, {}, NCHW, halide_type_of()); + x0 = _Reshape(x0, _Stack({batch * channel, w * h})); + x0 = _Reshape(x0, x1s); + } + auto y0 = _mobileNetV1Expr(_Convert(x0, NC4HW4), false); + y0->setName("y0"); + auto x1 = _Input({1, 3, 64, 64}, NCHW, halide_type_of()); + x1->setName("x1"); + auto y1 = _mobileNetV1Expr(_Convert(x1, NC4HW4), false); + y1->setName("y1"); + auto z = y0 + y1; + z->setName("z"); + buffer = Variable::save({z}); + } + std::vector, std::vector>> inputShapes { + {{1, 3, 32, 32}, {1, 3, 24, 24}}, + {{1, 3, 16, 16}, {1, 3, 24, 24}}, + {{1, 3, 48, 48}, {1, 3, 24, 24}}, + }; + { + // Test For Interpreter API + std::shared_ptr net(Interpreter::createFromBuffer((void*)buffer.data(), buffer.size()), Interpreter::destroy); + ScheduleConfig config; + config.numThread = 1; + net->setSessionMode(Interpreter::Session_Debug); + auto session = net->createSession(config); + auto getResult = [session, net, &inputShapes] { + std::vector resultSummer(inputShapes.size()); + auto x0 = net->getSessionInput(session, "x0"); + auto x1 = net->getSessionInput(session, "x1"); + auto z = net->getSessionOutput(session, "z"); + auto fillInput = [](MNN::Tensor* t, float v) { + std::shared_ptr tensor(new MNN::Tensor(t, t->getDimensionType())); + auto size = tensor->elementSize(); + auto ptr = tensor->host(); + float cv = v; + for (int i=0; icopyFromHostTensor(tensor.get()); + }; + for (int u=0; uresizeTensor(x0, inputShapes[u].first); + net->resizeTensor(x1, inputShapes[u].second); + net->resizeSession(session); + float u0 = (float)x0->elementSize(); + float u1 = (float)x1->elementSize(); + fillInput(x0, 0.0001f * (float)u); + fillInput(x1, 0.0001f * (float)u); + net->runSession(session); + std::shared_ptr tensor(new MNN::Tensor(z, z->getDimensionType())); + z->copyToHostTensor(tensor.get()); + auto size = tensor->elementSize(); + auto resPtr = tensor->host(); + float summer = 0.0f; + float decrate = 1.0f / u0 / u1; + for (int i=0; isetSessionMode(Interpreter::Session_Resize_Check); + auto checkRes = getResult(); + net->setSessionMode(Interpreter::Session_Resize_Fix); + auto fixRes = getResult(); + for (int u=0; u 0.05f || v2error > 0.05f) { + FUNC_PRINT(u); + return false; + } + } + } + return true; + } +}; +MNNTestSuiteRegister(ResizeOptimizationTest, "expr/ResizeOptimizationTest"); + +class WinogradMemoryTest : public MNNTestCase { +public: + float memoryUsed(int level) { + auto y = _mobileNetV1Expr(); + std::unique_ptr net(new NetT); + Variable::save({y}, net.get()); + y = nullptr; + flatbuffers::FlatBufferBuilder builderOutput(1024); + auto len = MNN::Net::Pack(builderOutput, net.get()); + builderOutput.Finish(len); + int sizeOutput = builderOutput.GetSize(); + auto bufferOutput = builderOutput.GetBufferPointer(); + // Force use CPU Runtime + BackendConfig bnConfig; + auto exe = Executor::newExecutor(MNN_FORWARD_CPU, bnConfig, 1); + ExecutorScope scope(exe); + Module::Config config; + config.shapeMutable = false; + std::shared_ptr interp0; + + MNN::ScheduleConfig sconfig; + sconfig.numThread = 1; + std::vector sconfigs = {sconfig}; + auto rtInfo = Express::ExecutorScope::Current()->getRuntime(); + auto rt = rtInfo.first.begin()->second; + std::shared_ptr rtMgr(Executor::RuntimeManager::createRuntimeManager(sconfigs)); + rtMgr->setMode(Interpreter::Session_Memory_Collect); + rtMgr->setHint(Interpreter::WINOGRAD_MEMORY_LEVEL, level); + config.rearrange = false; // When set WINOGRAD_MEMORY_LEVEL=0 to test memory, must set rearrange=false. + interp0.reset(Module::load({"Input"}, {"Prob"}, bufferOutput, sizeOutput, rtMgr, &config), Module::destroy); + float memoryInMB = 0.0f; + rtMgr->getInfo(Interpreter::MEMORY, &memoryInMB); + return memoryInMB; + } + virtual bool run(int precision) { + float mem0 = memoryUsed(0); + float mem3 = memoryUsed(3); + printf("level=0,3: %fMb, %fMb\n", mem0,mem3); + if (mem3 < mem0) { + return false; + } + return true; + } +}; +MNNTestSuiteRegister(WinogradMemoryTest, "expr/WinogradMemoryTest"); diff --git a/test/expr/ZeroShapeTest.cpp b/test/expr/ZeroShapeTest.cpp index 32a80af3c..14577b25f 100644 --- a/test/expr/ZeroShapeTest.cpp +++ b/test/expr/ZeroShapeTest.cpp @@ -13,6 +13,25 @@ #include "TestUtils.h" #include "MNN_generated.h" using namespace MNN::Express; +class ZeroShapeResizeTest : public MNNTestCase { +public: + virtual ~ZeroShapeResizeTest() = default; + virtual bool run(int precision) { + auto input = _Input({1, 1, 4, 1}, NHWC); + input->setName("input"); + input->writeMap(); + auto output = _Reshape(input, {-1}); + auto outputPtr = output->readMap(); + input->resize({1, 0, 4, 1}); + input->writeMap(); + auto info = output->getInfo(); + outputPtr = output->readMap(); + if (info->size != 0) { + return false; + } + return true; + } +}; class ZeroShapeTest : public MNNTestCase { public: virtual ~ZeroShapeTest() = default; @@ -112,6 +131,7 @@ class ZeroShapeTest4 : public MNNTestCase { return true; } }; +MNNTestSuiteRegister(ZeroShapeResizeTest, "expr/zeroshaperesize"); MNNTestSuiteRegister(ZeroShapeTest, "expr/zeroshape"); MNNTestSuiteRegister(ZeroShapeTest2, "expr/zeroshape2"); MNNTestSuiteRegister(ZeroShapeTest3, "expr/zeroshape3"); diff --git a/test/main.cpp b/test/main.cpp index bc341ada8..06462b152 100644 --- a/test/main.cpp +++ b/test/main.cpp @@ -44,7 +44,15 @@ int main(int argc, char* argv[]) { } FUNC_PRINT(thread); FUNC_PRINT(precision); + if (precision > MNN::BackendConfig::Precision_Low_BF16) { + MNN_ERROR("Invalid precision mode, use 0 instead\n"); + precision = 0; + } FUNC_PRINT(memory); + if (memory > MNN::BackendConfig::Memory_Low) { + MNN_ERROR("Invalid memory mode, use 0 instead\n"); + memory = 0; + } MNN::BackendConfig config; config.precision = (MNN::BackendConfig::PrecisionMode)precision; config.memory = (MNN::BackendConfig::MemoryMode)memory; diff --git a/test/op/BinaryOPTest.cpp b/test/op/BinaryOPTest.cpp index 8a6a12387..44ec301a5 100644 --- a/test/op/BinaryOPTest.cpp +++ b/test/op/BinaryOPTest.cpp @@ -464,7 +464,13 @@ class EqualTest : public BinaryTestCommon { {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, {3.0, 4.0}, {0, 0, 1, 1, 0, 0, 0, 0}, - {4, 2}, {2}, {4, 2}); + {4, 2}, {2}, {4, 2}) && + test(MNN::Express::_Equal, "EqualIntTest", 0, + {1, 2, 3, 4, 5, 6, 7, 8}, + {3, 4}, + {0, 0, 1, 1, 0, 0, 0, 0}, + {4, 2}, {2}, {4, 2}); + ; } }; class LessEqualTest : public BinaryTestCommon { @@ -475,7 +481,14 @@ class LessEqualTest : public BinaryTestCommon { {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, {3.0, 4.0}, {1, 1, 1, 1, 0, 0, 0, 0}, - {4, 2}, {2}, {4, 2}); + {4, 2}, {2}, {4, 2}) + && + test(_LessEqual, "LessEqualIntTest", 0, + {1, 2, 3, 4, 5, 6, 7, 8}, + {3, 4}, + {1, 1, 1, 1, 0, 0, 0, 0}, + {4, 2}, {2}, {4, 2}) + ; } }; class FloorModTest : public BinaryTestCommon { @@ -539,7 +552,14 @@ class NotEqualTest : public BinaryTestCommon { {true, false, true, false, false, true, true, false}, {true, false}, {false, false, false, false, true, true, false, false}, - {4, 2}, {2}, {4, 2}); + {4, 2}, {2}, {4, 2}) + && + test(_NotEqual, "NotEqualTest", 0, + {1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0}, + {1.0, 0.0}, + {false, false, false, false, true, true, false, false}, + {4, 2}, {2}, {4, 2}) + ; } }; class BitwiseAndTest : public BinaryTestCommon { diff --git a/test/op/CastTest.cpp b/test/op/CastTest.cpp index 4abb121e5..d7dd9681b 100644 --- a/test/op/CastTest.cpp +++ b/test/op/CastTest.cpp @@ -12,41 +12,150 @@ #include "TestUtils.h" using namespace MNN::Express; + +static bool int32ToInt8() { + auto input = _Input({4, 1, 1, 3}, NHWC, halide_type_of()); + input->setName("input_tensor"); + // set input data + const int inpudata[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; + auto inputPtr = input->writeMap(); + memcpy(inputPtr, inpudata, 12 * sizeof(int32_t)); + input->unMap(); + auto output = _Cast(input); + const std::vector expectedOutput = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; + { + auto gotOutput = output->readMap(); + if (!checkVector(gotOutput, expectedOutput.data(), 12, 0)) { + FUNC_PRINT(1); + for (int i = 0; i < 12; ++i) { + MNN_PRINT("Correct: %d - Compute: %d\n", expectedOutput[i], gotOutput[i]); + } + return false; + } + } + output = _Cast(output); + { + auto gotOutput = output->readMap(); + if (!checkVector(gotOutput, inpudata, 12, 0)) { + FUNC_PRINT(1); + for (int i = 0; i < 12; ++i) { + MNN_PRINT("Correct: %d - Compute: %d\n", inpudata[i], gotOutput[i]); + } + return false; + } + } + return true; +} +static bool int32ToFloat32() { + auto input = _Input({4, 1, 1, 3}, NHWC); + input->setName("input_tensor"); + // set input data + const float inpudata[] = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f}; + auto inputPtr = input->writeMap(); + memcpy(inputPtr, inpudata, 12 * sizeof(float)); + input->unMap(); + auto output = _Cast(input); + const std::vector expectedOutput = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; + { + auto gotOutput = output->readMap(); + if (!checkVector(gotOutput, expectedOutput.data(), 12, 0)) { + FUNC_PRINT(1); + for (int i = 0; i < 12; ++i) { + MNN_PRINT("Correct: %d - Compute: %d\n", expectedOutput[i], gotOutput[i]); + } + return false; + } + } + output = _Cast(output); + { + auto gotOutput = output->readMap(); + if (!checkVector(gotOutput, inpudata, 12, 0.01)) { + FUNC_PRINT(1); + for (int i = 0; i < 12; ++i) { + MNN_PRINT("Correct: %f - Compute: %f\n", inpudata[i], gotOutput[i]); + } + return false; + } + } + return true; +} +static bool int8ToFloat32() { + auto input = _Input({4, 1, 1, 3}, NHWC); + input->setName("input_tensor"); + // set input data + const float inpudata[] = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f}; + auto inputPtr = input->writeMap(); + memcpy(inputPtr, inpudata, 12 * sizeof(float)); + input->unMap(); + auto output = _Cast(input); + const std::vector expectedOutput = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; + { + auto gotOutput = output->readMap(); + if (!checkVector(gotOutput, expectedOutput.data(), 12, 0)) { + FUNC_PRINT(1); + for (int i = 0; i < 12; ++i) { + MNN_PRINT("Correct: %d - Compute: %d\n", expectedOutput[i], gotOutput[i]); + } + return false; + } + } + output = _Cast(output); + { + auto gotOutput = output->readMap(); + if (!checkVector(gotOutput, inpudata, 12, 0.01)) { + FUNC_PRINT(1); + for (int i = 0; i < 12; ++i) { + MNN_PRINT("Correct: %f - Compute: %f\n", inpudata[i], gotOutput[i]); + } + return false; + } + } + return true; +} + +static bool uint8ToFloat32() { + auto input = _Input({4, 1, 1, 3}, NHWC); + input->setName("input_tensor"); + // set input data + const float inpudata[] = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f}; + auto inputPtr = input->writeMap(); + memcpy(inputPtr, inpudata, 12 * sizeof(float)); + input->unMap(); + auto output = _Cast(input); + const std::vector expectedOutput = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; + { + auto gotOutput = output->readMap(); + if (!checkVector(gotOutput, expectedOutput.data(), 12, 0)) { + FUNC_PRINT(1); + for (int i = 0; i < 12; ++i) { + MNN_PRINT("Correct: %d - Compute: %d\n", expectedOutput[i], gotOutput[i]); + } + return false; + } + } + output = _Cast(output); + { + auto gotOutput = output->readMap(); + if (!checkVector(gotOutput, inpudata, 12, 0.01)) { + FUNC_PRINT(1); + for (int i = 0; i < 12; ++i) { + MNN_PRINT("Correct: %f - Compute: %f\n", inpudata[i], gotOutput[i]); + } + return false; + } + } + return true; +} + class CastTest : public MNNTestCase { public: virtual ~CastTest() = default; virtual bool run(int precision) { - auto input = _Input({4, 1, 1, 3}, NHWC); - input->setName("input_tensor"); - // set input data - const float inpudata[] = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f}; - auto inputPtr = input->writeMap(); - memcpy(inputPtr, inpudata, 12 * sizeof(float)); - input->unMap(); - auto output = _Cast(input); - const std::vector expectedOutput = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; - { - auto gotOutput = output->readMap(); - if (!checkVector(gotOutput, expectedOutput.data(), 12, 0)) { - MNN_ERROR("CastTest test failed!\n"); - for (int i = 0; i < 12; ++i) { - MNN_PRINT("Correct: %d - Compute: %d\n", expectedOutput[i], gotOutput[i]); - } - return false; - } - } - output = _Cast(output); - { - auto gotOutput = output->readMap(); - if (!checkVector(gotOutput, inpudata, 12, 0.01)) { - MNN_ERROR("CastTest test failed!\n"); - for (int i = 0; i < 12; ++i) { - MNN_PRINT("Correct: %f - Compute: %f\n", inpudata[i], gotOutput[i]); - } - return false; - } - } - return true; + auto res = int8ToFloat32(); + res = res && int32ToFloat32(); + res = res && int32ToInt8(); + res = res && uint8ToFloat32(); + return res; } }; MNNTestSuiteRegister(CastTest, "op/cast"); diff --git a/test/op/ConvolutionTest.cpp b/test/op/ConvolutionTest.cpp index 52f89d5c4..8cc334624 100644 --- a/test/op/ConvolutionTest.cpp +++ b/test/op/ConvolutionTest.cpp @@ -14,7 +14,7 @@ #include #include "MNNTestSuite.h" #include "MNN_generated.h" -#include "TestUtils.h" +#include "CommonOpCreator.hpp" #include "core/Session.hpp" #include "core/TensorUtils.hpp" #include "common/MemoryFormater.h" @@ -87,20 +87,6 @@ static void reference_conv2d(const std::vector& input, const std::vector< } } -static PadMode _convertPadMode(PaddingMode mode) { - switch (mode) { - case CAFFE: - return PadMode_CAFFE; - case VALID: - return PadMode_VALID; - case SAME: - return PadMode_SAME; - default: - break; - } - return PadMode_CAFFE; -} - VARP _Conv(VARP weight, VARP bias, VARP x, PaddingMode pad = VALID, INTS stride = {1, 1}, INTS dilate = {1, 1}, int group = 1, INTS pads = {0, 0}, MNN::SparseAlgo sparseAlgo = MNN::SparseAlgo_RANDOM, int sparseBlockOC = 1, bool sparse = false) { std::unique_ptr convOp(new OpT); @@ -526,6 +512,205 @@ class SparseConvolutionCommonTest : public ConvolutionCommonTest { } }; +class ConvolutionInt8CommonTest : public ConvolutionCommonTest { +public: + virtual ~ConvolutionInt8CommonTest() = default; + virtual bool run (int precision) { + return true; + } + +public: + virtual void generateWeight(std::vector& weightData, int ic, int oc, int kh, int kw, int dilation, int group, int sparseBlockOC) { + auto numbers = group * (oc / group) * (ic / group) * kw * kh; + weightData.resize(numbers); + float rate = 1.0f; + if (numbers > 10000) { + // Avoid exceed fp16 + rate = 0.01f; + } + for (int ri = 0; ri < numbers; ri++) { + int i = numbers - ri; + auto data = ((((i / kw)% 1317) * ((i / kh) % 1317)) % 1317 + i / ic + i / oc + (((oc - i) % 1317) * ic) % 1317 + i * ((oc - i) % 1317)) % 1317; + auto floatData = (float)(data % 255) / 255.0f / 1000.0f * rate; + weightData[ri] = data; + } + } + ConvolutionInt8CommonTest& speed() { + mBenchSpeed = true; + return *this; + } + + bool testUnit(MNNForwardType type, const std::string& device_name, const std::string& test_op_name, int batch, + int ic, int oc, int ih, int iw, PadMode mode, int pad_h, int pad_w, int kh, int kw, int stride, + int dilation, int group, int precision, MNN::SparseAlgo sparseAlgo = MNN::SparseAlgo_RANDOM, int sparseBlockOC = 1, bool debug = false, int nbit = 8, bool async = false) { + using namespace MNN::Express; + std::map padMap = { + {PadMode_CAFFE, CAFFE}, {PadMode_VALID, VALID}, {PadMode_SAME, SAME}}; + std::vector weightData, biasData; + + generateWeight(weightData, ic, oc, kh, kw, dilation, group, sparseBlockOC); + + for (int i = 0; i < oc; i++) { + auto data = (((i / kw) % 1317) * ((i / kh) % 1317) + i / ic + i / oc + (oc - i) * ic + i * (oc - i)) % 1317; + auto floatData = (float)(data % 255) / 255.0f; + data = data * data; + biasData.push_back(floatData); + // biasData.push_back(0.0f); + } + + std::vector inputData, outputData, outputDataSeparateBias; + float rate = 1.0f; + if (ih * iw * ic * batch > 10000) { + // Avoid exceed fp16 limit + rate = 0.01f; + } + for (int i = 0; i < ih * iw * ic * batch; ++i) { + auto data = ((i / kw) % 1317) * ((i / kh) % 1317) + ((i / ic)% 1317) * ((i / oc) % 1317) + ((oc - i) % 1317) * ic + (i % 1317) * ((oc - i) % 1317); + data = data % 1317; + data = (data * data) % 1317; + auto floatData = (float)(data % 255) / 255.0f * rate; + inputData.push_back(floatData); + } + float fac = 1.23; + int res = 10; + float tail = 0.2; + float threshold = (float)(1 << (nbit - 1)) - 1.0f; + float clampMin = -threshold; + if (async) { + clampMin = -threshold - 1; + } + int kernel_size = ic * kw * kh; + std::vector quantWeight(oc*ic*kw*kh); + std::vector wScale; + if (async) { + + wScale.resize(2 * oc); + for (int k = 0; k < oc; ++k) { + int beginIndex = k * kernel_size; + auto minMax = findMinMax(weightData.data() + beginIndex, kernel_size); + auto minValue = minMax.first; + wScale[2*k] = minMax.first; + auto absMax = minMax.second - minMax.first; + wScale[2*k+1] = absMax / (threshold - clampMin); + float scale = 0.0f; + if (absMax >= 0.000001f) { + scale = 1.0f / wScale[2*k+1]; + } + float* ptr = weightData.data() + beginIndex; + for (int i = 0; i < kernel_size; ++i) { + int8_t quantValue = int8_t(std::round((ptr[i] - minValue) * scale + clampMin)); + float floatValue = ((float)quantValue - clampMin) * wScale[2*k+1] + minValue; + quantWeight[k * kernel_size + i] = quantValue; + ptr[i] = floatValue; + } + } + } else { + wScale.resize(oc); + for (int k = 0; k < oc; ++k) { + int beginIndex = k * kernel_size; + auto absMax = findAbsMax(weightData.data() + beginIndex, kernel_size); + wScale[k] = absMax / threshold; + + float* ptr = weightData.data() + beginIndex; + for (int i = 0; i < kernel_size; ++i) { + int8_t quantVal = (int8_t)(fmax(fmin(round(ptr[i] / wScale[k]), threshold), clampMin)); + quantWeight[k * kernel_size + i] = quantVal; + ptr[i] = (float)quantVal * wScale[k]; + } + } + } + reference_conv2d(inputData, weightData, biasData, outputData, outputDataSeparateBias, batch, ic, oc, ih, iw, mode, pad_h, pad_w, kh, kw, + stride, dilation, group, FP32Converter[precision]); + if (outputData.size() == 0) { + return true; + } + + auto input = _Input({batch, ic, ih, iw}, NCHW, halide_type_of()); + ::memcpy(input->writeMap(), inputData.data(), inputData.size() * sizeof(float)); + // Single Conv + auto weightLength = weightData.size(); + auto output = _HybridConv(weightData, std::move(biasData), std::move(wScale), input, + {ic, oc}, {kw, kh}, padMap[mode], {stride, stride}, {dilation, dilation}, group, {pad_w, pad_h}, false, false, nbit, async); + + // difference below 0.5% relative error is considered correct. + auto outputPtr = output->readMap(); + + if (debug) { + MNN_PRINT("\ndata NCHW shape:"); + printDims(input->getInfo()->dim); + MNN_PRINT("\nweight OIHW shape:"); + printDims({oc, ic, kh, kw}); + MNN_PRINT("\noutput NCHW shape:"); + printDims(output->getInfo()->dim); + MNN_PRINT("\nexpected output:"); + formatMatrix(outputData.data(), output->getInfo()->dim); + MNN_PRINT("\nexpected output 2:"); + formatMatrix(outputDataSeparateBias.data(), output->getInfo()->dim); + MNN_PRINT("\nreal output:"); + formatMatrix(outputPtr, output->getInfo()->dim); + } + // when using low precision, im2col or strassen convolution error rate to reference value is about 1e-4, winograd has larger error rate. + + float errorScale = 1.0f; + if (nbit == 4 && weightLength > 10000) { + errorScale = 50.0f; + } + if (precision > MNN::BackendConfig::Precision_High) { + errorScale = 100.0f; + } + if (!checkVectorByRelativeError(outputPtr, outputData.data(), outputDataSeparateBias.data(), outputData.size(), 0.001 * errorScale)) { + MNN_PRINT("precision:%d, expect:\t expect2:\t real:\t\n", precision); + for (int i = 0; i < outputData.size(); ++i) + { + MNN_PRINT("%f\t, %f\t, %f\n", outputData[i],outputDataSeparateBias[i], outputPtr[i]); + } + MNN_ERROR("%s(%s) test failed for %d bits, async=%d !\n", test_op_name.c_str(), device_name.c_str(), nbit, async); + return false; + } + + + if (mBenchSpeed) { + int oh = output->getInfo()->dim[2], ow = output->getInfo()->dim[3]; + input.fix(VARP::INPUT); + MNN::Timer _t; + const int LOOP = 20; + for (int i = 0; i < LOOP; ++i) { + input->writeMap(); + output->readMap(); + } + auto time = (float)_t.durationInUs() / 1000.0f; + MNN_PRINT("ConvInt8Weight kernel=(%dx%d) input=(1x%dx%dx%d) output=(1x%dx%dx%d) stride=(%dx%d), avg time = %f\n", + kh, kw, ic, ih, iw, oc, oh, ow, stride, stride, 1.0 * time / LOOP); + } + return true; + } + bool test(MNNForwardType type, const std::string& device_name, const std::string& test_op_name, int batch, + int ic, int oc, int ih, int iw, PadMode mode, int pad_h, int pad_w, int kh, int kw, int stride, + int dilation, int group, int precision, MNN::SparseAlgo sparseAlgo = MNN::SparseAlgo_RANDOM, int sparseBlockOC = 1, bool debug = false) { + auto res = testUnit(type, device_name, test_op_name, batch, ic, oc, ih, iw, mode, pad_h, pad_w, kh, kw, stride, dilation, group, precision, sparseAlgo, sparseBlockOC, debug, 8, true); + if (!res) { + FUNC_PRINT(1); + return res; + } + res = res && testUnit(type, device_name, test_op_name, batch, ic, oc, ih, iw, mode, pad_h, pad_w, kh, kw, stride, dilation, group, precision, sparseAlgo, sparseBlockOC, debug, 8, false); + if (!res) { + FUNC_PRINT(1); + return res; + } + res = res && testUnit(type, device_name, test_op_name, batch, ic, oc, ih, iw, mode, pad_h, pad_w, kh, kw, stride, dilation, group, precision, sparseAlgo, sparseBlockOC, debug, 4, true); + if (!res) { + FUNC_PRINT(1); + return res; + } + res = res && testUnit(type, device_name, test_op_name, batch, ic, oc, ih, iw, mode, pad_h, pad_w, kh, kw, stride, dilation, group, precision, sparseAlgo, sparseBlockOC, debug, 4, false); + if (!res) { + FUNC_PRINT(1); + return res; + } + return res; + } +}; + template class ConvolutionSpeedTest : public ConvolutionType { public: @@ -663,6 +848,15 @@ class ConvolutionTestOnCPU : public DenseConvolutionTest { } }; +using DenseConvolutionInt8Test = ConvolutionTest; +class ConvolutionInt8Test : public DenseConvolutionInt8Test { +public: + ~ConvolutionInt8Test() = default; + virtual bool run(int precision) { + return DenseConvolutionInt8Test::test(MNN_FORWARD_CPU, "CPU", precision, MNN::SparseAlgo_RANDOM, {1}); + } +}; + using DenseConvolutionSpeedTest = ConvolutionSpeedTest; class ConvolutionSpeedTestOnCPU : public DenseConvolutionSpeedTest { public: @@ -793,6 +987,7 @@ class GroupConvolutionTestOnCPU : public GroupConvolutionTest { }; MNNTestSuiteRegister(ConvolutionTestOnCPU, "op/convolution/conv2d"); +MNNTestSuiteRegister(ConvolutionInt8Test, "op/convolution/weighti8i4conv2d"); MNNTestSuiteRegister(ConvolutionSpeedTestOnCPU, "speed/convolution/conv2d"); MNNTestSuiteRegister(SparseConvolutionTestOnCPU, "op/convolution/sparse_conv2d"); MNNTestSuiteRegister(DepthwiseConvolutionTest, "op/convolution/depthwise_conv"); diff --git a/test/op/Im2ColTest.cpp b/test/op/Im2ColTest.cpp index 8f78ecf47..28c5aad7b 100644 --- a/test/op/Im2ColTest.cpp +++ b/test/op/Im2ColTest.cpp @@ -49,7 +49,11 @@ class Im2ColTest : public MNNTestCase { 8.500000, 8.700000, 9.300000, 9.500000 }; auto gotOutput = output->readMap(); - if (!checkVector(gotOutput, expectedOutput.data(), 96, 0)) { + float thredhold = 0.0001f; + if (precision >= 2) { + thredhold = 0.05f; + } + if (!checkVector(gotOutput, expectedOutput.data(), 96, thredhold)) { MNN_ERROR("Im2ColTest test failed!\n"); return false; } @@ -97,7 +101,11 @@ class Col2ImTest : public MNNTestCase { 9.000000, 9.400000, 9.100000, 9.500000 }; auto gotOutput = output->readMap(); - if (!checkVector(gotOutput, expectedOutput.data(), 96, 0)) { + float thredhold = 0.0001f; + if (precision >= 2) { + thredhold = 0.05f; + } + if (!checkVector(gotOutput, expectedOutput.data(), 96, thredhold)) { MNN_ERROR("Col2ImTest test failed!\n"); return false; } diff --git a/test/op/LayerNormTest.cpp b/test/op/LayerNormTest.cpp index 7e74cc88f..427f3dbea 100644 --- a/test/op/LayerNormTest.cpp +++ b/test/op/LayerNormTest.cpp @@ -14,7 +14,7 @@ using namespace MNN; using namespace MNN::Express; -VARP _LayerNorm(VARP x, std::vector axis, float epsilon, std::vector gamma, std::vector beta) { +VARP _LayerNorm(VARP x, std::vector axis, float epsilon, std::vector gamma, std::vector beta, int group = 1) { std::unique_ptr op(new OpT); op->main.type = OpParameter_LayerNorm; op->type = OpType_LayerNorm; @@ -27,6 +27,7 @@ VARP _LayerNorm(VARP x, std::vector axis, float epsilon, std::vectormain.AsLayerNorm()->epsilon = epsilon; op->main.AsLayerNorm()->axis = axis; + op->main.AsLayerNorm()->group = group; return (Variable::create(Expr::create(std::move(op), {x}))); } @@ -441,6 +442,36 @@ class LayerNormTest : public MNNTestCase { return false; } } + { + std::vector dims = {1, 2, 1, 4}; + auto input = _Input(dims, NCHW); + // set input data + const float inpudata[] = {-1.0, -2.0, 3.0, 4.0, -5.0, -6.0, 7.0, 8.0}; + auto inputPtr = input->writeMap(); + memcpy(inputPtr, inpudata, 8 * sizeof(float)); + std::vector axis = {}; + float eps = 1.00f; + int group = 2; + auto output = _LayerNorm(input, axis, eps, {}, {}, group); + std::vector expectedOutput(8); + + int axis_size = (int)axis.size(); + int rank = (int)dims.size(); + int outter_size = group * dims[0]; + int inner_size = 1; + for (int i = 1; i < rank; ++i) { + inner_size *= dims[i]; + } + inner_size /= group; + _refLayerNorm(expectedOutput.data(), inpudata, nullptr,nullptr, eps, inner_size, outter_size); + auto gotOutput = output->readMap(); + float errorScale = precision <= MNN::BackendConfig::Precision_High ? 1 : 1000; + if (!checkVectorByRelativeError(gotOutput, expectedOutput.data(), 8, 1e-5 * errorScale)) { + MNN_ERROR("Float LayerNormTest without gamma beta axis = %d test failed!\n", axis_size); + return false; + } + } + return true; } }; diff --git a/test/op/UnaryTest.cpp b/test/op/UnaryTest.cpp index a4ef27978..fc25cf33d 100644 --- a/test/op/UnaryTest.cpp +++ b/test/op/UnaryTest.cpp @@ -559,18 +559,25 @@ class AbsTest : public UnaryTestCommon { public: virtual ~AbsTest() = default; virtual bool run(int precision) { - return test(MNN::Express::_Abs, "AbsTest", 0.01, + auto res = test(MNN::Express::_Abs, "AbsTest", 0.01, {-1.0, -2.0, 3.0, 4.0, -1.0, -2.0, 3.0, 4.0}, {1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0, 4.0}, {8}, {8}); + return res && test(MNN::Express::_Abs, "AbsTest", 0, + {-1, -2, 3, 4, -1, -2, 3, 4}, {1, 2, 3, 4, 1, 2, 3, 4}, + {8}, {8}); } }; class NegativeTest : public UnaryTestCommon { public: virtual ~NegativeTest() = default; virtual bool run(int precision) { - return test(_Negative, "NegativeTest", 0.01, + auto res = test(_Negative, "NegativeTest", 0.01, {-1.0, -2.0, 3.0, 4.0, -1.0, -2.0, 3.0, 4.0}, {1.0, 2.0, -3.0, -4.0, 1.0, 2.0, -3.0, -4.0}, {8}, {8}); + return res && test(MNN::Express::_Negative, "NegativeTest", 0, + {-1, -2, 3, 4, -1, -2, 3, 4}, {1, 2, -3, -4, 1, 2, -3, -4}, + {8}, {8}); + } }; class FloorTest : public UnaryTestCommon { @@ -595,9 +602,12 @@ class SquareTest : public UnaryTestCommon { public: virtual ~SquareTest() = default; virtual bool run(int precision) { - return test(_Square, "SquareTest", 0.01, + auto res = test(_Square, "SquareTest", 0.01, {-1.0, -2.0, 3.0, 4.0, -1.0, -2.0, 3.0, 4.0}, {1.0, 4.0, 9.0, 16.0, 1.0, 4.0, 9.0, 16.0}, {8}, {8}); + return res && test(_Square, "SquareTest", 0, + {-1, -2, 3, 4, -1, -2, 3, 4}, {1, 4, 9, 16, 1, 4, 9, 16}, + {8}, {8}); } }; class SqrtTest : public UnaryTestCommon { @@ -774,9 +784,12 @@ class SignTest : public UnaryTestCommon { public: virtual ~SignTest() = default; virtual bool run(int precision) { - return test(_Sign, "SignTest", 0.01, + auto res = test(_Sign, "SignTest", 0.01, {-1.2, 0., 0.4, 1.6}, {-1., 0., 1., 1.}, {4}, {4}); + return res && test(_Sign, "SignTest", 0, + {-1, 0, 2, 1}, {-1, 0, 1, 1}, + {4}, {4}); } }; class CoshTest : public UnaryTestCommon { @@ -843,6 +856,30 @@ class GeluTest : public UnaryTestCommon { {10}, {10}); } }; +static VARP _GeluStand(VARP x) { + flatbuffers::FlatBufferBuilder builder(MNN_DEFAULT_FLATBUFFER_SIZE); + UnaryOpBuilder parameter(builder); + parameter.add_opType(UnaryOpOperation_GELU_STANDARD); + auto paOffset = parameter.Finish(); + OpBuilder opB(builder); + opB.add_main(paOffset.Union()); + opB.add_type(OpType_UnaryOp); + opB.add_main_type(OpParameter_UnaryOp); + builder.Finish(opB.Finish()); + std::shared_ptr extra(new BufferStorage); + extra->storage = builder.ReleaseRaw(extra->allocated_size, extra->offset); + return Variable::create(Expr::create(extra, {x}, 1)); +} +class GeluStandTest : public UnaryTestCommon { +public: + virtual ~GeluStandTest() = default; + virtual bool run(int precision) { + return test(_GeluStand, "GeluStandardTest", 0.01, + {-4.914062, -1.1126, 1.5541, -0.9805, 1.5448, 0.1681, 0.5264, -0.6206, -0.1101, 0.3287, -0.0688}, + {-0, -0.1479, 1.4607, -0.1602, 1.4503, 0.0952, 0.3689, -0.1660, -0.0502, 0.2067, -0.0325}, + {10}, {10}); + } +}; /* Unary Int8 test*/ class AbsTestInt8 : public UnaryTestCommon { public: @@ -1171,6 +1208,7 @@ MNNTestSuiteRegister(ErfinvTest, "op/unary/erfinv"); MNNTestSuiteRegister(Expm1Test, "op/unary/expm1"); MNNTestSuiteRegister(SinhTest, "op/unary/sinh"); MNNTestSuiteRegister(GeluTest, "op/unary/gelu"); +MNNTestSuiteRegister(GeluStandTest, "op/unary/gelustandard"); MNNTestSuiteRegister(AbsTestInt8, "op/unary/absInt8"); MNNTestSuiteRegister(SignTestInt8, "op/unary/signInt8"); MNNTestSuiteRegister(NegativeTestInt8, "op/unary/negativeInt8"); diff --git a/test/speed/HybridConvSpeedTest.cpp b/test/speed/HybridConvSpeedTest.cpp index 4a9e5d6d6..43c1b4ce2 100644 --- a/test/speed/HybridConvSpeedTest.cpp +++ b/test/speed/HybridConvSpeedTest.cpp @@ -11,78 +11,10 @@ #include "MNNTestSuite.h" #include #include -#include "MNN_generated.h" -#include "TestUtils.h" +#include "CommonOpCreator.hpp" using namespace MNN::Express; using namespace MNN; -static PadMode _convertPadMode(PaddingMode mode) { - switch (mode) { - case CAFFE: - return PadMode_CAFFE; - case VALID: - return PadMode_VALID; - case SAME: - return PadMode_SAME; - default: - break; - } - return PadMode_CAFFE; -} -static VARP _HybridConv(std::vector&& weight, std::vector&& bias, std::vector&& alpha, VARP x, INTS channel, INTS kernelSize, - PaddingMode pad, INTS stride, INTS dilate, int group, INTS pads, bool relu, bool relu6, int nbits) { - std::unique_ptr convOp(new OpT); - convOp->type = OpType_Convolution; - convOp->main.type = OpParameter_Convolution2D; - convOp->main.value = new Convolution2DT; - auto conv2D = convOp->main.AsConvolution2D(); - conv2D->common.reset(new Convolution2DCommonT); - conv2D->symmetricQuan.reset(new QuantizedFloatParamT); - conv2D->common->padMode = _convertPadMode(pad); - if (pads.size() == 2) { - conv2D->common->padX = pads[0]; - conv2D->common->padY = pads[1]; - } else { - conv2D->common->pads = std::move(pads); - } - conv2D->common->strideX = stride[0]; - conv2D->common->strideY = stride[1]; - conv2D->common->group = group; - conv2D->common->outputCount = channel[1]; - conv2D->common->inputCount = channel[0]; - conv2D->common->dilateX = dilate[0]; - conv2D->common->dilateY = dilate[1]; - conv2D->common->kernelX = kernelSize[0]; - conv2D->common->kernelY = kernelSize[1]; - conv2D->common->relu6 = relu6; - conv2D->common->relu = relu; - conv2D->quanParameter.reset(new IDSTQuanT); - if (nbits == 8) { - conv2D->quanParameter->type = 4; - } else { - conv2D->quanParameter->type = 1; - } - conv2D->quanParameter->buffer = std::move(weight); - conv2D->quanParameter->alpha = std::move(alpha); - conv2D->quanParameter->quantScale = 1.0f; - conv2D->weight.clear(); - MNN_ASSERT(bias.size() == channel[1]); - conv2D->bias = std::move(bias); - return (Variable::create(Expr::create(convOp.get(), {x}))); -} - -static float findAbsMax(const float *weights, const int count) { - float absMax = fabs(weights[0]); - for (int i = 1; i < count; i++) { - float value = fabs(weights[i]); - if (value > absMax) { - absMax = value; - } - } - - return absMax; -} - class HybridConvSpeedTestCommon : public MNNTestCase { protected: static bool testKernel(std::string title, INTS inputShape, INTS kernel, INTS channel, INTS pad, INTS strides, INTS dilate, int batch = 1, int nbit = 8, int precision = 1, bool testSpeed = false) { @@ -93,7 +25,6 @@ class HybridConvSpeedTestCommon : public MNNTestCase { int iw = inputShape[0], ih = inputShape[1]; std::vector bias(oc), biastest(oc), biasdup(oc); int area = kernel[0] * kernel[1]; - std::vector quantWeight(oc * ic * area); std::vector weightFp32(oc * ic * area); std::vector wScale(oc); @@ -121,15 +52,9 @@ class HybridConvSpeedTestCommon : public MNNTestCase { int beginIndex = k * kernel_size; auto absMax = findAbsMax(weightFp32.data() + beginIndex, kernel_size); wScale[k] = absMax / threshold; - - for (int i = 0; i < kernel_size; ++i) { - float* ptr = weightFp32.data() + beginIndex; - int8_t quantVal = static_cast(ptr[i] / wScale[k]); - quantWeight[k * kernel_size + i] = quantVal; - } } - auto y = _HybridConv(std::move(quantWeight), std::move(bias), std::move(wScale), x, - channel, kernel, PaddingMode::CAFFE, strides, dilate, 1, pad, false, false, nbit); + auto y = _HybridConv(weightFp32, std::move(bias), std::move(wScale), x, + channel, kernel, PaddingMode::CAFFE, strides, dilate, 1, pad, false, false, nbit, false); auto yfp32 = _Conv(std::move(weightFp32), std::move(biasdup), x, {ic, oc}, kernel, PaddingMode::CAFFE, strides, dilate, 1, pad); if (nbit != 8) { diff --git a/test/speed/RasterSpeed.cpp b/test/speed/RasterSpeed.cpp index 91b9f8d61..646b43441 100644 --- a/test/speed/RasterSpeed.cpp +++ b/test/speed/RasterSpeed.cpp @@ -81,7 +81,7 @@ class RasterSpeed : public MNNTestCase { des->regions.push_back(region); } else { backend->onAcquireBuffer(tensor, Backend::STATIC); - TensorUtils::getDescribe(tensor)->setBackend(backend.get()); + TensorUtils::getDescribeOrigin(tensor)->setBackend(backend.get()); } } auto middle = tensors[1].get(); diff --git a/tools/converter/CMakeLists.txt b/tools/converter/CMakeLists.txt index a1d506dc8..af11eed51 100644 --- a/tools/converter/CMakeLists.txt +++ b/tools/converter/CMakeLists.txt @@ -33,7 +33,7 @@ IF(MNN_BUILD_CONVERTER) include(${CMAKE_CURRENT_LIST_DIR}/source/torch/CMakeLists.txt) endif() - file(GLOB COMMON_SRC ${CMAKE_CURRENT_LIST_DIR}/source/common/*.cpp) + file(GLOB COMMON_SRC ${CMAKE_CURRENT_LIST_DIR}/source/common/*.cpp ${CMAKE_CURRENT_LIST_DIR}/source/common/*.h ${CMAKE_CURRENT_LIST_DIR}/source/common/*.hpp) add_executable(MNNConvert ${CMAKE_CURRENT_LIST_DIR}/source/MNNConverter.cpp ) diff --git a/tools/converter/include/config.hpp b/tools/converter/include/config.hpp index 88c968614..b5ada4f79 100644 --- a/tools/converter/include/config.hpp +++ b/tools/converter/include/config.hpp @@ -10,7 +10,7 @@ #define CONFIG_HPP #include #include - +#include class MNN_PUBLIC modelConfig { public: modelConfig() @@ -19,7 +19,6 @@ class MNN_PUBLIC modelConfig { modelFile(), bizCode("MNN"), model(modelConfig::MAX_SOURCE), - benchmarkModel(false), saveHalfFloat(false){ } enum MODEL_SOURCE { TENSORFLOW = 0, CAFFE, ONNX, MNN, TFLITE, TORCH, JSON, MAX_SOURCE }; @@ -36,11 +35,10 @@ class MNN_PUBLIC modelConfig { std::string inputConfigFile; // model source MODEL_SOURCE model; - bool benchmarkModel; bool saveHalfFloat; bool forTraining = false; int weightQuantBits = 0;// If weightQuantBits > 0, it means the bit - bool weightQuantAsymmetric = false; + bool weightQuantAsymmetric = true; // The path of the model compression file that stores the int8 calibration table // or sparse parameters. std::string compressionParamsFile = ""; @@ -49,7 +47,7 @@ class MNN_PUBLIC modelConfig { float targetVersion = (float)MNN_VERSION_MAJOR + (float)MNN_VERSION_MINOR * 0.1f; int defaultBatchSize = 0; int optimizeLevel = 1; - bool keepInputFormat = false; + bool keepInputFormat = true; bool alignDenormalizedValue = true; bool detectSparseSpeedUp = true; bool convertMatmulToConv = true; diff --git a/tools/converter/source/TestConvertResult.cpp b/tools/converter/source/TestConvertResult.cpp index 707c0d5bb..89651d3ee 100644 --- a/tools/converter/source/TestConvertResult.cpp +++ b/tools/converter/source/TestConvertResult.cpp @@ -41,6 +41,7 @@ int main(int argc, char *argv[]) { modelPath.modelFile = modelNameOs.str(); modelPath.MNNModel = defaultCacheFile; modelPath.keepInputFormat = true; + modelPath.saveExternalData = true; MNN::Cli::convertModel(modelPath); } return MNN::Cli::testconvert(defaultCacheFile, directName, 0.01f, configFile); diff --git a/tools/converter/source/common/AddSparseInfo.cpp b/tools/converter/source/common/AddSparseInfo.cpp index 25df4cadd..7097bc7a9 100644 --- a/tools/converter/source/common/AddSparseInfo.cpp +++ b/tools/converter/source/common/AddSparseInfo.cpp @@ -102,14 +102,3 @@ void AddSparseInfo(std::unique_ptr& op, Compression::Pipeline proto) { break; } }; - -void addSparseInfo(std::unique_ptr& netT, MNN::Compression::Pipeline proto) { - for (auto& op : netT->oplists) { - AddSparseInfo(op, proto); - } - for (auto& subgraph : netT->subgraphs) { - for (auto& op : subgraph->nodes) { - AddSparseInfo(op, proto); - } - } -} diff --git a/tools/converter/source/common/AlignDenormalizedValue.cpp b/tools/converter/source/common/AlignDenormalizedValue.cpp index 34360a9bf..65e6179df 100644 --- a/tools/converter/source/common/AlignDenormalizedValue.cpp +++ b/tools/converter/source/common/AlignDenormalizedValue.cpp @@ -45,15 +45,3 @@ void AlignDenormalizedValue(std::unique_ptr& op) { } }; - -void AlignDenormalizedValue(std::unique_ptr& netT) { - for (auto& op : netT->oplists) { - AlignDenormalizedValue(op); - } - for (auto& subgraph : netT->subgraphs) { - for (auto& op : subgraph->nodes) { - AlignDenormalizedValue(op); - } - } -} - diff --git a/tools/converter/source/common/CommonUtils.hpp b/tools/converter/source/common/CommonUtils.hpp index 79178c0fb..f774fe72c 100644 --- a/tools/converter/source/common/CommonUtils.hpp +++ b/tools/converter/source/common/CommonUtils.hpp @@ -14,17 +14,17 @@ #include "config.hpp" #include "MNN_compression.pb.h" #include +#include "../source/core/FileLoader.hpp" void converToStaticModel(const MNN::Net* net, std::map>& inputConfig, std::string mnnFile); -void removeParams(std::unique_ptr& netT); void RemoveAndStoreParam(std::unique_ptr& op, std::ofstream* fs, int64_t& offset); -bool saveExternalData(std::unique_ptr& netT, const std::string& extraFileName); -bool loadExternalData(std::unique_ptr& netT, const char* extraFileName); -void castParamsToHalf(std::unique_ptr& netT); -void AlignDenormalizedValue(std::unique_ptr& netT); -void addSparseInfo(std::unique_ptr& netT, MNN::Compression::Pipeline proto); +void loadExternalParam(std::unique_ptr& op, MNN::FileLoader* fl); +void CastParamsToHalf(std::unique_ptr& op); +void AlignDenormalizedValue(std::unique_ptr& op); +void AddSparseInfo(std::unique_ptr& op, MNN::Compression::Pipeline proto); void fullQuantAndCoding(std::unique_ptr& netT, MNN::Compression::Pipeline proto); -void weightQuantAndCoding(std::unique_ptr& netT, const modelConfig& config); +void WeightQuantAndCoding(std::unique_ptr& op, const modelConfig& config); + void addUUID(std::unique_ptr& netT, MNN::Compression::Pipeline proto); void channelPruneConvert(std::unique_ptr& netT, MNN::Compression::Pipeline proto); diff --git a/tools/converter/source/common/RemoveParams.cpp b/tools/converter/source/common/RemoveParams.cpp index e441e4a6a..a979bc74c 100644 --- a/tools/converter/source/common/RemoveParams.cpp +++ b/tools/converter/source/common/RemoveParams.cpp @@ -7,88 +7,50 @@ // #include "CommonUtils.hpp" -#include "../source/core/FileLoader.hpp" #include -auto RemoveParams = [](std::unique_ptr& op) { - const auto opType = op->type; - switch (opType) { - case MNN::OpType_Convolution: - case MNN::OpType_Deconvolution: - case MNN::OpType_ConvolutionDepthwise: { - auto param = op->main.AsConvolution2D(); - param->weight.clear(); - param->bias.clear(); - break; - } - case MNN::OpType_TfQuantizedConv2D: { - auto param = op->main.AsTfQuantizedConv2D(); - param->weight.clear(); - param->bias.clear(); - break; - } - case MNN::OpType_MatMul: { - auto param = op->main.AsMatMul(); - param->weight.clear(); - param->bias.clear(); - break; - } - case MNN::OpType_BatchNorm: { - auto param = op->main.AsBatchNorm(); - param->slopeData.clear(); - param->meanData.clear(); - param->varData.clear(); - param->biasData.clear(); - param->Adata.clear(); - param->Bdata.clear(); - break; - } - case MNN::OpType_Scale: { - auto param = op->main.AsScale(); - param->scaleData.clear(); - param->biasData.clear(); - break; - } - case MNN::OpType_LayerNorm: { - auto param = op->main.AsLayerNorm(); - param->gamma.clear(); - param->beta.clear(); - } - default: - break; - } -}; template -static void storeWeight(std::ofstream* fs, std::vector& weight, std::vector& external, int64_t& offset) { +static void storeWeight(std::ofstream* fs, std::vector& weight, std::vector& external, int64_t& offset, bool check = true) { + if (weight.empty() && check) { + return; + } if (external.empty()) { external.push_back(offset); } int64_t size = weight.size() * sizeof(T); fs->write(reinterpret_cast(weight.data()), size); weight.clear(); + std::vector empty; + weight.swap(empty); external.push_back(size); offset += size; } void RemoveAndStoreParam(std::unique_ptr& op, std::ofstream* fs, int64_t& offset) { - const auto opType = op->type; + if (!op->externalPath.empty()) { + return; + } + const auto opType = op->main.type; switch (opType) { - case MNN::OpType_Convolution: - case MNN::OpType_Deconvolution: - case MNN::OpType_ConvolutionDepthwise: + case MNN::OpParameter_Convolution2D: { + if (op->inputIndexes.size() > 1) { + break; + } auto param = op->main.AsConvolution2D(); if (param->quanParameter) { - storeWeight(fs, param->quanParameter->buffer, param->external, offset); - storeWeight(fs, param->quanParameter->alpha, param->external, offset); + storeWeight(fs, param->quanParameter->buffer, param->external, offset, false); + storeWeight(fs, param->quanParameter->alpha, param->external, offset, false); + storeWeight(fs, param->bias, param->external, offset, false); + storeWeight(fs, param->quanParameter->index, param->external, offset, false); } else { storeWeight(fs, param->weight, param->external, offset); storeWeight(fs, param->bias, param->external, offset); } break; } - case MNN::OpType_Scale: { + case MNN::OpParameter_Scale: { auto param = op->main.AsScale(); storeWeight(fs, param->scaleData, param->external, offset); if (!param->biasData.empty()) { @@ -96,7 +58,7 @@ void RemoveAndStoreParam(std::unique_ptr& op, std::ofstream* fs, int64 } break; } - case MNN::OpType_LayerNorm: { + case MNN::OpParameter_LayerNorm: { auto param = op->main.AsLayerNorm(); if (!param->gamma.empty() && !param->beta.empty()) { storeWeight(fs, param->gamma, param->external, offset); @@ -104,8 +66,7 @@ void RemoveAndStoreParam(std::unique_ptr& op, std::ofstream* fs, int64 } break; } - case MNN::OpType_TrainableParam: - case MNN::OpType_Const: { + case MNN::OpParameter_Blob: { auto param = op->main.AsBlob(); size_t totalSize = 1; for (auto dim : param->dims) { @@ -140,17 +101,6 @@ void RemoveAndStoreParam(std::unique_ptr& op, std::ofstream* fs, int64 } } -void removeParams(std::unique_ptr& netT) { - for (auto& op : netT->oplists) { - RemoveParams(op); - } - for (auto& subgraph : netT->subgraphs) { - for (auto& op : subgraph->nodes) { - RemoveParams(op); - } - } -} - bool saveExternalData(std::unique_ptr& netT, const std::string& extraFileName) { std::ofstream extraFile(extraFileName, std::ios::binary); if (!extraFile.is_open()) { @@ -170,12 +120,20 @@ bool saveExternalData(std::unique_ptr& netT, const std::string& extra } template -static void loadExternalData(MNN::FileLoader& fl, std::vector& data, int64_t size) { +static void loadExternalData(MNN::FileLoader* fl, std::vector& data, int64_t size) { + if (0 == size) { + return; + } data.resize(size / sizeof(T)); - fl.read(reinterpret_cast(data.data()), size); + fl->read(reinterpret_cast(data.data()), size); } -void loadExternalParam(std::unique_ptr& op, MNN::FileLoader& fl) { +void loadExternalParam(std::unique_ptr& op, MNN::FileLoader* fl) { + std::unique_ptr flp; + if (!op->externalPath.empty()) { + flp.reset(new MNN::FileLoader(op->externalPath.c_str())); + fl = flp.get(); + } const auto opType = op->type; switch (opType) { case MNN::OpType_Convolution: @@ -186,10 +144,16 @@ void loadExternalParam(std::unique_ptr& op, MNN::FileLoader& fl) { if (param->external.size() != 3) { return; } - fl.offset(param->external[0]); + fl->offset(param->external[0]); if (param->quanParameter) { loadExternalData(fl, param->quanParameter->buffer, param->external[1]); loadExternalData(fl, param->quanParameter->alpha, param->external[2]); + if (param->external.size() > 3) { + loadExternalData(fl, param->bias, param->external[3]); + } + if (param->external.size() > 4) { + loadExternalData(fl, param->quanParameter->index, param->external[4]); + } } else { loadExternalData(fl, param->weight, param->external[1]); loadExternalData(fl, param->bias, param->external[2]); @@ -215,7 +179,7 @@ void loadExternalParam(std::unique_ptr& op, MNN::FileLoader& fl) { for (auto dim : param->dims) { totalSize *= dim; } - fl.offset(param->external[0]); + fl->offset(param->external[0]); switch (param->dataType) { case MNN::DataType_DT_FLOAT: loadExternalData(fl, param->float32s, param->external[1]); @@ -238,17 +202,5 @@ void loadExternalParam(std::unique_ptr& op, MNN::FileLoader& fl) { default: break; } + op->externalPath.clear(); } - -bool loadExternalData(std::unique_ptr& netT, const char* extraFileName) { - MNN::FileLoader fileloader(extraFileName); - for (auto& op : netT->oplists) { - loadExternalParam(op, fileloader); - } - for (auto& subgraph : netT->subgraphs) { - for (auto& op : subgraph->nodes) { - loadExternalParam(op, fileloader); - } - } - return true; -} \ No newline at end of file diff --git a/tools/converter/source/common/SaveHalfFloat.cpp b/tools/converter/source/common/SaveHalfFloat.cpp index 3de1bc4b0..182313a65 100644 --- a/tools/converter/source/common/SaveHalfFloat.cpp +++ b/tools/converter/source/common/SaveHalfFloat.cpp @@ -66,14 +66,3 @@ void CastParamsToHalf(std::unique_ptr& op) { break; } }; - -void castParamsToHalf(std::unique_ptr& netT) { - for (auto& op : netT->oplists) { - CastParamsToHalf(op); - } - for (auto& subgraph : netT->subgraphs) { - for (auto& op : subgraph->nodes) { - CastParamsToHalf(op); - } - } -} diff --git a/tools/converter/source/common/WeightQuantAndCoding.cpp b/tools/converter/source/common/WeightQuantAndCoding.cpp index d61c331ae..9e29bcd14 100644 --- a/tools/converter/source/common/WeightQuantAndCoding.cpp +++ b/tools/converter/source/common/WeightQuantAndCoding.cpp @@ -98,7 +98,7 @@ void WeightQuantAndCoding(std::unique_ptr& op, const modelConfig& conf case MNN::OpType_ConvolutionDepthwise: case MNN::OpType_Deconvolution: case MNN::OpType_DeconvolutionDepthwise: { - weightData = param->weight; + weightData = std::move(param->weight); if (asymmetricQuantFlag) { scales.resize(kernelNum*2); @@ -155,8 +155,10 @@ void WeightQuantAndCoding(std::unique_ptr& op, const modelConfig& conf param->symmetricQuan->weight.clear(); param->quanParameter->alpha = {1.0f}; // fake scales } else { - param->quanParameter = IDSTEncoder::encode(weightData.data(), scales, kernelSize, kernelNum, asymmetricQuantFlag, quantWeights.data(), int(clampMin), bits); + param->quanParameter = IDSTEncoder::encode(weightData.data(), scales, kernelSize, kernelNum, asymmetricQuantFlag, quantWeights.data(), int(clampMin), bits, config.detectSparseSpeedUp); param->weight.clear(); + std::vector empty; + param->weight.swap(empty); } }; diff --git a/tools/converter/source/common/cli.cpp b/tools/converter/source/common/cli.cpp index 01533a929..33660788e 100644 --- a/tools/converter/source/common/cli.cpp +++ b/tools/converter/source/common/cli.cpp @@ -420,11 +420,6 @@ bool Cli::initializeMNNConvertArgs(modelConfig &modelPath, int argc, char **argv modelPath.inputConfigFile = inputConfigFile; } - // benchmarkModel - if (result.count("benchmarkModel")) { - modelPath.benchmarkModel = true; - modelPath.bizCode = "benchmark"; - } // half float if (result.count("fp16")) { modelPath.saveHalfFloat = true; @@ -436,7 +431,7 @@ bool Cli::initializeMNNConvertArgs(modelConfig &modelPath, int argc, char **argv modelPath.defaultBatchSize = result["batch"].as(); } if (result.count("keepInputFormat")) { - modelPath.keepInputFormat = true; + modelPath.keepInputFormat = result["keepInputFormat"].as(); } if (result.count("weightQuantBits")) { modelPath.weightQuantBits = result["weightQuantBits"].as(); @@ -730,6 +725,9 @@ int Cli::testconvert(const std::string& defaultCacheFile, const std::string& dir std::shared_ptr rtmgr(MNN::Express::Executor::RuntimeManager::createRuntimeManager(config)); rtmgr->setExternalFile("./convert_cache.mnn.weight"); std::shared_ptr net(MNN::Express::Module::load(inputNames, outputNames, defaultCacheFile.c_str(), rtmgr, &mConfig)); + std::shared_ptr net2; + net2.reset(MNN::Express::Module::clone(net.get())); + net = net2; auto mInfo = net->getInfo(); std::vector inputs(mInfo->inputs.size()); #define LOAD_DATA(TYPE)\ diff --git a/tools/converter/source/common/convertToStaticModel.cpp b/tools/converter/source/common/convertToStaticModel.cpp index 102600186..bfce390cf 100644 --- a/tools/converter/source/common/convertToStaticModel.cpp +++ b/tools/converter/source/common/convertToStaticModel.cpp @@ -10,6 +10,7 @@ #include #include "MNN_generated.h" #include "core/TensorUtils.hpp" +#include "core/FileLoader.hpp" #include "utils/InitNet.hpp" #include "core/Command.hpp" #include "shape/SizeComputer.hpp" @@ -312,7 +313,7 @@ void converToStaticModel(const Net* net, std::map>& std::vector> allTensors; allTensors.resize(net->tensorName()->size()); ErrorCode code = NO_ERROR; - initConstTensors(allTensors, net, defaultBackend.get(), code); + initConstTensors(allTensors, net, defaultBackend.get(), code, nullptr); if (NO_ERROR != code) { MNN_ERROR("Init tensor error code = %d\n", code); return; @@ -335,7 +336,7 @@ void converToStaticModel(const Net* net, std::map>& // resize the session's info and store to buffer std::vector constTensors; GeometryComputerUtils::buildConstantTensors(infos); - GeometryComputerUtils::shapeComputeAndGeometryTransform(infos, ctx, defaultBackend, runtime->onGetCompilerType()); + GeometryComputerUtils::shapeComputeAndGeometryTransform(nullptr, infos, ctx, defaultBackend, runtime->onGetCompilerType()); std::map> tensorName; for (int i = 0; i < net->tensorName()->size(); i++) { tensorName[allTensors[i].get()] = std::make_pair(net->tensorName()->GetAsString(i)->str(), i); diff --git a/tools/converter/source/common/writeFb.cpp b/tools/converter/source/common/writeFb.cpp index c4cc32f14..e46b50a7e 100644 --- a/tools/converter/source/common/writeFb.cpp +++ b/tools/converter/source/common/writeFb.cpp @@ -26,6 +26,66 @@ using namespace MNN; using namespace std; +static void _postTreatOp(std::unique_ptr& op, FileLoader* fl, MNN::Compression::Pipeline proto, const modelConfig& config, std::ofstream& weightPath, int64_t& offset, bool needExternalWeight) { + loadExternalParam(op, fl); + if (config.alignDenormalizedValue) { + AlignDenormalizedValue(op); + } + if (config.saveHalfFloat) { + CastParamsToHalf(op); + } + if (config.detectSparseSpeedUp) { + AddSparseInfo(op, proto); + } + WeightQuantAndCoding(op, config); + if (needExternalWeight) { + RemoveAndStoreParam(op, &weightPath, offset); + } +} +static float _computeOpExternalSizeInMB(const MNN::OpT* op) { + switch (op->main.type) { + case MNN::OpParameter_Convolution2D: + { + auto conv2D = op->main.AsConvolution2D(); + if (conv2D->external.empty()) { + return 0.0f; + } + return ((float)conv2D->external[1] + (float)conv2D->external[2]) / 1024.0f / 1024.0f; + } + case MNN::OpParameter_Blob: + { + auto blob = op->main.AsBlob(); + if (blob->external.empty()) { + return 0.0f; + } + return blob->external[1] / 1024.0f / 1024.0f; + } + + default: + break; + } + return 0.0f; +} +static bool _largeModel(const MNN::NetT* netT) { + float summer = 0.0f; + for (auto& op : netT->oplists) { + summer+= _computeOpExternalSizeInMB(op.get()); + if (summer > 2000.0f) { + MNN_PRINT("Model larger than 2GB\n"); + return true; + } + } + for (auto& subgraph : netT->subgraphs) { + for (auto& op : subgraph->nodes) { + summer+= _computeOpExternalSizeInMB(op.get()); + if (summer > 2000.0f) { + MNN_PRINT("Model larger than 2GB\n"); + return true; + } + } + } + return false; +} int writeFb(std::unique_ptr& netT, const std::string& MNNModelFile, const modelConfig& config) { std::string compressFileName = config.compressionParamsFile; Compression::Pipeline proto; @@ -52,33 +112,42 @@ int writeFb(std::unique_ptr& netT, const std::string& MNNModelFile, c netT->extraInfo->name = config.authCode; } - if (1) { - // load external data for some change - loadExternalData(netT, ".__convert_external_data.bin"); - } - - if (config.benchmarkModel) { - removeParams(netT); - } if (config.compressionParamsFile != "") { channelPruneConvert(netT, proto); } - if (config.saveHalfFloat) { - castParamsToHalf(netT); + if (config.compressionParamsFile != "") { + fullQuantAndCoding(netT, proto); } - if (config.alignDenormalizedValue) { - AlignDenormalizedValue(netT); + // Check If need external weight + bool needExternalWeight = config.saveExternalData; + if (!needExternalWeight) { + needExternalWeight = _largeModel(netT.get()); } - if (config.detectSparseSpeedUp) { - addSparseInfo(netT, proto); + std::ofstream externalWeightOs; + if (needExternalWeight) { + auto weightName = MNNModelFile + ".weight"; + MNN_PRINT("Save Weight to %s\n", weightName.c_str()); + externalWeightOs.open(weightName.c_str()); + if (externalWeightOs.fail()) { + MNN_PRINT("Write %s failed\n", weightName.c_str()); + } } - if (config.compressionParamsFile != "") { - fullQuantAndCoding(netT, proto); + { + int64_t offset = 0; + FileLoader fl(".__convert_external_data.bin"); + for (auto& op : netT->oplists) { + _postTreatOp(op, &fl, proto, config, externalWeightOs, offset, needExternalWeight); + } + for (auto& subgraph : netT->subgraphs) { + for (auto& op : subgraph->nodes) { + _postTreatOp(op, &fl, proto, config, externalWeightOs, offset, needExternalWeight); + } + } + } + { + std::ofstream erase(".__convert_external_data.bin"); + erase << "0"; } - - weightQuantAndCoding(netT, config); - - std::set notSupportOps; auto CheckIfNotSupported = [&] (const std::unique_ptr& op) { if (op->type == MNN::OpType_Extra) { @@ -140,12 +209,6 @@ int writeFb(std::unique_ptr& netT, const std::string& MNNModelFile, c flatbuffers::FlatBufferBuilder builderOutput(1024); builderOutput.ForceDefaults(true); - if (config.saveExternalData) { - bool res = saveExternalData(netT, MNNModelFile + ".weight"); - if (!res) { - LOG(FATAL) << "Write Weight to External Data Failed."; - } - } auto len = MNN::Net::Pack(builderOutput, netT.get()); builderOutput.Finish(len); int sizeOutput = builderOutput.GetSize(); diff --git a/tools/converter/source/onnx/ConstantOnnx.cpp b/tools/converter/source/onnx/ConstantOnnx.cpp index b06e1e967..33b59737f 100644 --- a/tools/converter/source/onnx/ConstantOnnx.cpp +++ b/tools/converter/source/onnx/ConstantOnnx.cpp @@ -50,7 +50,7 @@ void ConstantOnnx::run(MNN::OpT *dstOp, const onnx::NodeProto *onnxNode, OnnxSco } } if (type == 0) { - dstOp->main.value = convertTensorToBlob(constantTp); + dstOp->main.value = convertTensorToBlob(constantTp, scope->mModelDir, dstOp); } else { auto blob = new MNN::BlobT; blob->dataFormat = MNN::MNN_DATA_FORMAT_NCHW; diff --git a/tools/converter/source/onnx/DynamicOnnx.cpp b/tools/converter/source/onnx/DynamicOnnx.cpp new file mode 100644 index 000000000..2d3815f2f --- /dev/null +++ b/tools/converter/source/onnx/DynamicOnnx.cpp @@ -0,0 +1,24 @@ +// +// CastOnnx.cpp +// MNNConverter +// +// Created by MNN on 2019/10/28. +// Copyright © 2018, Alibaba Group Holding Limited +// + +#include "onnxOpConverter.hpp" + +DECLARE_OP_CONVERTER(DynamicQuantOnnx); + +MNN::OpType DynamicQuantOnnx::opType() { + return MNN::OpType_DynamicQuant; +} +MNN::OpParameter DynamicQuantOnnx::type() { + return MNN::OpParameter_NONE; +} + +void DynamicQuantOnnx::run(MNN::OpT *dstOp, const onnx::NodeProto *onnxNode, + OnnxScope* scope) { +} + +REGISTER_CONVERTER(DynamicQuantOnnx, DynamicQuantizeLinear); diff --git a/tools/converter/source/onnx/onnxConverter.cpp b/tools/converter/source/onnx/onnxConverter.cpp index 764726ddb..12e789f86 100644 --- a/tools/converter/source/onnx/onnxConverter.cpp +++ b/tools/converter/source/onnx/onnxConverter.cpp @@ -48,8 +48,12 @@ int onnx2MNNNet(const std::string inputModel, const std::string bizCode, const auto& onnxGraph = onnxModel.graph(); const int nodeCount = onnxGraph.node_size(); + if (0 == nodeCount) { + MNN_ERROR("[ERROR] Invalid ONNX Model:%s\n", inputModel.c_str()); + return 1; + } - std::unique_ptr scope(new OnnxScope(&onnxGraph, netT.get())); + std::unique_ptr scope(new OnnxScope(&onnxGraph, netT.get(), modelDir)); scope->mOpsetVersion = opsetVersion; // find the inputs which do not have initializer const auto& initializers = scope->mInitializers; @@ -96,7 +100,7 @@ int onnx2MNNNet(const std::string inputModel, const std::string bizCode, MNN::OpT* constOp = new MNN::OpT; constOp->type = MNN::OpType_Const; constOp->main.type = MNN::OpParameter_Blob; - constOp->main.value = onnxOpConverter::convertTensorToBlob(it->second, modelDir); + constOp->main.value = onnxOpConverter::convertTensorToBlob(it->second, modelDir, constOp); constOp->name = it->first; constOp->outputIndexes.push_back(scope->declareTensor(it->first)); netT->oplists.emplace_back(constOp); diff --git a/tools/converter/source/onnx/onnxOpConverter.cpp b/tools/converter/source/onnx/onnxOpConverter.cpp index 0fbab20c9..f5878172e 100644 --- a/tools/converter/source/onnx/onnxOpConverter.cpp +++ b/tools/converter/source/onnx/onnxOpConverter.cpp @@ -110,7 +110,7 @@ class DefaultonnxOpConverter : public onnxOpConverter { } break; case onnx::AttributeProto_AttributeType_TENSOR: - attr->tensor.reset(convertTensorToBlob(&srcAttr.t())); + attr->tensor.reset(convertTensorToBlob(&srcAttr.t(), scope->mModelDir, dstOp)); break; default: break; @@ -189,7 +189,22 @@ MNN::DataType onnxOpConverter::convertDataType(int32_t itype) { } return MNN::DataType_DT_INVALID; } -MNN::BlobT* onnxOpConverter::convertTensorToBlob(const onnx::TensorProto* constantTp, const std::string& modelDir) { +static bool _needConvert(int onnxDataType) { + switch (onnxDataType) { + case onnx::TensorProto_DataType_FLOAT: + case onnx::TensorProto_DataType_FLOAT16: + case onnx::TensorProto_DataType_BFLOAT16: + case onnx::TensorProto_DataType_INT32: + case onnx::TensorProto_DataType_UINT8: + case onnx::TensorProto_DataType_INT8: + return false; + + default: + break; + } + return true; +} +MNN::BlobT* onnxOpConverter::convertTensorToBlob(const onnx::TensorProto* constantTp, const std::string& modelDir, MNN::OpT* op) { auto constantParam = new MNN::BlobT; auto dataType = convertDataType(constantTp->data_type()); // printf("origindataType = %d, dataType = %s\n", constantTp->data_type(), MNN::EnumNameDataType(dataType)); @@ -199,7 +214,7 @@ MNN::BlobT* onnxOpConverter::convertTensorToBlob(const onnx::TensorProto* consta size_t dimSize = constantTp->dims().size(); constantParam->dims.resize(dimSize); - size_t dataSize = 1; + int64_t dataSize = 1; for (int i = 0; i < dimSize; ++i) { constantParam->dims[i] = constantTp->dims(i); dataSize = dataSize * constantTp->dims(i); @@ -221,7 +236,6 @@ MNN::BlobT* onnxOpConverter::convertTensorToBlob(const onnx::TensorProto* consta if (!modelDir.empty()) { location = modelDir + location; } - auto fp = fopen(location.c_str(), "rb"); if (fp == nullptr) { DLOG(FATAL) << "Fail to open external data: " << location; @@ -232,8 +246,16 @@ MNN::BlobT* onnxOpConverter::convertTensorToBlob(const onnx::TensorProto* consta length = ftell(fp) - offset; } fseek(fp, offset, SEEK_SET); - alignContent.resize((length + sizeof(int64_t) - 1) / sizeof(int64_t)); - fread(alignContent.data(), 1, length, fp); + if (_needConvert(constantTp->data_type())) { + alignContent.resize((length + sizeof(int64_t) - 1) / sizeof(int64_t)); + fread(alignContent.data(), 1, length, fp); + } else { + op->externalPath = location; + constantParam->external = { + offset, length + }; + dataSize = 0; + } fclose(fp); } else { alignContent.resize((constantTp->raw_data().size() + sizeof(int64_t) - 1) / sizeof(int64_t)); @@ -504,7 +526,7 @@ std::vector OnnxScope::buildSubGraph(const onnx::GraphProto* graph, MNN::OpT* constOp = new MNN::OpT; constOp->type = MNN::OpType_Const; constOp->main.type = MNN::OpParameter_Blob; - constOp->main.value = onnxOpConverter::convertTensorToBlob(it->second); + constOp->main.value = onnxOpConverter::convertTensorToBlob(it->second, mModelDir, constOp); constOp->name = it->first; constOp->outputIndexes.push_back(scope->declareTensor(it->first)); subgraph->nodes.emplace_back(constOp); diff --git a/tools/converter/source/onnx/onnxOpConverter.hpp b/tools/converter/source/onnx/onnxOpConverter.hpp index 702c8e112..d70ce69d5 100644 --- a/tools/converter/source/onnx/onnxOpConverter.hpp +++ b/tools/converter/source/onnx/onnxOpConverter.hpp @@ -20,9 +20,9 @@ class OnnxScope : public ConverterScope { public: static std::vector topoSort(const onnx::GraphProto& onnxGraph); - OnnxScope(const onnx::GraphProto* graph, MNN::NetT* net) : mGraph(graph), ConverterScope(net) { onnxInit(); } + OnnxScope(const onnx::GraphProto* graph, MNN::NetT* net, const std::string& modelDir) : mGraph(graph), ConverterScope(net) { onnxInit(); mModelDir = modelDir;} OnnxScope(const onnx::GraphProto* graph, MNN::SubGraphProtoT* subnet, MNN::NetT* net, - OnnxScope* parent) : mGraph(graph), ConverterScope(subnet, net, parent) { onnxInit(); } + OnnxScope* parent) : mGraph(graph), ConverterScope(subnet, net, parent) { onnxInit(); mModelDir = parent->mModelDir;} std::pair buildTensorArrayOp(std::vector element_shape, bool identical, const std::string& name, int init_size = 1); void buildAccumulate(const std::string& name, const std::string& uName, const std::string& iName, const std::string& oName); // Return extra input needed from subgraph @@ -35,6 +35,7 @@ class OnnxScope : public ConverterScope { std::map mInputs; std::map mOutputs; int mOpsetVersion; + std::string mModelDir; private: // onnx graph and infos const onnx::GraphProto* mGraph; @@ -50,14 +51,9 @@ class onnxOpConverter { virtual void run(MNN::OpT* dstOp, const onnx::NodeProto* onnxNode, OnnxScope* scope) = 0; virtual MNN::OpParameter type() = 0; virtual MNN::OpType opType() = 0; - std::vector>& getSubGraphs() { - return _subgraphs; - } static MNN::DataType convertDataType(int32_t type); - static MNN::BlobT* convertTensorToBlob(const onnx::TensorProto* tensor, const std::string& modelDir = ""); + static MNN::BlobT* convertTensorToBlob(const onnx::TensorProto* tensor, const std::string& modelDir, MNN::OpT* op); // static std::unique_ptr buildSubGraph(const onnx::GraphProto* graph, std::string& name); -protected: - std::vector> _subgraphs; }; class onnxOpConverterSuit { diff --git a/tools/converter/source/optimizer/PostConverter.cpp b/tools/converter/source/optimizer/PostConverter.cpp index 19c3de40c..97bd8ec39 100644 --- a/tools/converter/source/optimizer/PostConverter.cpp +++ b/tools/converter/source/optimizer/PostConverter.cpp @@ -18,6 +18,8 @@ #include "GenerateSubGraph.hpp" #include "TemplateMerge.hpp" #include "core/Backend.hpp" +#include "RuntimeAttr.hpp" + #include //#define MNN_POST_CONVERTER_DEBUG @@ -211,10 +213,11 @@ std::unique_ptr RunMergePass(std::unique_ptr& originNet, std::unique_ptr optimizeNetImpl(std::unique_ptr& originNet, const std::unordered_map& inputs) { - ExecutorScope::Current()->lazyEval = true; - ExecutorScope::Current()->setLazyComputeMode(Executor::LAZY_FULL); - auto rtInfo = ExecutorScope::Current()->getRuntime(); - rtInfo.second->setExternalFile(".__convert_external_data.bin"); + auto current = ExecutorScope::Current(); + current->lazyEval = true; + current->setLazyComputeMode(Executor::LAZY_FULL); + current->getAttr()->externalFile = ".__convert_external_data.bin"; + auto* ctx = Global::Get(); MNN_ASSERT(ctx != nullptr); diff --git a/tools/converter/source/optimizer/TemplateMerge.cpp b/tools/converter/source/optimizer/TemplateMerge.cpp index 0f316d73b..4cdfeb537 100644 --- a/tools/converter/source/optimizer/TemplateMerge.cpp +++ b/tools/converter/source/optimizer/TemplateMerge.cpp @@ -10,6 +10,7 @@ #include #include #include +#include namespace MNN { namespace Express { @@ -161,6 +162,7 @@ bool TemplateMerge::onExecute(const std::vector& outputs, PassPriority pri } } } + MNN::Express::ExecutorScope::Current()->gc(); } while (hasChange); return true; } diff --git a/tools/converter/source/optimizer/merge/ConstantFolding.cpp b/tools/converter/source/optimizer/merge/ConstantFolding.cpp index 70b09284a..2c28c9797 100644 --- a/tools/converter/source/optimizer/merge/ConstantFolding.cpp +++ b/tools/converter/source/optimizer/merge/ConstantFolding.cpp @@ -10,6 +10,7 @@ #include "MNN/expr/ExprCreator.hpp" #include "MNN_generated.h" #include "MergeHelpers.hpp" +#include "Utils.hpp" namespace MNN { namespace Express { @@ -56,6 +57,7 @@ ConstantFolding::ConstantFolding() { const_var->setName(expr->name()); EXPRP constant = const_var->expr().first; constant->setName(expr->name()); + expr->inside()->mCache = nullptr; Expr::replace(expr, constant); } else { // TODO(): Support multiple outputs. diff --git a/tools/converter/source/optimizer/merge/ConvDeQuantizeLinearFuseToConvInt8.cpp b/tools/converter/source/optimizer/merge/ConvDeQuantizeLinearFuseToConvInt8.cpp index b18f3c46e..849063dff 100644 --- a/tools/converter/source/optimizer/merge/ConvDeQuantizeLinearFuseToConvInt8.cpp +++ b/tools/converter/source/optimizer/merge/ConvDeQuantizeLinearFuseToConvInt8.cpp @@ -377,6 +377,10 @@ static auto gRegister = []() { // convInt8->(relu)->quant->cast->dequant->convIn if (nullptr == expr->get()) { return false; } + if (expr->get()->type() == OpType_Const || expr->get()->type() == OpType_TrainableParam) { + return false; + } + int inputs_size = static_cast(expr->inputs().size()); for (int i = 0; i < inputs_size; ++i) { if (!matchConvInt8ToOther(expr, i) && !matchOtherToOther(expr, i)) { @@ -411,6 +415,9 @@ static auto gRegister = []() { // convInt8->(relu)->quant->cast->dequant->convIn if (nullptr == expr->get()) { return false; } + if (expr->get()->type() == OpType_Const || expr->get()->type() == OpType_TrainableParam) { + return false; + } // check op type is Int8ToFloat. if (expr->get()->type() != OpType_Int8ToFloat) { return false; diff --git a/tools/converter/source/optimizer/merge/ConvertMatMulToConv2D.cpp b/tools/converter/source/optimizer/merge/ConvertMatMulToConv2D.cpp index 8994664ae..0330a7342 100644 --- a/tools/converter/source/optimizer/merge/ConvertMatMulToConv2D.cpp +++ b/tools/converter/source/optimizer/merge/ConvertMatMulToConv2D.cpp @@ -139,6 +139,7 @@ ConvertMatMulToConv2D::ConvertMatMulToConv2D() { weight->expr().first->inside()->mCache = nullptr; return false; } + weight->expr().first->inside()->mCache = nullptr; int limitNumber = 4; if (config->optimizePrefer == 1) { // Smallest @@ -165,6 +166,7 @@ ConvertMatMulToConv2D::ConvertMatMulToConv2D() { bias->expr().first->inside()->mCache = nullptr; return false; } + bias->expr().first->inside()->mCache = nullptr; } return true; }; @@ -200,11 +202,14 @@ ConvertMatMulToConv2D::ConvertMatMulToConv2D() { info = weight->getInfo(); const_cast(info)->syncSize(); bool needSqueezeA = false; + bool inputShapeUnknow = false; if (input->getInfo() != nullptr) { if (input->getInfo()->dim.size() <= 1) { input = _Unsqueeze(input, {0}); needSqueezeA = true; } + } else { + inputShapeUnknow = true; } if (needSqueezeA && needSqueezeB) { MNN_ERROR("Invalid MatMul for one-dimension A and B\n"); @@ -228,6 +233,14 @@ ConvertMatMulToConv2D::ConvertMatMulToConv2D() { dense->symmetricQuan.reset(new QuantizedFloatParamT); dense->symmetricQuan->nbits = 8; std::vector scale_1(num_output, 1.0); + if (expr->inputs().size() == 3 && expr->inputs()[2]->getInfo()) { + MNN_ASSERT(expr->inputs()[2]->getInfo()->dim[0] == num_output); + if (!helpers::IsConstant(expr->inputs()[2]->expr().first) || !expr->inputs()[2]->readMap()) { + MNN_ERROR("matmul convert to conv2d fail: In dynamic quant for Matmul, weight scale must be constant."); + return false; + } + ::memcpy(scale_1.data(), expr->inputs()[2]->readMap(), num_output * sizeof(float)); + } dense->symmetricQuan->clampMin = -1; dense->symmetricQuan->clampMax = -1; dense->symmetricQuan->zeroPoint = 0; @@ -239,8 +252,6 @@ ConvertMatMulToConv2D::ConvertMatMulToConv2D() { if (weightDataPtr) { // Weight is a const node. if (false == convertToConvInt8) { - dense->weight.resize(info->size); - memcpy(dense->weight.data(), weightDataPtr, info->size * sizeof(float)); dense->bias.resize(num_output); if (expr->inputs().size() == 3) { // bias is a const node. auto bias = expr->inputs()[2]; @@ -253,6 +264,23 @@ ConvertMatMulToConv2D::ConvertMatMulToConv2D() { } else { std::fill(dense->bias.begin(), dense->bias.end(), 0.0f); } + if (config->externalFile && info->size >= config->externalTreshold) { + dense->external.emplace_back(config->externalOffset); + int64_t size = info->size * sizeof(float); + config->externalFile->write(reinterpret_cast(weightDataPtr), size); + config->externalOffset += size; + dense->external.emplace_back(size); + size = dense->bias.size() * sizeof(float); + config->externalFile->write(reinterpret_cast(dense->bias.data()), size); + config->externalOffset += size; + dense->external.emplace_back(size); + dense->bias.clear(); + std::vector empty; + dense->bias.swap(empty); + } else { + dense->weight.resize(info->size); + memcpy(dense->weight.data(), weightDataPtr, info->size * sizeof(float)); + } } else { dense->symmetricQuan->weight.resize(info->size); memcpy(dense->symmetricQuan->weight.data(), weightDataPtr, info->size * sizeof(int8_t)); @@ -280,8 +308,18 @@ ConvertMatMulToConv2D::ConvertMatMulToConv2D() { inputL.fix(VARP::CONSTANT); auto outputH = _Unsqueeze(_Scalar(num_output), {0}); outputH.fix(VARP::CONSTANT); + VARP remainBegin; + VARP inputELength; + if (inputShapeUnknow) { + remainBegin = _Minimum(_Scalar(2), rank); + inputELength = remainBegin - _Scalar(1); + } else { + remainBegin = _Scalar(2); + inputELength = _Scalar(1); + } + auto rankRemain = _Unsqueeze(rank - remainBegin, {0}); VARP inputE; - VARP inputRemain = _StridedSlice(inputShape, _Unsqueeze(_Scalar(0), {0}), _Unsqueeze(rank - _Scalar(2), {0}), _Unsqueeze(_Scalar(1), {0}), 0, 0, 0, 0, 0); + VARP inputRemain = _Slice(inputShape, _Unsqueeze(_Scalar(0), {0}), rankRemain); if (transposeA) { inputE = _Slice(inputShape, _Unsqueeze(rank - _Scalar(1), {0}), _Unsqueeze(_Scalar(1), {0})); if (format == MNN_DATA_FORMAT_NHWC) { @@ -290,16 +328,13 @@ ConvertMatMulToConv2D::ConvertMatMulToConv2D() { input = _ReshapeF(input, _Concat({_Unsqueeze(_Scalar(-1), {0}), inputL, inputE, _Unsqueeze(_Scalar(1), {0})}, 0), format); } } else { - inputE = _Slice(inputShape, _Unsqueeze(rank - _Scalar(2), {0}), _Unsqueeze(_Scalar(1), {0})); + inputE = _Slice(inputShape, rankRemain, _Unsqueeze(inputELength, {0})); if (format == MNN_DATA_FORMAT_NHWC) { input = _ReshapeF(input, _Concat({_Unsqueeze(_Scalar(-1), {0}), _Unsqueeze(_Scalar(1), {0}), _Unsqueeze(_Scalar(1), {0}), inputL}, 0), format); } else { input = _ReshapeF(input, _Concat({_Unsqueeze(_Scalar(-1), {0}), inputL, _Unsqueeze(_Scalar(1), {0}), _Unsqueeze(_Scalar(1), {0})}, 0), format); } } - if (config->externalFile && info->size >= config->externalTreshold) { - RemoveAndStoreParam(dense_op, config->externalFile, config->externalOffset); - } EXPRP dense_expr; if (convertToConvInt8) { dense_expr = Expr::create(dense_op.get(), {input}, 1); diff --git a/tools/converter/source/optimizer/merge/FuseLayerNormRMS.cpp b/tools/converter/source/optimizer/merge/FuseLayerNormRMS.cpp new file mode 100644 index 000000000..10672ca1b --- /dev/null +++ b/tools/converter/source/optimizer/merge/FuseLayerNormRMS.cpp @@ -0,0 +1,119 @@ +// +// FuseLayerNorm.cpp +// MNNConverter +// +// Created by MNN on 2024/01/29. +// Copyright © 2018, Alibaba Group Holding Limited +// + +#include + +#include "../TemplateMerge.hpp" +#include "MNN/expr/ExprCreator.hpp" +#include "MNN_generated.h" +#include "MergeHelpers.hpp" + +namespace MNN { +namespace Express { + +static bool loadAxisFromReduction(EXPRP mean_3, std::vector& axis_var_) { + if (mean_3->inputs().size() > 1) { + EXPRP axis = mean_3->inputs().at(1)->expr().first; + auto axis_var = mean_3->inputs().at(1); + if (!helpers::IsConstant(axis)) { + return false; + } + auto info = axis_var->getInfo(); + auto dim = axis_var->readMap(); + axis_var_.resize(info->size); + ::memcpy(axis_var_.data(), dim, info->size * sizeof(int)); + } else { + auto reduc = mean_3->get()->main_as_ReductionParam(); + if (nullptr == reduc) { + return false; + } + if (reduc->dim() == nullptr) { + return false; + } + axis_var_.resize(reduc->dim()->size()); + ::memcpy(axis_var_.data(), reduc->dim()->data(), reduc->dim()->size() * sizeof(int)); + } + return true; +} + +class FuseLayerNormRMS { +public: + FuseLayerNormRMS(); + +private: + std::vector axis_var_; + VARP x_var_; + VARP epsilon_var_; +}; + +FuseLayerNormRMS::FuseLayerNormRMS() { + auto match = [this](EXPRP expr) -> bool { + if (!expr->get() || !helpers::IsBinaryMul(expr)) { + return false; + } + EXPRP rsqrt = expr->inputs().at(1)->expr().first; + if(helpers::IsBinaryRealDiv(rsqrt)){ + rsqrt = rsqrt->inputs().at(1)->expr().first; + if (!helpers::IsUnarySqrt(rsqrt)) { + return false; + } + } else if (!helpers::IsUnaryRsqrt(rsqrt)) { + return false; + } + EXPRP add = rsqrt->inputs().at(0)->expr().first; + if (!helpers::IsBinaryAdd(add)) { + return false; + } + EXPRP mean = add->inputs().at(0)->expr().first; + EXPRP epsilon = add->inputs().at(1)->expr().first; + if (!helpers::IsReductionMean(mean) || !helpers::IsConstant(epsilon)) { + return false; + } + auto axisLoad = loadAxisFromReduction(mean, axis_var_); + if (!axisLoad) { + return false; + } + EXPRP pow = mean->inputs().at(0)->expr().first; + if (!helpers::IsBinaryPow(pow)) { + return false; + } + VARP x_var = pow->inputs().at(0); + if (expr->inputs().at(0).get() != x_var.get()) { + return false; + } + + // Cache the variables to build layer normalization. + x_var_ = x_var; + epsilon_var_ = add->inputs().at(1); + return true; + }; + + auto fold = [this](EXPRP expr) -> bool { + std::unique_ptr layer_norm(new MNN::LayerNormT); + layer_norm->axis = axis_var_; + layer_norm->epsilon = epsilon_var_->readMap()[0]; + layer_norm->useRMSNorm = true; + + std::unique_ptr layer_norm_op(new OpT); + layer_norm_op->name = expr->name(); + layer_norm_op->type = OpType_LayerNorm; + layer_norm_op->main.type = OpParameter_LayerNorm; + layer_norm_op->main.value = layer_norm.release(); + + EXPRP layer_norm_expr = Expr::create(layer_norm_op.get(), {x_var_}, 1); + layer_norm_expr->setName(expr->name()); + Expr::replace(expr, layer_norm_expr); + return true /*modified*/; + }; + TemplateMerge::getInstance("Merge").insertTemplate("FuseLayerNormRMS", match, fold); +} + +static FuseLayerNormRMS g_fuse_layer_norm_rms; + +} // namespace Express +} // namespace MNN diff --git a/tools/converter/source/optimizer/merge/FuseTemplateOp.cpp b/tools/converter/source/optimizer/merge/FuseTemplateOp.cpp index 1401bb61e..c6a0c3c65 100644 --- a/tools/converter/source/optimizer/merge/FuseTemplateOp.cpp +++ b/tools/converter/source/optimizer/merge/FuseTemplateOp.cpp @@ -387,7 +387,6 @@ static auto gRegister = []() { if (config->optimizeLevel == 2) { unaryType = UnaryOpOperation_GELU; } - config->optimizeLevel; for (auto templateExpr : templatesExprs) { std::map inputConst; if (isTheSameRec(templateExpr, expr, inputConst)) { diff --git a/tools/converter/source/optimizer/merge/MergeDynamicQuantV1.cpp b/tools/converter/source/optimizer/merge/MergeDynamicQuantV1.cpp new file mode 100644 index 000000000..133a307ff --- /dev/null +++ b/tools/converter/source/optimizer/merge/MergeDynamicQuantV1.cpp @@ -0,0 +1,200 @@ +// +// MergeDynamicQuantV1.cpp +// MNNConverter +// +// Created by MNN on 2020/07/28. +// Copyright © 2018, Alibaba Group Holding Limited +// + +#include "../TemplateMerge.hpp" +#include "MNN/expr/ExprCreator.hpp" +#include "MNN_generated.h" +#include "MergeHelpers.hpp" + +namespace MNN { +namespace Express { + +static bool IsDynamicQuant(EXPRP expr) { + const Op* op = expr->get(); + if (op && op->type() == OpType_DynamicQuant) { + return true; + } + return false; +} + +static VARPS _DynamicQuant(VARP x) { + std::unique_ptr op(new OpT); + op->type = OpType_DynamicQuant; + op->main.type = OpParameter_NONE; + op->main.value = nullptr; + EXPRP expr = Expr::create(std::move(op), {x}, 3); + return { Variable::create(expr, 0), Variable::create(expr, 1), Variable::create(expr, 2) }; +} + +static VARP _MatMul(VARP a, VARP b, VARP scale, bool tranposeA, bool tranposeB) { + std::unique_ptr op(new OpT); + op->main.type = OpParameter_MatMul; + op->type = OpType_MatMul; + op->main.value = new MatMulT; + op->main.AsMatMul()->transposeA = tranposeA; + op->main.AsMatMul()->transposeB = tranposeB; + return (Variable::create(Expr::create(op.get(), {a, b, scale}))); +} + +class DynamicQuantMatmulV1 { +public: + DynamicQuantMatmulV1(); + +private: + VARP mBias; + VARP mWeightScale; + VARP mWeight; + VARP mWeightZero; + VARP mDynamicQuantInput; + VARPS mDynamicQuantOutputs; +}; + +DynamicQuantMatmulV1::DynamicQuantMatmulV1() { + auto match = [this](EXPRP expr) -> bool { + // check convInt8 + if (nullptr == expr->get()) { + return false; + } + if (!helpers::IsBinaryAdd(expr)) { + return false; + } + + mBias = expr->inputs().at(0); + auto floatMatmulResult = expr->inputs().at(1); + + if (!helpers::IsConstant(mBias->expr().first) && !helpers::IsConstant(floatMatmulResult->expr().first)) { + return false; + } + + if (!helpers::IsBinaryOp(mBias->expr().first) && !helpers::IsBinaryOp(floatMatmulResult->expr().first)) { + return false; + } + if (helpers::IsBinaryOp(mBias->expr().first)) { + mBias = expr->inputs().at(1); + floatMatmulResult = expr->inputs().at(0); + } + if(!helpers::IsBinaryMul(floatMatmulResult->expr().first)) { + return false; + } + + auto matmulVar = floatMatmulResult->expr().first->inputs()[0]; + auto scaleVar = floatMatmulResult->expr().first->inputs()[1]; + // two branch: 1. Matmul->cast->Mul; 2. Matmul->Mul + // first, matmulVar or scaleVar is cast + if (helpers::IsCast(matmulVar->expr().first)) { + auto castVar = matmulVar; + matmulVar = castVar->expr().first->inputs()[0]; + } + if (helpers::IsCast(scaleVar->expr().first)) { + auto castVar = scaleVar; + scaleVar = matmulVar; + matmulVar = castVar->expr().first->inputs()[0]; + } + + if (!helpers::IsMatMul(matmulVar->expr().first) && !helpers::IsMatMul(scaleVar->expr().first)) { + return false; + } + if (!helpers::IsBinaryOp(matmulVar->expr().first) && !helpers::IsBinaryOp(scaleVar->expr().first)) { + return false; + } + if (helpers::IsBinaryOp(matmulVar->expr().first)) { + matmulVar = floatMatmulResult->expr().first->inputs()[1]; + scaleVar = floatMatmulResult->expr().first->inputs()[0]; + } + if (!helpers::IsBinaryMul(scaleVar->expr().first)) { + return false; + } + + mWeightScale = scaleVar->expr().first->inputs()[1]; + auto inputScale = scaleVar->expr().first->inputs()[0]; + if (!helpers::IsConstant(mWeightScale->expr().first) && !helpers::IsConstant(inputScale->expr().first)) { + return false; + } + if (!IsDynamicQuant(mWeightScale->expr().first) && !IsDynamicQuant(inputScale->expr().first)) { + return false; + } + if (helpers::IsConstant(inputScale->expr().first)) { + mWeightScale = scaleVar->expr().first->inputs()[0]; + inputScale = scaleVar->expr().first->inputs()[1]; + } + + if (matmulVar->expr().first->inputs().size() != 4) { + return false; + } + + mWeight = matmulVar->expr().first->inputs()[1]; + mWeightZero = matmulVar->expr().first->inputs()[3]; + auto input = matmulVar->expr().first->inputs()[0]; + auto inputZero = matmulVar->expr().first->inputs()[2]; + if (!helpers::IsConstant(mWeight->expr().first) || !helpers::IsConstant(mWeightZero->expr().first)) { + return false; + } + if (!IsDynamicQuant(input->expr().first) || !IsDynamicQuant(inputZero->expr().first)) { + return false; + } + + if (input->expr().first != inputZero->expr().first) { + return false; + } + if (input->expr().first != inputScale->expr().first) { + return false; + } + auto dynamicQuantExpr = input->expr().first; + mDynamicQuantInput = dynamicQuantExpr->inputs().at(0); + mDynamicQuantOutputs = _DynamicQuant(mDynamicQuantInput); + + return true; + }; + auto transform = [this](EXPRP expr) -> bool { + auto y = mWeight; + y = _Cast(y); + auto offset = _Const(128.0f); + + auto x_int8 = mDynamicQuantOutputs[0]; + auto x_fp32 = _Int8ToFloat(x_int8, _Const(1.0)); + + auto y_fp32 = y - offset; + auto y_int8 = _Cast(y_fp32); + + auto x_zero_fp32 = mDynamicQuantOutputs[2]; + auto y_shape = y->getInfo()->dim; // y:[K,N] + auto y_zero = _Unsqueeze(_Cast(mWeightZero), {0}); + auto y_zero_fp32 = y_zero - offset; + auto y_reduce0 = _ReduceSum(y - y_zero, {0}, true); // y_:[1,N] + auto x_reduce1 = _ReduceSum(x_fp32, {2}, true); +// auto z = _MatMul(x_int8, y_int8) - x_zero_fp32 * y_reduce0 - _MatMul(x_reduce1, y_zero_fp32); +// +// auto newExpr = z->expr().first; +// newExpr->setName(expr->name()); +// return newExpr; + // first term + auto convInt8 = _MatMul(x_int8, y_int8, mWeightScale, false, false); + // second term + auto y_reduce_mul_yscale = y_reduce0 * mWeightScale; + auto sub1 = x_zero_fp32 * y_reduce_mul_yscale; + // third term + auto y_zero_fp32_mul_yscale = y_zero_fp32 * mWeightScale; + auto sub2 = _MatMul(x_reduce1, y_zero_fp32_mul_yscale); + auto z_sub_bias = convInt8 - sub2; + auto z_sub_xzero = sub1 * mDynamicQuantOutputs[1] - mBias; + auto z = z_sub_bias * mDynamicQuantOutputs[1] - z_sub_xzero; +// z = z * mDynamicQuantOutputs[1] + mBias; + + auto newExpr = z->expr().first; + newExpr->setName(expr->name()); + Expr::replace(expr, newExpr); + return true; + }; + + TemplateMerge::getInstance("Merge").insertTemplate("DynamicQuantMatMulInteger", match, transform, PASS_PRIORITY_HIGH); + +} +static DynamicQuantMatmulV1 g_dynamic_quant_matmul_v1; + +} // namespace Express +} // namespace MNN diff --git a/tools/converter/source/optimizer/merge/MergeDynamicQuantV2.cpp b/tools/converter/source/optimizer/merge/MergeDynamicQuantV2.cpp new file mode 100644 index 000000000..7a35d18bb --- /dev/null +++ b/tools/converter/source/optimizer/merge/MergeDynamicQuantV2.cpp @@ -0,0 +1,181 @@ +// +// MergeDynamicQuantV2.cpp +// MNNConverter +// +// Created by MNN on 2020/07/28. +// Copyright © 2018, Alibaba Group Holding Limited +// + +#include "../TemplateMerge.hpp" +#include "MNN/expr/ExprCreator.hpp" +#include "MNN_generated.h" +#include "MergeHelpers.hpp" + +namespace MNN { +namespace Express { + +static bool IsDynamicQuant(EXPRP expr) { + const Op* op = expr->get(); + if (op && op->type() == OpType_DynamicQuant) { + return true; + } + return false; +} + +static VARPS _DynamicQuant(VARP x) { + std::unique_ptr op(new OpT); + op->type = OpType_DynamicQuant; + op->main.type = OpParameter_NONE; + op->main.value = nullptr; + EXPRP expr = Expr::create(std::move(op), {x}, 3); + return { Variable::create(expr, 0), Variable::create(expr, 1), Variable::create(expr, 2) }; +} + +static VARP _MatMul(VARP a, VARP b, VARP scale, bool tranposeA, bool tranposeB) { + std::unique_ptr op(new OpT); + op->main.type = OpParameter_MatMul; + op->type = OpType_MatMul; + op->main.value = new MatMulT; + op->main.AsMatMul()->transposeA = tranposeA; + op->main.AsMatMul()->transposeB = tranposeB; + return (Variable::create(Expr::create(op.get(), {a, b, scale}))); +} + +class DynamicQuantMatmulV2 { +public: + DynamicQuantMatmulV2(); + +private: + VARP mWeightScale; + VARP mWeight; + VARP mWeightZero; + VARP mDynamicQuantInput; + VARPS mDynamicQuantOutputs; +}; + +DynamicQuantMatmulV2::DynamicQuantMatmulV2() { + auto match = [this](EXPRP expr) -> bool { + // dynamic->matmulInteger->mul without bias + if (nullptr == expr->get()) { + return false; + } + if (!helpers::IsBinaryMul(expr)) { + return false; + } + + auto matmulVar = expr->inputs()[0]; + auto scaleVar = expr->inputs()[1]; + // two branch: 1. Matmul->cast->Mul; 2. Matmul->Mul + // first, matmulv or scaleVar is cast + if (helpers::IsCast(matmulVar->expr().first)) { + auto castVar = matmulVar; + matmulVar = castVar->expr().first->inputs()[0]; + } + if (helpers::IsCast(scaleVar->expr().first)) { + auto castVar = scaleVar; + scaleVar = matmulVar; + matmulVar = castVar->expr().first->inputs()[0]; + } + if (!helpers::IsMatMul(matmulVar->expr().first) && !helpers::IsMatMul(scaleVar->expr().first)) { + return false; + } + if (!helpers::IsBinaryOp(matmulVar->expr().first) && !helpers::IsBinaryOp(scaleVar->expr().first)) { + return false; + } + if (helpers::IsBinaryOp(matmulVar->expr().first)) { + auto temp = matmulVar; + matmulVar = scaleVar; + scaleVar = temp; + } + if (!helpers::IsBinaryMul(scaleVar->expr().first)) { + return false; + } + + mWeightScale = scaleVar->expr().first->inputs()[1]; + auto inputScale = scaleVar->expr().first->inputs()[0]; + if (!helpers::IsConstant(mWeightScale->expr().first) && !helpers::IsConstant(inputScale->expr().first)) { + return false; + } + if (!IsDynamicQuant(mWeightScale->expr().first) && !IsDynamicQuant(inputScale->expr().first)) { + return false; + } + if (helpers::IsConstant(inputScale->expr().first)) { + mWeightScale = scaleVar->expr().first->inputs()[0]; + inputScale = scaleVar->expr().first->inputs()[1]; + } + + if (matmulVar->expr().first->inputs().size() != 4) { + return false; + } + + mWeight = matmulVar->expr().first->inputs()[1]; + mWeightZero = matmulVar->expr().first->inputs()[3]; + auto input = matmulVar->expr().first->inputs()[0]; + auto inputZero = matmulVar->expr().first->inputs()[2]; + if (!helpers::IsConstant(mWeight->expr().first) || !helpers::IsConstant(mWeightZero->expr().first)) { + return false; + } + if (!IsDynamicQuant(input->expr().first) || !IsDynamicQuant(inputZero->expr().first)) { + return false; + } + + if (input->expr().first != inputZero->expr().first) { + return false; + } + if (input->expr().first != inputScale->expr().first) { + return false; + } + auto dynamicQuantVar = input->expr().first; + mDynamicQuantInput = dynamicQuantVar->inputs().at(0); + mDynamicQuantOutputs = _DynamicQuant(mDynamicQuantInput); + + return true; + }; + auto transform = [this](EXPRP expr) -> bool { + auto y = mWeight; + y = _Cast(y); + auto offset = _Const(128.0f); + + auto x_int8 = mDynamicQuantOutputs[0]; + auto x_fp32 = _Int8ToFloat(x_int8, _Const(1.0)); + + auto y_fp32 = y - offset; + auto y_int8 = _Cast(y_fp32); + + auto x_zero_fp32 = mDynamicQuantOutputs[2]; + auto y_shape = y->getInfo()->dim; // y:[K,N] + auto y_zero = _Unsqueeze(_Cast(mWeightZero), {0}); + auto y_zero_fp32 = y_zero - offset; + auto y_reduce0 = _ReduceSum(y - y_zero, {0}, true); // y_:[1,N] + auto x_reduce1 = _ReduceSum(x_fp32, {2}, true); +// auto z = _MatMul(x_int8, y_int8) - x_zero_fp32 * y_reduce0 - _MatMul(x_reduce1, y_zero_fp32); +// +// auto newExpr = z->expr().first; +// newExpr->setName(expr->name()); +// return newExpr; + // first term + auto convInt8 = _MatMul(x_int8, y_int8, mWeightScale, false, false); + // second term + auto y_reduce_mul_yscale = y_reduce0 * mWeightScale; + auto sub1 = x_zero_fp32 * y_reduce_mul_yscale; + // third term + auto y_zero_fp32_mul_yscale = y_zero_fp32 * mWeightScale; + auto sub2 = _MatMul(x_reduce1, y_zero_fp32_mul_yscale); + auto z_sub_bias = convInt8 - sub2; + auto z_sub_xzero = sub1 * mDynamicQuantOutputs[1]; + auto z = z_sub_bias * mDynamicQuantOutputs[1] - z_sub_xzero; +// z = z * mDynamicQuantOutputs[1] + mBias; + + auto newExpr = z->expr().first; + newExpr->setName(expr->name()); + Expr::replace(expr, newExpr); + return true; + }; + + TemplateMerge::getInstance("Merge").insertTemplate("DynamicQuantMatMulIntegerV2", match, transform, PASS_PRIORITY_HIGH); + +} +static DynamicQuantMatmulV2 g_dynamic_quant_matmul_v2; + +} // namespace Express +} // namespace MNN diff --git a/tools/converter/source/optimizer/merge/MergeHelpers.cpp b/tools/converter/source/optimizer/merge/MergeHelpers.cpp index c23ba451d..3327b7dac 100644 --- a/tools/converter/source/optimizer/merge/MergeHelpers.cpp +++ b/tools/converter/source/optimizer/merge/MergeHelpers.cpp @@ -119,6 +119,14 @@ bool IsUnarySquare(EXPRP expr) { IS_UNARY_OP_TYPE(UnaryOpOperation_SQUARE); } +bool IsBinaryPow(EXPRP expr) { + IS_BINARY_OP_TYPE(BinaryOpOperation_POW); +} + +bool IsUnarySqrt(EXPRP expr) { + IS_UNARY_OP_TYPE(UnaryOpOperation_SQRT); +} + bool IsUnaryRsqrt(EXPRP expr) { IS_UNARY_OP_TYPE(UnaryOpOperation_RSQRT); } diff --git a/tools/converter/source/optimizer/merge/MergeHelpers.hpp b/tools/converter/source/optimizer/merge/MergeHelpers.hpp index c47c6b193..e2fea0a4a 100644 --- a/tools/converter/source/optimizer/merge/MergeHelpers.hpp +++ b/tools/converter/source/optimizer/merge/MergeHelpers.hpp @@ -33,10 +33,11 @@ bool IsBinaryAdd(Express::EXPRP expr); bool IsBinarySub(Express::EXPRP expr); bool IsBinaryMul(Express::EXPRP expr); bool IsBinaryRealDiv(Express::EXPRP expr); - +bool IsBinaryPow(Express::EXPRP expr); bool IsBinarySquaredDifference(Express::EXPRP expr); bool IsUnarySquare(Express::EXPRP expr); +bool IsUnarySqrt(Express::EXPRP expr); bool IsUnaryRsqrt(Express::EXPRP expr); bool IsUnaryNeg(Express::EXPRP expr); diff --git a/tools/converter/source/optimizer/onnxextra/DynamicQuantizeLinear.cpp b/tools/converter/source/optimizer/onnxextra/DynamicQuantizeLinear.cpp deleted file mode 100644 index d6b23abf8..000000000 --- a/tools/converter/source/optimizer/onnxextra/DynamicQuantizeLinear.cpp +++ /dev/null @@ -1,52 +0,0 @@ -// -// DynamicQuantizeLinear.cpp -// MNNConverter -// -// Created by MNN on 2023/08/14. -// Copyright © 2018, Alibaba Group Holding Limited -// - -#include -#include "MNN_generated.h" -#include "OnnxExtraManager.hpp" - -namespace MNN { -namespace Express { -// Ref from https://github.com/onnx/onnx/blob/main/docs/Operators.md#DynamicQuantizeLinear -class OnnxDynamicQuantizeLinearTransform : public OnnxExtraManager::Transform { -public: - virtual EXPRP onExecute(EXPRP expr) const override { - auto x = expr->inputs()[0]; - auto range = _Scalar(1.0f/255.0f); - auto maxX = _ReduceMax(x); - auto minX = _ReduceMin(x); - auto scale = (maxX - minX) * range; - auto scaleReq = _Reciprocal(scale); - // Qmin = 0 - auto interZero = _Negative(minX * scaleReq); - auto zeroFloat = _Round(_Relu6(interZero, 0.0f, 255.0f)); - auto zero = _Cast(zeroFloat); - auto y = _Cast(_Round(_Relu6(_Round(x * scaleReq) + zeroFloat, 0.0f, 255.0f))); - std::unique_ptr iden(new MNN::OpT); - iden->type = OpType_Identity; - - - auto newExpr = MNN::Express::Expr::create(iden.get(), {y, scale, zero}, 3); - newExpr->setName(expr->name()); - for (int i=0; i<3; ++i) { - auto v = MNN::Express::Variable::create(newExpr, i); - v->setName(expr->outputName(i)); - } - return newExpr; - } -}; - - -static auto gRegister = []() { - OnnxExtraManager::get()->insert("DynamicQuantizeLinear", - std::shared_ptr(new OnnxDynamicQuantizeLinearTransform)); - return true; -}(); - -} // namespace Express -} // namespace MNN diff --git a/tools/converter/source/optimizer/onnxextra/MatMulInteger.cpp b/tools/converter/source/optimizer/onnxextra/MatMulInteger.cpp index b034c29ee..bd4db9f5a 100644 --- a/tools/converter/source/optimizer/onnxextra/MatMulInteger.cpp +++ b/tools/converter/source/optimizer/onnxextra/MatMulInteger.cpp @@ -17,33 +17,39 @@ namespace Express { class OnnxMatMulIntegerTransform : public OnnxExtraManager::Transform { public: virtual EXPRP onExecute(EXPRP expr) const override { + /* auto inputs = expr->inputs(); auto x = inputs[0]; auto y = inputs[1]; - x = _Cast(x); y = _Cast(y); auto offset = _Const(128.0f); - auto x_fp32 = x - offset; + + auto x_int8 = inputs[0]; + auto x_fp32 = _Int8ToFloat(inputs[0], _Const(1.0)); + auto y_fp32 = y - offset; auto y_int8 = _Cast(y_fp32); - auto x_int8 = _FloatToInt8(x_fp32, _Scalar(1.0f), -128, 127); - auto z = _MatMul(x_int8, y_int8); - if (inputs.size() > 2) { - auto x_zero_fp32 = _Cast(inputs[2]) - offset; - auto x_zero_int8 = _Cast(x_zero_fp32); - auto y_shape = y->getInfo()->dim; // y:[K,N] - auto y_zero = _Unsqueeze(_Cast(inputs[3]), {0}); - auto y_zero_fp32 = y_zero - offset; - auto y_zero_1xN = _Cast(y_zero_fp32); - int N = y_shape[1]; - auto y_reduce0 = _ReduceSum(y - y_zero, {0}, true); // y_:[1,N] - auto x_reduce1 = _ReduceSum(x_fp32, {2}, true); - z = _MatMul(x_int8, y_int8) - x_zero_fp32 * y_reduce0 - _MatMul(x_reduce1, y_zero_fp32); - } - auto zInt = _Cast(z); - auto newExpr = zInt->expr().first; + + auto x_zero_fp32 = inputs[2]; + auto y_shape = y->getInfo()->dim; // y:[K,N] + auto y_zero = _Unsqueeze(_Cast(inputs[3]), {0}); + auto y_zero_fp32 = y_zero - offset; + auto y_reduce0 = _ReduceSum(y - y_zero, {0}, true); // y_:[1,N] + auto x_reduce1 = _ReduceSum(x_fp32, {2}, true); + auto z = _MatMul(x_int8, y_int8, false, false) - x_zero_fp32 * y_reduce0 - _MatMul(x_reduce1, y_zero_fp32); + + auto newExpr = z->expr().first; newExpr->setName(expr->name()); return newExpr; + */ + + auto inputs = expr->inputs(); + std::unique_ptr matmul(new MNN::OpT); + matmul->type = OpType_MatMul; + auto newExpr = MNN::Express::Expr::create(matmul.get(), inputs, 4); + newExpr->setName(expr->name()); + return newExpr; + } }; diff --git a/tools/converter/source/optimizer/onnxextra/OnnxBatchNormMerge.cpp b/tools/converter/source/optimizer/onnxextra/OnnxBatchNormMerge.cpp index 2aedad3a7..648c11d2a 100644 --- a/tools/converter/source/optimizer/onnxextra/OnnxBatchNormMerge.cpp +++ b/tools/converter/source/optimizer/onnxextra/OnnxBatchNormMerge.cpp @@ -153,12 +153,14 @@ class OnnxInstanceNormalTransform : public OnnxExtraManager::Transform { } } bool needScale = true; + bool scaleConst = false; do { auto biasPtr = inputs[2]->readMap(); auto scalePtr = inputs[1]->readMap(); if (nullptr == biasPtr || nullptr == scalePtr) { break; } + scaleConst = true; auto oneVar = _Scalar(1.0f); auto scaleOff = inputs[1] - oneVar; auto scaleSum = _ReduceSum(scaleOff * scaleOff); @@ -183,19 +185,26 @@ class OnnxInstanceNormalTransform : public OnnxExtraManager::Transform { auto param = layerNormOp->main.AsLayerNorm(); param->axis = {2}; // Layernorm only need axis's size as 1 param->epsilon = epsilon; -// param->beta.resize(inputs[2]->getInfo()->size); -// ::memcpy(param->beta.data(), biasPtr, param->beta.size() * sizeof(float)); -// param->gamma.resize(inputs[1]->getInfo()->size); -// ::memcpy(param->gamma.data(), scalePtr, param->beta.size() * sizeof(float)); param->group = 1; } auto res = Variable::create(Expr::create(layerNormOp.get(), {inputDim3})); res = _ReshapeF(res, originShape, MNN_DATA_FORMAT_NCHW); if (needScale) { - auto compatShape = _Concat({_Shape(inputs[1], true), _Fill(_Unsqueeze(_Size(_Shape(input, true)) - _Scalar(2), {0}), _Scalar(1))}, 0); - auto scale = _OnnxReshape(inputs[1], compatShape); - auto bias = _OnnxReshape(inputs[2], compatShape); - res = res * scale + bias; + if (scaleConst) { + auto biasPtr = inputs[2]->readMap(); + auto scalePtr = inputs[1]->readMap(); + int channels = inputs[1]->getInfo()->size; + std::vector scales(channels); + std::vector bias(channels); + ::memcpy(bias.data(), biasPtr, channels * sizeof(float)); + ::memcpy(scales.data(), scalePtr, channels * sizeof(float)); + res = _Scale(res, channels, std::move(scales), std::move(bias)); + } else { + auto compatShape = _Concat({_Shape(inputs[1], true), _Fill(_Unsqueeze(_Size(_Shape(input, true)) - _Scalar(2), {0}), _Scalar(1))}, 0); + auto scale = _OnnxReshape(inputs[1], compatShape); + auto bias = _OnnxReshape(inputs[2], compatShape); + res = res * scale + bias; + } } res->setName(expr->name()); return res->expr().first; diff --git a/tools/converter/source/optimizer/onnxextra/OnnxOneHot.cpp b/tools/converter/source/optimizer/onnxextra/OnnxOneHot.cpp index 255d0736a..1ef4904b3 100644 --- a/tools/converter/source/optimizer/onnxextra/OnnxOneHot.cpp +++ b/tools/converter/source/optimizer/onnxextra/OnnxOneHot.cpp @@ -33,7 +33,7 @@ class OnnxOneHotTransform : public OnnxExtraManager::Transform { MNN_ERROR("Don't support onehot for inputs != 3\n"); return nullptr; } - auto onOff = _Unstack(inputs[2], 0); + auto onOff = _Split(inputs[2], std::vector{2}, 0); auto res = _OneHot(inputs[0], inputs[1], onOff[1], onOff[0], axis); res->setName(expr->name()); return res->expr().first; diff --git a/tools/converter/source/optimizer/postconvert/FuseDupOp.cpp b/tools/converter/source/optimizer/postconvert/FuseDupOp.cpp index adc9ca42e..d029eeb18 100644 --- a/tools/converter/source/optimizer/postconvert/FuseDupOp.cpp +++ b/tools/converter/source/optimizer/postconvert/FuseDupOp.cpp @@ -29,6 +29,9 @@ class FuseDupOp : public PostConverter { if (op0->main.type != op1->main.type) { return false; } + if (op0->externalPath != op1->externalPath) { + return false; + } if (op0->main.type == OpParameter_NONE) { return true; } @@ -41,6 +44,9 @@ class FuseDupOp : public PostConverter { if (op0->main.type == OpParameter_Blob) { auto v0 = op0->main.AsBlob(); auto v1 = op1->main.AsBlob(); + if (v0->external != v1->external) { + return false; + } if (v0->dataFormat != v1->dataFormat) { return false; } diff --git a/tools/converter/source/optimizer/tfextra/TFConvolutionMerge.cpp b/tools/converter/source/optimizer/tfextra/TFConvolutionMerge.cpp index 66a53400f..edde28cdb 100644 --- a/tools/converter/source/optimizer/tfextra/TFConvolutionMerge.cpp +++ b/tools/converter/source/optimizer/tfextra/TFConvolutionMerge.cpp @@ -146,9 +146,9 @@ class ConvolutionDepthwiseTransform : public TFExtraManager::Transform { int once_weight = weightInfo->size / multiplier; convolution2D->weight.resize(once_weight); ::memcpy(convolution2D->weight.data(), weightTensorData, weightInfo->size * sizeof(float)); + convolution2D->bias.resize(num_output); + std::fill(convolution2D->bias.begin(), convolution2D->bias.end(), 0.0f); } - convolution2D->bias.resize(num_output); - std::fill(convolution2D->bias.begin(), convolution2D->bias.end(), 0.0f); convolution2D->common.reset(new MNN::Convolution2DCommonT); auto common = convolution2D->common.get(); diff --git a/tools/converter/source/tflite/GatherTflite.cpp b/tools/converter/source/tflite/GatherTflite.cpp index ed4eef5a6..1ee75831a 100644 --- a/tools/converter/source/tflite/GatherTflite.cpp +++ b/tools/converter/source/tflite/GatherTflite.cpp @@ -14,14 +14,14 @@ MNN::OpType GatherTflite::opType(int quantizedModel) { return MNN::OpType_Gather; } MNN::OpParameter GatherTflite::type(int quantizedModel) { - return MNN::OpParameter_Gather; + return MNN::OpParameter_Axis; } void GatherTflite::run(MNN::OpT* dstOp, const std::unique_ptr& tfliteOp, const std::vector>& tfliteTensors, const std::vector>& tfliteModelBuffer, const std::vector>& tfliteOpSet, int quantizedModel){ - auto parameter = new MNN::GatherT; + auto parameter = new MNN::AxisT; auto opt=tfliteOp->builtin_options.AsGatherOptions(); parameter->axis = opt->axis; dstOp->main.value = parameter; diff --git a/tools/cpp/ExprDebug.hpp b/tools/cpp/ExprDebug.hpp index 87d5222f7..9630a160e 100644 --- a/tools/cpp/ExprDebug.hpp +++ b/tools/cpp/ExprDebug.hpp @@ -170,20 +170,61 @@ static void _initTimeTrace() { }; MNN::Express::Executor::getGlobalExecutor()->setCallBack(std::move(beforeCallBack), std::move(callBack)); } -static std::tuple _countTensor(MNN::Tensor* tensor) { + +template +std::tuple _countTensor(MNN::Tensor* tensor) { auto size = tensor->elementSize(); - auto ptr = tensor->host(); - float maxValue = ptr[0]; - float sumValue = ptr[0]; - float minValue = ptr[0]; + auto ptr = (T*)tensor->buffer().host; + float maxValue = (float)ptr[0]; + float avgValue = (float)ptr[0]; + float minValue = (float)ptr[0]; + float sumDiv = 1.0f / (float)size; for (int i=1; i> _countForTensorValid(MNN::Tensor* ntensor) { + bool valid = false; + std::tuple res; + if (ntensor->elementSize() <= 0) { + return std::make_pair(valid, res); + } + bool validforType = false; + if (ntensor->getType().code == halide_type_float || ntensor->getType().code == halide_type_int || ntensor->getType().code == halide_type_uint) { + validforType = true; + } + if (!validforType) { + return std::make_pair(valid, res); + } + valid = true; + auto outDimType = ntensor->getDimensionType(); + std::shared_ptr expectTensor(new MNN::Tensor(ntensor, outDimType)); + bool copyRes = ntensor->copyToHostTensor(expectTensor.get()); + if (copyRes) { + ntensor = expectTensor.get(); + } + std::tuple data; + if (ntensor->getType().code == halide_type_float) { + data = _countTensor(ntensor); + } else if (ntensor->getType().code == halide_type_int) { + if (ntensor->getType().bits == 32) { + data = _countTensor(ntensor); + } else if (ntensor->getType().bits == 8) { + data = _countTensor(ntensor); + } + } else if (ntensor->getType().code == halide_type_uint) { + if (ntensor->getType().bits == 32) { + data = _countTensor(ntensor); + } else if (ntensor->getType().bits == 8) { + data = _countTensor(ntensor); + } + } + return std::make_pair(valid, data); +} static void _initTensorStatic() { MNN::TensorCallBackWithInfo beforeCallBack = [&](const std::vector& ntensors, const MNN::OperatorInfo* info) { auto opName = info->name(); @@ -192,16 +233,11 @@ static void _initTensorStatic() { } for (int i = 0; i < ntensors.size(); ++i) { auto ntensor = ntensors[i]; - if (ntensor->getType().code != halide_type_float || ntensor->elementSize() <= 0) { + auto res = _countForTensorValid(ntensor); + if (!res.first) { continue; } - auto outDimType = ntensor->getDimensionType(); - std::shared_ptr expectTensor(new MNN::Tensor(ntensor, outDimType)); - bool res = ntensor->copyToHostTensor(expectTensor.get()); - if (res) { - ntensor = expectTensor.get(); - } - auto data = _countTensor(ntensor); + auto data = res.second; MNN_PRINT("%s [Input] %s_%d, Max: %f, Min: %f, Avg: %f, [", info->type().c_str(), opName.c_str(), i, std::get<0>(data), std::get<1>(data), std::get<2>(data)); for (int v=0; vdimensions(); ++v) { MNN_PRINT("%d", ntensor->length(v)); @@ -220,16 +256,11 @@ static void _initTensorStatic() { } for (int i = 0; i < ntensors.size(); ++i) { auto ntensor = ntensors[i]; - if (ntensor->getType().code != halide_type_float || ntensor->elementSize() <= 0) { + auto res = _countForTensorValid(ntensor); + if (!res.first) { continue; } - auto outDimType = ntensor->getDimensionType(); - std::shared_ptr expectTensor(new MNN::Tensor(ntensor, outDimType)); - bool res = ntensor->copyToHostTensor(expectTensor.get()); - if (res) { - ntensor = expectTensor.get(); - } - auto data = _countTensor(ntensor); + auto data = res.second; MNN_PRINT("%s [Output] %s_%d, Max: %f, Min: %f, Avg: %f, [", info->type().c_str(), opName.c_str(), i, std::get<0>(data), std::get<1>(data), std::get<2>(data)); for (int v=0; vdimensions(); ++v) { MNN_PRINT("%d", ntensor->length(v)); diff --git a/tools/cpp/GetMNNInfo.cpp b/tools/cpp/GetMNNInfo.cpp index ffc9624f1..039ab9f79 100644 --- a/tools/cpp/GetMNNInfo.cpp +++ b/tools/cpp/GetMNNInfo.cpp @@ -7,6 +7,7 @@ // #include "MNN_generated.h" +#include #include #include #include diff --git a/tools/cpp/IDSTEncoder.hpp b/tools/cpp/IDSTEncoder.hpp index 13c33b678..2d24b56b5 100644 --- a/tools/cpp/IDSTEncoder.hpp +++ b/tools/cpp/IDSTEncoder.hpp @@ -228,7 +228,7 @@ static void WriteCQBlobs(std::ostream &out, const float* weightData, const float char *buf = new char[buf_len]; { char *arr = new char[area * channel]; - char *tmp = arr; + unsigned char *tmp = (unsigned char*)arr; if (asymmetricQuantFlag) { for (int i = 0; i < channel; i++) { @@ -287,7 +287,7 @@ static void WriteCQBlobs(std::ostream &out, const float* weightData, const float delete[] buf; } -static void WriteSparseQuanBlobs(std::ostream &out, const float* weightData, const float* alphaData, int area, int channel, bool asymmetricQuantFlag, bool& shapeUseInt32, const int bits) +static bool WriteSparseQuanBlobs(std::ostream &out, const float* weightData, const float* alphaData, int area, int channel, bool asymmetricQuantFlag, bool& shapeUseInt32, const int bits) { std::set setWeight; GetWeightSet(setWeight, weightData, alphaData, area, channel, asymmetricQuantFlag, bits); @@ -305,6 +305,9 @@ static void WriteSparseQuanBlobs(std::ostream &out, const float* weightData, con int weightSize = area * channel; unsigned char iNeedBits; nnz = GetBestMaxStep(weightData, weightSize, iNeedBits, iDataNeedBits, alphaData, area, channel, asymmetricQuantFlag); + if (nnz <= 0) { + return false; + } //weight buf size_t data_buf_len = size_t(ceil(0.125 * iDataNeedBits * nnz)); char* data_buf = new char[data_buf_len]; @@ -413,14 +416,18 @@ static void WriteSparseQuanBlobs(std::ostream &out, const float* weightData, con } delete[] buf; delete[] data_buf; + return true; } static std::unique_ptr encode(const float* weight, const std::vector& scale, int kernelSize, int kernelNum, - bool asymmetricQuantFlag, const int8_t* quantWeightPtr, const int clampMin, const int bits = 8) { + bool asymmetricQuantFlag, const int8_t* quantWeightPtr, const int clampMin, const int bits = 8, bool detectSparse = true) { std::ostringstream outputStringStreamCQ, outputStringStreamSQ; bool shapeUseInt32 = false; WriteCQBlobs(outputStringStreamCQ, weight, scale.data(), kernelSize, kernelNum, asymmetricQuantFlag, shapeUseInt32, bits); - WriteSparseQuanBlobs(outputStringStreamSQ, weight, scale.data(), kernelSize, kernelNum, asymmetricQuantFlag, shapeUseInt32, bits); + bool sparseValid = false; + if (detectSparse) { + sparseValid = WriteSparseQuanBlobs(outputStringStreamSQ, weight, scale.data(), kernelSize, kernelNum, asymmetricQuantFlag, shapeUseInt32, bits); + } std::unique_ptr idst(new IDSTQuanT); auto cqStr = outputStringStreamCQ.str(); auto sqStr = outputStringStreamSQ.str(); @@ -431,7 +438,7 @@ static std::unique_ptr encode(const float* weight, const std::vector< idst->aMax = kernelNum; idst->buffer.resize(int8Size); ::memcpy(idst->buffer.data(), quantWeightPtr, int8Size); - } else if (cqStr.size() <= sqStr.size()) { + } else if (cqStr.size() <= sqStr.size() || (!sparseValid)) { idst->type = 1; idst->buffer.resize(cqStr.size()); ::memcpy(idst->buffer.data(), cqStr.data(), cqStr.size()); diff --git a/tools/cpp/MNNV2Basic.cpp b/tools/cpp/MNNV2Basic.cpp index ee71d9ad8..dc5a82186 100644 --- a/tools/cpp/MNNV2Basic.cpp +++ b/tools/cpp/MNNV2Basic.cpp @@ -262,6 +262,9 @@ static int test_main(int argc, const char* argv[]) { if (!inputDims.empty()) { net->setSessionMode(Interpreter::Session_Resize_Defer); } + if (runMask & 32) { + net->setSessionHint(Interpreter::WINOGRAD_MEMORY_LEVEL, 0); + } // create session MNN::ScheduleConfig config; @@ -462,7 +465,7 @@ static int test_main(int argc, const char* argv[]) { auto ptr = inputTensor->map(MNN::Tensor::MAP_TENSOR_WRITE, inputTensor->getDimensionType()); inputTensor->unmap(MNN::Tensor::MAP_TENSOR_WRITE, inputTensor->getDimensionType(), ptr); } - net->runSessionWithCallBackInfo(session, beforeCallBack, afterCallBack, false); + net->runSession(session); { auto ptr = outputTensor->map(MNN::Tensor::MAP_TENSOR_READ, outputTensor->getDimensionType()); outputTensor->unmap(MNN::Tensor::MAP_TENSOR_READ, outputTensor->getDimensionType(), ptr); diff --git a/tools/cpp/ModuleBasic.cpp b/tools/cpp/ModuleBasic.cpp index 4dd1a6337..e13f39b47 100644 --- a/tools/cpp/ModuleBasic.cpp +++ b/tools/cpp/ModuleBasic.cpp @@ -248,6 +248,9 @@ int main(int argc, char *argv[]) { if (runMask & 32) { mConfig.rearrange = true; } + if (runMask & 512) { + rtmgr->setHint(Interpreter::WINOGRAD_MEMORY_LEVEL, 0); + } std::shared_ptr net; { AUTOTIME; diff --git a/tools/cpp/SequenceModuleTest.cpp b/tools/cpp/SequenceModuleTest.cpp index a8e97aa77..692dca881 100644 --- a/tools/cpp/SequenceModuleTest.cpp +++ b/tools/cpp/SequenceModuleTest.cpp @@ -15,6 +15,8 @@ #include #include #include +#include "ExprDebug.hpp" +//#define OPEN_TRACE using namespace MNN::Express; using namespace MNN; @@ -71,14 +73,40 @@ static bool compareOutput(VARP output, const std::string& directName, const std: } return true; } + +#define LOAD_DATA(TYPE)\ + if (inputInfo.find(inputName) != inputInfo.end()) {\ + auto value = inputInfo[inputName];\ + for (int i=0; isize; ++i) {\ + ptr[i] = value;\ + }\ + } else {\ + std::ostringstream fileNameOs;\ + fileNameOs << directName << "/" << inputName << ".txt";\ + auto fileName = fileNameOs.str();\ + std::ifstream inputOs(fileName.c_str());\ + if (inputOs.fail()) {\ + MNN_ERROR("TESTERROR Can't open %s\n", fileName.c_str());\ + continue;\ + }\ + for (int i=0; isize; ++i) {\ + double tempV; inputOs >> tempV;\ + ptr[i] = tempV;\ + }\ + } + int main(int argc, char *argv[]) { if (argc < 5) { MNN_ERROR("Usage: ./SequenceModuleTest.out ${test.mnn} [forwardType] [shapeMutable] ${testTime} ${Dir} ${Dir1} ......\n"); return 0; } +#ifdef OPEN_TRACE + _initTensorStatic(); +#endif + std::string modelName = argv[1]; auto type = (MNNForwardType)atoi(argv[2]); - auto shapeMutable = atoi(argv[3]); + int numberThread = atoi(argv[3]); int testTime = atoi(argv[4]); int offset = 5; MNN_PRINT("Test %s, type = %d\n", modelName.c_str(), type); @@ -86,20 +114,24 @@ int main(int argc, char *argv[]) { MNN::ScheduleConfig config; config.type = type; /*modeNum means gpuMode for GPU usage, Or means numThread for CPU usage.*/ - config.numThread = 1; // If type not fount, let it failed config.backupType = type; + config.numThread = numberThread; BackendConfig backendConfig; +#ifdef OPEN_TRACE + backendConfig.precision = MNN::BackendConfig::Precision_High; +#endif config.backendConfig = &backendConfig; MNN::Express::Module::Config mConfig; - mConfig.shapeMutable = shapeMutable; + mConfig.shapeMutable = true; mConfig.rearrange = true; std::shared_ptr rtmgr(Executor::RuntimeManager::createRuntimeManager(config)); +#ifdef OPEN_TRACE + rtmgr->setMode(MNN::Interpreter::Session_Debug); +#endif std::shared_ptr net; - for (int index = offset; index < argc; ++index) { - MNN_PRINT("Test for %s\n", argv[index]); std::string directName = argv[index]; rapidjson::Document document; std::map inputInfo; @@ -152,68 +184,114 @@ int main(int argc, char *argv[]) { MNN_PRINT("Error: can't load module\n"); return 0; } + break; } - auto mInfo = net->getInfo(); - -#define LOAD_DATA(TYPE)\ - if (inputInfo.find(inputName) != inputInfo.end()) {\ - auto value = inputInfo[inputName];\ - for (int i=0; isize; ++i) {\ - ptr[i] = value;\ - }\ - } else {\ - std::ostringstream fileNameOs;\ - fileNameOs << directName << "/" << inputName << ".txt";\ - auto fileName = fileNameOs.str();\ - std::ifstream inputOs(fileName.c_str());\ - if (inputOs.fail()) {\ - MNN_ERROR("TESTERROR Can't open %s\n", fileName.c_str());\ - continue;\ - }\ - for (int i=0; isize; ++i) {\ - double tempV; inputOs >> tempV;\ - ptr[i] = tempV;\ - }\ } - std::vector inputs(mInfo->inputs.size()); - for (int i=0; iinputs[i].dim, mInfo->inputs[i].order, mInfo->inputs[i].type); - } - // Load inputs - for (int i=0; isecond; - inputs[i] = _Input(s, mInfo->defaultFormat, mInfo->inputs[i].type); + net->traceOrOptimize(MNN::Interpreter::Session_Resize_Check); + + // First Test + auto testCorrect = [&]() { + std::vector correctInputs(argc-offset); + for (int index = offset; index < argc; ++index) { + MNN_PRINT("Test for %s\n", argv[index]); + std::string directName = argv[index]; + rapidjson::Document document; + std::map inputInfo; + std::map> inputShape; + std::vector inputNames; + std::vector outputNames; + std::ostringstream jsonNameOs; + jsonNameOs << argv[index] << "/input.json"; + std::ifstream fileNames(jsonNameOs.str().c_str()); + std::ostringstream output; + output << fileNames.rdbuf(); + auto outputStr = output.str(); + document.Parse(outputStr.c_str()); + if (document.HasParseError()) { + MNN_ERROR("Invalid json\n"); + continue; } - auto info = inputs[i]->getInfo(); - if (info->type == halide_type_of()){ - auto ptr = inputs[i]->writeMap(); - LOAD_DATA(float) - } else { - auto floatVar = _Input(info->dim, info->order, halide_type_of()); - auto ptr = floatVar->writeMap(); - LOAD_DATA(float) - auto temp = _Cast(floatVar, info->type); - inputs[i]->input(temp); + if (document.HasMember("inputs")) { + auto inputsInfo = document["inputs"].GetArray(); + for (auto iter = inputsInfo.begin(); iter !=inputsInfo.end(); iter++) { + auto obj = iter->GetObject(); + std::string name = obj["name"].GetString(); + inputNames.emplace_back(name); + MNN_PRINT("%s\n", name.c_str()); + if (obj.HasMember("value")) { + float value = obj["value"].GetFloat(); + inputInfo.insert(std::make_pair(name, value)); + } + if (obj.HasMember("shape")) { + auto dims = obj["shape"].GetArray(); + std::vector shapes; + for (auto iter = dims.begin(); iter != dims.end(); iter++) { + shapes.emplace_back(iter->GetInt()); + } + inputShape.insert(std::make_pair(name, shapes)); + } + } } - inputs[i] = _Convert(inputs[i], mInfo->inputs[i].order); - } - bool modelError = false; - // Module Branch - auto outputs = net->onForward(inputs); - for (int i=0; idefaultFormat, i); - if (!success) { - modelError = true; - MNN_ERROR("Error for output %s\n", outputNames[i].c_str()); + if (document.HasMember("outputs")) { + auto array = document["outputs"].GetArray(); + for (auto iter = array.begin(); iter !=array.end(); iter++) { + std::string name = iter->GetString(); + MNN_PRINT("output: %s\n", name.c_str()); + outputNames.emplace_back(name); + } + } + auto mInfo = net->getInfo(); + + std::vector inputs(mInfo->inputs.size()); + for (int i=0; iinputs[i].dim, mInfo->inputs[i].order, mInfo->inputs[i].type); } + // Load inputs + for (int i=0; isecond; + inputs[i] = _Input(s, mInfo->defaultFormat, mInfo->inputs[i].type); + } + auto info = inputs[i]->getInfo(); + if (info->type == halide_type_of()){ + auto ptr = inputs[i]->writeMap(); + LOAD_DATA(float) + } else { + auto floatVar = _Input(info->dim, info->order, halide_type_of()); + auto ptr = floatVar->writeMap(); + LOAD_DATA(float) + auto temp = _Cast(floatVar, info->type); + inputs[i]->input(temp); + } + inputs[i] = _Convert(inputs[i], mInfo->inputs[i].order); + } + bool modelError = false; + // Module Branch + auto outputs = net->onForward(inputs); + for (int i=0; idefaultFormat, i); + if (!success) { + modelError = true; + MNN_ERROR("Error for output %s\n", outputNames[i].c_str()); + } + } + correctInputs[index-offset] = !modelError; } + return correctInputs; + }; + auto correctInfo = testCorrect(); + MNN_PRINT("Resize optimize for net\n"); + net->traceOrOptimize(MNN::Interpreter::Session_Resize_Fix); + auto optCorrectInfo = testCorrect(); + for (int i=0; i 0) { + MNN_PRINT("Test Speed for %d times\n", testTime); // Prepare All Input std::vector> allInputs; for (int index = offset; index < argc; ++index) { @@ -240,7 +318,6 @@ int main(int argc, char *argv[]) { auto obj = iter->GetObject(); std::string name = obj["name"].GetString(); inputNames.emplace_back(name); - MNN_PRINT("%s\n", name.c_str()); if (obj.HasMember("value")) { float value = obj["value"].GetFloat(); inputInfo.insert(std::make_pair(name, value)); @@ -259,7 +336,6 @@ int main(int argc, char *argv[]) { auto array = document["outputs"].GetArray(); for (auto iter = array.begin(); iter !=array.end(); iter++) { std::string name = iter->GetString(); - MNN_PRINT("output: %s\n", name.c_str()); outputNames.emplace_back(name); } } @@ -299,6 +375,9 @@ int main(int argc, char *argv[]) { Timer _l; for (auto& v : allInputs) { auto output = net->onForward(v); + for (auto o : output) { + ((MNN::Tensor*)o->getTensor())->wait(MNN::Tensor::MAP_TENSOR_READ, true); + } } times[t] = _l.durationInUs() / 1000.0f; } diff --git a/tools/cpp/fuseTest.cpp b/tools/cpp/fuseTest.cpp index f5de4cc68..8522e662d 100644 --- a/tools/cpp/fuseTest.cpp +++ b/tools/cpp/fuseTest.cpp @@ -82,7 +82,7 @@ int main(int argc, const char* argv[]) { // Create Tensor std::shared_ptr tensor(Tensor::createDevice(shape, type, Tensor::CAFFE)); bn->onAcquireBuffer(tensor.get(), Backend::STATIC); - TensorUtils::getDescribe(tensor.get())->setBackend(bn.get()); + TensorUtils::getDescribeOrigin(tensor.get())->setBackend(bn.get()); bool isFloat = std::string((*iter)["type"].GetString()) == "float"; if (iter->HasMember("filename")) { auto ptr = tensor->map(MNN::Tensor::MAP_TENSOR_WRITE, MNN::Tensor::CAFFE); @@ -139,7 +139,7 @@ int main(int argc, const char* argv[]) { // Create Tensor std::shared_ptr tensor(Tensor::createDevice(shape, type, Tensor::CAFFE)); bn->onAcquireBuffer(tensor.get(), Backend::STATIC); - TensorUtils::getDescribe(tensor.get())->setBackend(bn.get()); + TensorUtils::getDescribeOrigin(tensor.get())->setBackend(bn.get()); outputs.emplace_back(tensor); pos++; } diff --git a/tools/script/testMNNFromTf.py b/tools/script/testMNNFromTf.py index 98278f403..e267681d7 100644 --- a/tools/script/testMNNFromTf.py +++ b/tools/script/testMNNFromTf.py @@ -77,7 +77,7 @@ def __run_tf(self): inp = {} inp['name'] = inputVar.name inp['shape'] = self.__get_shape(inputVar) - inputs[inputVar.name + ':0'] = np.random.uniform(0.1, 1.2, inp['shape']).astype(np.typeDict[inputVar.outputs[0].dtype.name]) + inputs[inputVar.name + ':0'] = np.random.uniform(0.1, 1.2, inp['shape']).astype(np.sctypeDict[inputVar.outputs[0].dtype.name]) jsonDict['inputs'].append(inp) print([output.name for output in self.outputOps]) for output in self.outputOps: