UNPKG

nomadex-client

Version:

Client library to programmatically interact with https://voi.nomadex.app

163 lines 83.1 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.PoolFactoryClient = exports.PoolFactoryCallFactory = exports.APP_SPEC = void 0; /* eslint-disable */ // @ts-nocheck /** * This file was automatically generated by @algorandfoundation/algokit-client-generator. * DO NOT MODIFY IT BY HAND. * requires: @algorandfoundation/algokit-utils: ^2 */ const algokit = __importStar(require("@algorandfoundation/algokit-utils")); const algosdk_1 = require("algosdk"); exports.APP_SPEC = { "hints": { "updateApplication()void": { "call_config": { "update_application": "CALL" } }, "deleteApplication()void": { "call_config": { "delete_application": "CALL" } }, "manager()address": { "call_config": { "no_op": "CALL" } }, "grant(address)void": { "call_config": { "no_op": "CALL" } }, "createApplication()void": { "call_config": { "no_op": "CREATE" } }, "createPool(pay,byte[32],byte[8],uint64,uint8,uint64,uint8,uint256)uint64": { "call_config": { "no_op": "CALL" } }, "poolBootstrap(uint64)void": { "call_config": { "no_op": "CALL" } }, "setFee(uint64)bool": { "call_config": { "no_op": "CALL" } }, "setPlatformFee(uint256)bool": { "call_config": { "no_op": "CALL" } }, "setPoolManager(uint64,address)void": { "call_config": { "no_op": "CALL" } }, "setPoolFee(uint64,uint256)void": { "call_config": { "no_op": "CALL" } }, "withdraw(address,uint256,(uint64,uint64))void": { "call_config": { "no_op": "CALL" } }, "noop(uint64)void": { "call_config": { "no_op": "CALL" } } }, "bare_call_config": { "no_op": "NEVER", "opt_in": "NEVER", "close_out": "NEVER", "update_application": "NEVER", "delete_application": "NEVER" }, "schema": { "local": { "declared": {}, "reserved": {} }, "global": { "declared": { "warden": { "type": "bytes", "key": "warden" }, "bootstrapFee": { "type": "uint64", "key": "bootstrap_fee" }, "platformFee": { "type": "bytes", "key": "platform_fee" } }, "reserved": {} } }, "state": { "global": { "num_byte_slices": 2, "num_uints": 1 }, "local": { "num_byte_slices": 0, "num_uints": 0 } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwMi4wCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQppbnQgNgoqCnR4biBPbkNvbXBsZXRpb24KKwpzd2l0Y2ggKmNhbGxfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY2FsbF9VcGRhdGVBcHBsaWNhdGlvbiAqY2FsbF9EZWxldGVBcHBsaWNhdGlvbiAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIHVwZGF0ZUFwcGxpY2F0aW9uKCl2b2lkCiphYmlfcm91dGVfdXBkYXRlQXBwbGljYXRpb246CgkvLyBleGVjdXRlIHVwZGF0ZUFwcGxpY2F0aW9uKCl2b2lkCgljYWxsc3ViIHVwZGF0ZUFwcGxpY2F0aW9uCglpbnQgMQoJcmV0dXJuCgovLyB1cGRhdGVBcHBsaWNhdGlvbigpOiB2b2lkCnVwZGF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gMCAwCgoJLy8gc3JjL2NvbnRyYWN0cy9saWIvT3duYWJsZS5hbGdvLnRzOjcKCS8vIGFzc2VydCh0aGlzLndhcmRlbi5leGlzdHMsICd0aGlzIGFwcCBjYW4gbm90IHVwZGF0ZScpCgl0eG5hIEFwcGxpY2F0aW9ucyAwCglieXRlIDB4Nzc2MTcyNjQ2NTZlIC8vICJ3YXJkZW4iCglhcHBfZ2xvYmFsX2dldF9leAoJc3dhcAoJcG9wCgoJLy8gdGhpcyBhcHAgY2FuIG5vdCB1cGRhdGUKCWFzc2VydAoKCS8vIHNyYy9jb250cmFjdHMvbGliL093bmFibGUuYWxnby50czo4CgkvLyBhc3NlcnQodGhpcy50eG4uc2VuZGVyID09PSB0aGlzLndhcmRlbi52YWx1ZSwgJ29ubHkgbWFuYWdlciBjYW4gdXBkYXRlJykKCXR4biBTZW5kZXIKCWJ5dGUgMHg3NzYxNzI2NDY1NmUgLy8gIndhcmRlbiIKCWFwcF9nbG9iYWxfZ2V0Cgk9PQoKCS8vIG9ubHkgbWFuYWdlciBjYW4gdXBkYXRlCglhc3NlcnQKCXJldHN1YgoKLy8gZGVsZXRlQXBwbGljYXRpb24oKXZvaWQKKmFiaV9yb3V0ZV9kZWxldGVBcHBsaWNhdGlvbjoKCS8vIGV4ZWN1dGUgZGVsZXRlQXBwbGljYXRpb24oKXZvaWQKCWNhbGxzdWIgZGVsZXRlQXBwbGljYXRpb24KCWludCAxCglyZXR1cm4KCi8vIGRlbGV0ZUFwcGxpY2F0aW9uKCk6IHZvaWQKZGVsZXRlQXBwbGljYXRpb246Cglwcm90byAwIDAKCgkvLyBzcmMvY29udHJhY3RzL2xpYi9Pd25hYmxlLmFsZ28udHM6MTIKCS8vIGFzc2VydCh0aGlzLndhcmRlbi5leGlzdHMsICd0aGlzIGFwcCBjYW4gbm90IGJlIGRlbGV0ZWQnKQoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJYnl0ZSAweDc3NjE3MjY0NjU2ZSAvLyAid2FyZGVuIgoJYXBwX2dsb2JhbF9nZXRfZXgKCXN3YXAKCXBvcAoKCS8vIHRoaXMgYXBwIGNhbiBub3QgYmUgZGVsZXRlZAoJYXNzZXJ0CgoJLy8gc3JjL2NvbnRyYWN0cy9saWIvT3duYWJsZS5hbGdvLnRzOjEzCgkvLyBhc3NlcnQodGhpcy50eG4uc2VuZGVyID09PSB0aGlzLndhcmRlbi52YWx1ZSwgJ29ubHkgbWFuYWdlciBjYW4gZGVsZXRlJykKCXR4biBTZW5kZXIKCWJ5dGUgMHg3NzYxNzI2NDY1NmUgLy8gIndhcmRlbiIKCWFwcF9nbG9iYWxfZ2V0Cgk9PQoKCS8vIG9ubHkgbWFuYWdlciBjYW4gZGVsZXRlCglhc3NlcnQKCgkvLyBzcmMvY29udHJhY3RzL2xpYi9Pd25hYmxlLmFsZ28udHM6MTQKCS8vIHNlbmRQYXltZW50KHsKCS8vICAgICAgIGFtb3VudDogMCwKCS8vICAgICAgIHNlbmRlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgIHJlY2VpdmVyOiB0aGlzLndhcmRlbi52YWx1ZSwKCS8vICAgICAgIGNsb3NlUmVtYWluZGVyVG86IHRoaXMud2FyZGVuLnZhbHVlLAoJLy8gICAgICAgcmVrZXlUbzogdGhpcy53YXJkZW4udmFsdWUsCgkvLyAgICAgICBmZWU6IGdsb2JhbHMubWluVHhuRmVlLAoJLy8gICAgIH0pCglpdHhuX2JlZ2luCglpbnQgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gc3JjL2NvbnRyYWN0cy9saWIvT3duYWJsZS5hbGdvLnRzOjE1CgkvLyBhbW91bnQ6IDAKCWludCAwCglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIHNyYy9jb250cmFjdHMvbGliL093bmFibGUuYWxnby50czoxNgoJLy8gc2VuZGVyOiB0aGlzLmFwcC5hZGRyZXNzCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJaXR4bl9maWVsZCBTZW5kZXIKCgkvLyBzcmMvY29udHJhY3RzL2xpYi9Pd25hYmxlLmFsZ28udHM6MTcKCS8vIHJlY2VpdmVyOiB0aGlzLndhcmRlbi52YWx1ZQoJYnl0ZSAweDc3NjE3MjY0NjU2ZSAvLyAid2FyZGVuIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgUmVjZWl2ZXIKCgkvLyBzcmMvY29udHJhY3RzL2xpYi9Pd25hYmxlLmFsZ28udHM6MTgKCS8vIGNsb3NlUmVtYWluZGVyVG86IHRoaXMud2FyZGVuLnZhbHVlCglieXRlIDB4Nzc2MTcyNjQ2NTZlIC8vICJ3YXJkZW4iCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBDbG9zZVJlbWFpbmRlclRvCgoJLy8gc3JjL2NvbnRyYWN0cy9saWIvT3duYWJsZS5hbGdvLnRzOjE5CgkvLyByZWtleVRvOiB0aGlzLndhcmRlbi52YWx1ZQoJYnl0ZSAweDc3NjE3MjY0NjU2ZSAvLyAid2FyZGVuIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgUmVrZXlUbwoKCS8vIHNyYy9jb250cmFjdHMvbGliL093bmFibGUuYWxnby50czoyMAoJLy8gZmVlOiBnbG9iYWxzLm1pblR4bkZlZQoJZ2xvYmFsIE1pblR4bkZlZQoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIG1hbmFnZXIoKWFkZHJlc3MKKmFiaV9yb3V0ZV9tYW5hZ2VyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIG1hbmFnZXIoKWFkZHJlc3MKCWNhbGxzdWIgbWFuYWdlcgoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIG1hbmFnZXIoKTogQWRkcmVzcwptYW5hZ2VyOgoJcHJvdG8gMCAxCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIHNyYy9jb250cmFjdHMvbGliL093bmFibGUuYWxnby50czoyNgoJLy8gdGhpcy53YXJkZW4uZXhpc3RzCgl0eG5hIEFwcGxpY2F0aW9ucyAwCglieXRlIDB4Nzc2MTcyNjQ2NTZlIC8vICJ3YXJkZW4iCglhcHBfZ2xvYmFsX2dldF9leAoJc3dhcAoJcG9wCglieiAqaWYwX2VuZAoKCS8vICppZjBfY29uc2VxdWVudAoJLy8gc3JjL2NvbnRyYWN0cy9saWIvT3duYWJsZS5hbGdvLnRzOjI3CgkvLyByZXR1cm4gdGhpcy53YXJkZW4udmFsdWU7CglieXRlIDB4Nzc2MTcyNjQ2NTZlIC8vICJ3YXJkZW4iCglhcHBfZ2xvYmFsX2dldAoJcmV0c3ViCgoqaWYwX2VuZDoKCS8vIHNyYy9jb250cmFjdHMvbGliL093bmFibGUuYWxnby50czoyOQoJLy8gcmV0dXJuIGdsb2JhbHMuemVyb0FkZHJlc3M7CglnbG9iYWwgWmVyb0FkZHJlc3MKCXJldHN1YgoKLy8gZ3JhbnQoYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfZ3JhbnQ6CgkvLyBtYW5hZ2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKG1hbmFnZXIpIGZvciBncmFudCBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBncmFudChhZGRyZXNzKXZvaWQKCWNhbGxzdWIgZ3JhbnQKCWludCAxCglyZXR1cm4KCi8vIGdyYW50KG1hbmFnZXI6IEFkZHJlc3MpOiB2b2lkCmdyYW50OgoJcHJvdG8gMSAwCgoJLy8gc3JjL2NvbnRyYWN0cy9saWIvT3duYWJsZS5hbGdvLnRzOjMzCgkvLyBhc3NlcnQodGhpcy50eG4uc2VuZGVyID09PSB0aGlzLndhcmRlbi52YWx1ZSwgJ3VuYXV0aG9yaXplZCcpCgl0eG4gU2VuZGVyCglieXRlIDB4Nzc2MTcyNjQ2NTZlIC8vICJ3YXJkZW4iCglhcHBfZ2xvYmFsX2dldAoJPT0KCgkvLyB1bmF1dGhvcml6ZWQKCWFzc2VydAoKCS8vICppZjFfY29uZGl0aW9uCgkvLyBzcmMvY29udHJhY3RzL2xpYi9Pd25hYmxlLmFsZ28udHM6MzQKCS8vIG1hbmFnZXIgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAtMSAvLyBtYW5hZ2VyOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCT09CglieiAqaWYxX2Vsc2UKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIHNyYy9jb250cmFjdHMvbGliL093bmFibGUuYWxnby50czozNQoJLy8gdGhpcy53YXJkZW4uZGVsZXRlKCkKCWJ5dGUgMHg3NzYxNzI2NDY1NmUgLy8gIndhcmRlbiIKCWFwcF9nbG9iYWxfZGVsCgliICppZjFfZW5kCgoqaWYxX2Vsc2U6CgkvLyBzcmMvY29udHJhY3RzL2xpYi9Pd25hYmxlLmFsZ28udHM6MzcKCS8vIHRoaXMud2FyZGVuLnZhbHVlID0gbWFuYWdlcgoJYnl0ZSAweDc3NjE3MjY0NjU2ZSAvLyAid2FyZGVuIgoJZnJhbWVfZGlnIC0xIC8vIG1hbmFnZXI6IEFkZHJlc3MKCWFwcF9nbG9iYWxfcHV0CgoqaWYxX2VuZDoKCXJldHN1YgoKLy8gY3JlYXRlQXBwbGljYXRpb24oKXZvaWQKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCS8vIGV4ZWN1dGUgY3JlYXRlQXBwbGljYXRpb24oKXZvaWQKCWNhbGxzdWIgY3JlYXRlQXBwbGljYXRpb24KCWludCAxCglyZXR1cm4KCi8vIGNyZWF0ZUFwcGxpY2F0aW9uKCk6IHZvaWQKY3JlYXRlQXBwbGljYXRpb246Cglwcm90byAwIDAKCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6MzEKCS8vIHRoaXMuYm9vdHN0cmFwRmVlLnZhbHVlID0gMl8wMDBfMDAwCglieXRlIDB4NjI2ZjZmNzQ3Mzc0NzI2MTcwNWY2NjY1NjUgLy8gImJvb3RzdHJhcF9mZWUiCglpbnQgMl8wMDBfMDAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czozMgoJLy8gdGhpcy5wbGF0Zm9ybUZlZS52YWx1ZSA9IDx1aW50MjU2PjFfMDAwXzAwMF8wMDBfMDAwCglieXRlIDB4NzA2YzYxNzQ2NjZmNzI2ZDVmNjY2NTY1IC8vICJwbGF0Zm9ybV9mZWUiCglieXRlIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZThkNGE1MTAwMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6MzMKCS8vIHRoaXMud2FyZGVuLnZhbHVlID0gdGhpcy50eG4uc2VuZGVyCglieXRlIDB4Nzc2MTcyNjQ2NTZlIC8vICJ3YXJkZW4iCgl0eG4gU2VuZGVyCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyBjcmVhdGVQb29sKHBheSxieXRlWzMyXSxieXRlWzhdLHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDgsdWludDI1Nil1aW50NjQKKmFiaV9yb3V0ZV9jcmVhdGVQb29sOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlIDB4MTUxZjdjNzUKCgkvLyBzd2FwRmVlOiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyA3CglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN3YXBGZWUpIGZvciBjcmVhdGVQb29sIG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyBiZXRhVHlwZTogdWludDgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDYKCWR1cAoJbGVuCglpbnQgMQoJPT0KCgkvLyBhcmd1bWVudCAxIChiZXRhVHlwZSkgZm9yIGNyZWF0ZVBvb2wgbXVzdCBiZSBhIHVpbnQ4Cglhc3NlcnQKCWJ0b2kKCgkvLyBiZXRhSWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIGFscGhhVHlwZTogdWludDgKCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWR1cAoJbGVuCglpbnQgMQoJPT0KCgkvLyBhcmd1bWVudCAzIChhbHBoYVR5cGUpIGZvciBjcmVhdGVQb29sIG11c3QgYmUgYSB1aW50OAoJYXNzZXJ0CglidG9pCgoJLy8gYWxwaGFJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3ltYm9sOiBieXRlWzhdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDgKCT09CgoJLy8gYXJndW1lbnQgNSAoc3ltYm9sKSBmb3IgY3JlYXRlUG9vbCBtdXN0IGJlIGEgYnl0ZVs4XQoJYXNzZXJ0CgoJLy8gbmFtZTogYnl0ZVszMl0KCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnQgMzIKCT09CgoJLy8gYXJndW1lbnQgNiAobmFtZSkgZm9yIGNyZWF0ZVBvb2wgbXVzdCBiZSBhIGJ5dGVbMzJdCglhc3NlcnQKCgkvLyBwYXlUeG46IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludCAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnQgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDcgKHBheVR4bikgZm9yIGNyZWF0ZVBvb2wgbXVzdCBiZSBhIHBheSB0cmFuc2FjdGlvbgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBjcmVhdGVQb29sKHBheSxieXRlWzMyXSxieXRlWzhdLHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDgsdWludDI1Nil1aW50NjQKCWNhbGxzdWIgY3JlYXRlUG9vbAoJaXRvYgoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIGNyZWF0ZVBvb2wocGF5VHhuOiBQYXlUeG4sIG5hbWU6IFN0YXRpY0J5dGVzPDMyPiwgc3ltYm9sOiBTdGF0aWNCeXRlczw4PiwgYWxwaGFJZDogdWludDY0LCBhbHBoYVR5cGU6IHVpbnQ4LCBiZXRhSWQ6IHVpbnQ2NCwgYmV0YVR5cGU6IHVpbnQ4LCBzd2FwRmVlOiB1aW50MjU2KTogdWludDY0CmNyZWF0ZVBvb2w6Cglwcm90byA4IDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZSAweAoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czo0NgoJLy8gdmVyaWZ5UGF5VHhuKHBheVR4biwgewoJLy8gICAgICAgc2VuZGVyOiB0aGlzLnR4bi5zZW5kZXIsCgkvLyAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgIGFtb3VudDogeyBncmVhdGVyVGhhbkVxdWFsVG86IHRoaXMuYm9vdHN0cmFwRmVlLnZhbHVlIH0sCgkvLyAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwYXlUeG46IFBheVR4bgoJZ3R4bnMgU2VuZGVyCgl0eG4gU2VuZGVyCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoicGF5VHhuIiwiZmllbGQiOiJzZW5kZXIiLCJleHBlY3RlZCI6InRoaXMudHhuLnNlbmRlciJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBwYXlUeG46IFBheVR4bgoJZ3R4bnMgUmVjZWl2ZXIKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoicGF5VHhuIiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gcGF5VHhuOiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJYnl0ZSAweDYyNmY2Zjc0NzM3NDcyNjE3MDVmNjY2NTY1IC8vICJib290c3RyYXBfZmVlIgoJYXBwX2dsb2JhbF9nZXQKCT49CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJwYXlUeG4iLCJmaWVsZCI6ImFtb3VudCIsImNvbmRpdGlvbiI6ImdyZWF0ZXJUaGFuRXF1YWxUbyIsImV4cGVjdGVkIjoiPj10aGlzLmJvb3RzdHJhcEZlZS52YWx1ZSJ9Cglhc3NlcnQKCgkvLyAqaWYyX2NvbmRpdGlvbgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjUyCgkvLyBhbHBoYVR5cGUgPT09IEFTQQoJZnJhbWVfZGlnIC01IC8vIGFscGhhVHlwZTogdWludDgKCWludCAxCgk9PQoJYnogKmlmMl9lbmQKCgkvLyAqaWYyX2NvbnNlcXVlbnQKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czo1MwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NChhbHBoYUlkKSwKCS8vICAgICAgICAgc2VuZGVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgICBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgICBhc3NldEFtb3VudDogMCwKCS8vICAgICAgICAgZmVlOiBnbG9iYWxzLm1pblR4bkZlZQoJLy8gICAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBheGZlcgoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czo1NAoJLy8geGZlckFzc2V0OiBBc3NldElELmZyb21VaW50NjQoYWxwaGFJZCkKCWZyYW1lX2RpZyAtNCAvLyBhbHBoYUlkOiB1aW50NjQKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjU1CgkvLyBzZW5kZXI6IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglpdHhuX2ZpZWxkIFNlbmRlcgoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czo1NgoJLy8gYXNzZXRSZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czo1NwoJLy8gYXNzZXRBbW91bnQ6IDAKCWludCAwCglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjU4CgkvLyBmZWU6IGdsb2JhbHMubWluVHhuRmVlCglnbG9iYWwgTWluVHhuRmVlCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjJfZW5kOgoJLy8gKmlmM19jb25kaXRpb24KCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czo2MQoJLy8gYmV0YVR5cGUgPT09IEFTQQoJZnJhbWVfZGlnIC03IC8vIGJldGFUeXBlOiB1aW50OAoJaW50IDEKCT09CglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjYyCgkvLyBzZW5kQXNzZXRUcmFuc2Zlcih7CgkvLyAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KGJldGFJZCksCgkvLyAgICAgICAgIHNlbmRlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgYXNzZXRSZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgYXNzZXRBbW91bnQ6IDAsCgkvLyAgICAgICAgIGZlZTogZ2xvYmFscy5taW5UeG5GZWUKCS8vICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6NjMKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KGJldGFJZCkKCWZyYW1lX2RpZyAtNiAvLyBiZXRhSWQ6IHVpbnQ2NAoJaXR4bl9maWVsZCBYZmVyQXNzZXQKCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6NjQKCS8vIHNlbmRlcjogdGhpcy5hcHAuYWRkcmVzcwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgU2VuZGVyCgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjY1CgkvLyBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjY2CgkvLyBhc3NldEFtb3VudDogMAoJaW50IDAKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6NjcKCS8vIGZlZTogZ2xvYmFscy5taW5UeG5GZWUKCWdsb2JhbCBNaW5UeG5GZWUKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKKmlmM19lbmQ6CgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6NzEKCS8vIHNlbmRNZXRob2RDYWxsPFtBcHBJRCwgQWRkcmVzcywgU3RhdGljQnl0ZXM8MzI+LCBTdGF0aWNCeXRlczw4PiwgdWludDY0LCB1aW50OCwgdWludDY0LCB1aW50OCwgdWludDI1Nl0sIHZvaWQ+KHsKCS8vICAgICAgIG5hbWU6ICdjcmVhdGVBcHBsaWNhdGlvbicsCgkvLyAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgIHRoaXMuYXBwLAoJLy8gICAgICAgICB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgICBuYW1lLAoJLy8gICAgICAgICBzeW1ib2wsCgkvLyAgICAgICAgIGFscGhhSWQsCgkvLyAgICAgICAgIGFscGhhVHlwZSwKCS8vICAgICAgICAgYmV0YUlkLAoJLy8gICAgICAgICBiZXRhVHlwZSwKCS8vICAgICAgICAgc3dhcEZlZSwKCS8vICAgICAgIF0sCgkvLyAgICAgICBhcHByb3ZhbFByb2dyYW06IFBvb2wuYXBwcm92YWxQcm9ncmFtUGFnZXMoKSwKCS8vICAgICAgIGNsZWFyU3RhdGVQcm9ncmFtOiBQb29sLmNsZWFyUHJvZ3JhbSgpLAoJLy8gICAgICAgZXh0cmFQcm9ncmFtUGFnZXM6IDMsCgkvLyAgICAgICBsb2NhbE51bUJ5dGVTbGljZTogUG9vbC5zY2hlbWEubG9jYWwubnVtQnl0ZVNsaWNlLAoJLy8gICAgICAgbG9jYWxOdW1VaW50OiBQb29sLnNjaGVtYS5sb2NhbC5udW1VaW50LAoJLy8gICAgICAgZ2xvYmFsTnVtQnl0ZVNsaWNlOiBQb29sLnNjaGVtYS5nbG9iYWwubnVtQnl0ZVNsaWNlLAoJLy8gICAgICAgZ2xvYmFsTnVtVWludDogUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICBmZWU6IGdsb2JhbHMubWluVHhuRmVlCgkvLyAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCxhZGRyZXNzLGJ5dGVbMzJdLGJ5dGVbOF0sdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50OCx1aW50MjU2KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czo3MwoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICB0aGlzLmFwcCwKCS8vICAgICAgICAgdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgbmFtZSwKCS8vICAgICAgICAgc3ltYm9sLAoJLy8gICAgICAgICBhbHBoYUlkLAoJLy8gICAgICAgICBhbHBoYVR5cGUsCgkvLyAgICAgICAgIGJldGFJZCwKCS8vICAgICAgICAgYmV0YVR5cGUsCgkvLyAgICAgICAgIHN3YXBGZWUsCgkvLyAgICAgICBdCgl0eG5hIEFwcGxpY2F0aW9ucyAwCglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gbmFtZTogU3RhdGljQnl0ZXM8MzI+CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0zIC8vIHN5bWJvbDogU3RhdGljQnl0ZXM8OD4KCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTQgLy8gYWxwaGFJZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC01IC8vIGFscGhhVHlwZTogdWludDgKCWl0b2IKCWV4dHJhY3QgNyAxCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC02IC8vIGJldGFJZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC03IC8vIGJldGFUeXBlOiB1aW50OAoJaXRvYgoJZXh0cmFjdCA3IDEKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTggLy8gc3dhcEZlZTogdWludDI1NgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6ODQKCS8vIGFwcHJvdmFsUHJvZ3JhbTogUG9vbC5hcHByb3ZhbFByb2dyYW1QYWdlcygpCglieXRlIGI2NCBDaUFKSUFHQUFnQUdBZ1FJUUNZWklQLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQlVmZkhVR2QyRnlaR1Z1QUFFQUNtRnNjR2hoWDNSNWNHVUpZbVYwWVY5MGVYQmxCMlpoWTNSdmNua0lZV3h3YUdGZmFXUUhZbVYwWVY5cFpBaHpkMkZ3WDJabFpReDBiM1JoYkY5emRYQndiSGtnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJhOHhCNlFBQUVndVZ6eEFUYWNDVzVDMmx1YVhScFlXeHBlbVZrQkc1aGJXVUdjM2x0WW05c0NHUmxZMmx0WVd4ekJIbUR3MXdFaE93VDFRUWJqS2taREhCc1lYUm1iM0p0WDJabFpRUndTTkRxTVJnVUlRUUxNUmtJalF3UUVRQUFBQUFBQUJEUEVOMFFBd0FBQUFBQUFBQUFBQUFBS29nQUJGQ3dJME9LQUFFbkVXU0pLb2dBQkZDd0kwT0tBQUVuRW1TSktvZ0FEaFpKa3lFSERrUlhCd0ZRc0NORGlnQUJKeE5rRjRrcWlBQVNTWk1rRGtRb3JFa1ZTU0lKVEZKUXNDTkRpZ0FCSnd4a2lTbzJHZ0ZKRlNJU1JJZ0FFa21USkE1RUtLeEpGVWtpQ1V4U1VMQWpRNG9CQVl2L3ZVeElRUUFGaS8rK1JJa3BpU28yR2dKSkZTSVNSRFlhQVVrVkloSkVpQUFTU1pNa0RrUW9yRWtWU1NJSlRGSlFzQ05EaWdJQmkvK0wvbEM5VEVoQkFBaUwvNHYrVUw1RWlTbUppZ01CSndTTC83MU1TQlJKUVFBSmkvOXpBRWd5QVE4UVFRQUVpLzhwdjR2K3ZVeElGRWxCQUFtTC9uTUFTRElCRHhCQkFBU0wvaW0vaS8rOVRFaEVpLzY5VEVoRWkvKytSSXdBaXdDTC9hZEVpLytMQUl2OW9VbVRKQTVFS0t4SkZVa2lDVXhTdjR2K2kvNitSSXY5b0VtVEpBNUVLS3hKRlVraUNVeFN2eWNVaS8rTC9sQ0wvVkJRc0NPTUFJa3FOaG9DU1JVaUVrUTJHZ0ZKRlNJU1JJZ0FDaWNGSlU4Q1ZGQ3dJME9LQWdHTC9vdi9NUUNJLzBlSmlnTUJpLytML2xDOVRFaEpRQUFKaS81ekFFZ3lBUThSUkl2L2kvNVFpLzIvZ0FRWmFmaGxpLytML2xDTC9WQlFzQ09KS2pZYUFra1ZJaEpFTmhvQlNSVWlFa1NJQUFvbkJTVlBBbFJRc0NORGlnSUJpLzZML3pFQWlQK2ppU28yR2dOSkZTSVNSRFlhQWtrVkloSkVOaG9CU1JVaUVrU0lBQW9uQlNWUEFsUlFzQ05EaWdNQkp3UkppLzBwcUVFQUJDTkNBSEV4QUl2L2lQNlNqQUNMQUl2OXAwU0wvNGorVFl3Qml3R0wvYWRFaS84eEFGQ0xBSXY5b1VtVEpBNUVLS3hKRlVraUNVeFN2NHYvaXdHTC9hRkpreVFPUkNpc1NSVkpJZ2xNVXIrTC9vditpUDRQaS8yZ1NaTWtEa1FvckVrVlNTSUpURksvSnhTTC80ditVSXY5VUZDd0k0d0FSZ0dKS2pZYUFVa1ZJUVlTUklnQUNpY0ZKVThDVkZDd0kwT0tBUUVuQkl2L0Y0d0Fpd0NCdXNlSzhRUVNTVUFBQ29zQWdjREErcjBNRWhGSlFBQUtpd0NCdWN2QTB3MFNFVWxBQUFxTEFJR1BuOXJVQkJJUlNVQUFDb3NBZ2FYQ2lLb0xFaEZKUUFBS2l3Q0I3S2YwcXdZU0VVbEFBQXFMQUlHbHRMaTFDeElSU1VBQUNvc0FnZFduc0tjSUVoRkpRQUFLaXdDQndjRGw1QTRTRVVsQUFBcUxBSUhFNTVXWENCSVJTVUFBQ29zQWdmT3p6TjBMRWhGSlFBQUtpd0NCM0lhUHpBY1NFVWxBQUFxTEFJSGw4S2ZMQVJJUlNVQUFDb3NBZ1lDb3FlSUxFaEZKUUFBS2l3Q0IxYUMzekF3U0VVbEFBQXFMQUlIN2hjR3hCaElSakFDSktvZ0FCRkN3STBPS0FBRXlBNGtxTmhvQ1NSVWlFa1EyR2dGSkZTSVNSSWdBQ2ljRkpVOENWRkN3STBPS0FnR0wvaklERWtFQUJvdi92VXhJaVl2L2kvNVF2VXhJaVNvMkdnRkpGU0lTUklnQUNpY0ZKVThDVkZDd0kwT0tBUUdMLzcxTVNCUkJBQVNML3ltL0k0a3FOaG9DU1JVaUVrUTJHZ0ZKRlNJU1JJZ0FDaWNGSlU4Q1ZGQ3dJME9LQWdHTC80ditVTDFNU0JSQkFBZUwvNHYrVUNtL0k0azJHZ0VYaUFBQ0kwT0tBUUNKaUFBQ0kwT0tBQUEyTWdBclpVeElSREVBSzJRU1JJbUlBQUlqUTRvQUFEWXlBQ3RsVEVoRU1RQXJaQkpFc1NPeUVDV3lDRElLc2dBclpMSUhLMlN5Q1N0a3NpQXlBTElCczRrcWlBQUVVTEFqUTRvQUFUWXlBQ3RsVEVoQkFBTXJaSWt5QTRrMkdnRkpGU0lTUklnQUFpTkRpZ0VBTVFBclpCSkVpLzh5QXhKQkFBVXJhVUlBQkN1TC8yZUpLallhQVVrVkloSkVpQUFLSndVbFR3SlVVTEFqUTRvQkFTdGtNUUFTUkNjTGkvOW5JNGsyR2dZWE5ob0ZGellhQkJjMkdnTlhBZ0EyR2dKWEFnQTJHZ0ZYQWdDSUFBSWpRNG9HQUNjRUp3aGtLMlZFakFBeEFDdGtFa2xBQUFZeEFJc0FFaEZFc1NFRnNoQXlDcklBaS8reUM0ditzaitML2JJS2kveXlESXY3c2cyTCtySU9NZ0N5QWJPSmlBQUNJME9LQUFBbkJDY0laQ3RsUkl3QU1RQXJaQkpKUUFBR01RQ0xBQklSUkxFaEJiSVFNZ3F5QURJQXNnR3ppWW9CQVl2L2N3QklpLzl6QVVnSkZvbUtBZ0dMLzR2K2NBQklGb21LQWdHeElRU3lFQ2NPc2hveUNySUFpLzZ5R0l2L3Nob3lBTElCczdRN0l3bkZPbGNFQUltS0FnR3hJN0lRTWdxeUFJdi9zZ2VML2ttVElRZ09SRmNZQ0JleUNESUFzZ0d6STRtS0F3R3hJUWF5RURJS3NnQ0wva21USVFnT1JGY1lDQmV5RW92L3NoU0wvYklSTWdDeUFiTWppWW9EQWJFaEJMSVFKdyt5R2pJS3NnQ0wvYklZaS8reUdvditzaG95QUxJQnM3UTdJd25GT2xjRUFDVlRpWW9DQVNXTC94SkJBQTB5Q25NQVNESUtjd0ZJQ1JhSkk0di9Fa0VBQ1RJS2kvNXdBRWdXaVNFRmkvOFNRUUFrc1NFRXNoQW5EcklhTWdxeUFJditzaGd5Q3JJYU1nQ3lBYk8wT3lNSnhUcFhCQUNKS1ltS0FnRWxpLzhTUVFBRElRU0pJNHYvRWtFQUJvditjUUZJaVNFRmkvOFNRUUFoc1NFRXNoQW5GYklhTWdxeUFJditzaGd5QUxJPQoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwoJYnl0ZSBiNjQgQWJPME95TUp4VHBYQkFBWGlTV0ppZ0FCSndsa0p3WmtGNGovV1ltS0FBRW5DbVFuQjJRWGlQOUxpWW9BQVNjSlpDY0daQmVJLzVLSmlnQUJKd3BrSndka0Y0ai9oSW1LQWdFbkJtUVhKUkpCQUFpTC9vdi9pUDZoaVNjR1pCY2pFa0VBQ3ljSlpJditpLytJL3JHSkp3WmtGeUVGRWtFQUN5Y0paSXYraS8rSS9zV0pKWW1LQWdFbkIyUVhKUkpCQUFpTC9vdi9pUDVpaVNjSFpCY2pFa0VBQ3ljS1pJditpLytJL25LSkp3ZGtGeUVGRWtFQUN5Y0taSXYraS8rSS9vYUpKWW1LQUFDeElRU3lFQ2NXc2hxQUNBQUFBQUFBQUFBQXNob3lDcklBSndoa3NoZ3lBTElCczRtS0FRRW5CRW1BSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJqQUFsakFHTEFZdi9ERUVBTUlzQWdDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3FPTUFJc0JJd2lNQVVML3lJc0FqQUJHQVltS0FnRW5CRWNLaS84cHBVbEJBQVdML2ltbEVFU0kvcCtNQUlqK3FJd0JKd3hrTWdxSStDbWhqQUlwakFPTEFpbW9RUUExaVA2Y2pBU0kvcVdNQll2L0lRU0kvMCtqaXdTSS8wbWlqQWFML2lFRWlQOC9vNHNGaVA4NW9vd0hpd2FMQjZPV2pBTkNBRFdML3ljTm80c0FpLytob293SWkvNG5EYU9MQVl2K29hS01DWXNJaXdta1FRQUZpd2hDQUFLTENZd0tpd0tMQ3FNbkRhS01BNHNES2FWRWl3TkpreVFPUkNpc1NSVkpJZ2xNVWpFQU1ncUk5K1pFZ0FROUFUNTlNUUNMLzR2K1VGQ0xBMG1USkE1RUtLeEpGVWtpQ1V4U1VJc0FTWk1rRGtRb3JFa1ZTU0lKVEZLTEFVbVRKQTVFS0t4SkZVa2lDVXhTVUZCUXNDT01BRVlLaVNvMkdnRkpGU0lTUklnQUNpY0ZKVThDVkZDd0kwT0tBUUVuQkVjSGlQMlRTWk1rRGtRb3JFa1ZTU0lKVEZLTUFJajlqa21USkE1RUtLeEpGVWtpQ1V4U2pBR0xBQ21sU1VFQUJZc0JLYVVRUkNFR01nQUxGb3dDSndaa0Z5VVNRUUFLaXdDTEFxR01BRUlBRUNjSFpCY2xFa0VBQjRzQml3S2hqQUVuREdReUNvajJ5S0ZKa3lRT1JDaXNTUlZKSWdsTVVvd0Rpd0NMLzZPTEE2SkpreVFPUkNpc1NSVkpJZ2xNVW93RWl3R0wvNk9MQTZKSmt5UU9SQ2lzU1JWSklnbE1Vb3dGaXdRcHBVbEJBQVdMQlNtbEVFU0wveklLTVFDSTlzQkVpd1F4QUlqOUIwU0xCVEVBaVAwK1JJc0Fpd1NoU1pNa0RrUW9yRWtWU1NJSlRGS01Cb3NCaXdXaFNaTWtEa1FvckVrVlNTSUpURktNQjRBRXBvNWxYREVBaS85UWl3U0xCVkJRaXdhTEIxQlFVTEFqakFCR0I0bUtBd0VuQkl2K0pSSkJBRG1ML3pnUUl4SkVpLzg0QURFQUVrU0wvemdITWdvU1JJdi9PQWdsRFVTTC96Z2dNZ01TUkl2L09Ba3lBeEpFaS84NENCWkNBS1pDQUtDTC9pTVNRUUJDaS84NEVDRUdFa1NML3pnUmkvMFNSSXYvT0FBeEFCSkVpLzg0RkRJS0VrU0wvemdTSlExRWkvODRJRElERWtTTC96Z1ZNZ01TUkl2L09CSVdRZ0JkUWdCWGkvNGhCUkpCQUUrTC96Z1FJUVFTUkl2L09Ca2xFa1NML3pnWWkvMFNSSXYvT0FBeEFCSkVpLzg0UG9BRkZSOThkWUFTUkl2L09Sb0NqQUNML3prYUFDY1BFa1NML3prYUFUSUtFa1NMQUNtbFJJc0FRZ0FESlVRcGpBQ0pLakVXSXdreEZpRUZDWWdBQ2ljRkpVOENWRkN3STBPS0FnRW5CRW1ML3pnUUlRUVRRUUFEaVB3ZWkvNDRFQ0VFRTBFQUE0ajhFU2NKWkNjR1pCZUwvNGorMG93QUp3cGtKd2RrRjR2K2lQN0VqQUdMQUNtbFNVRUFCWXNCS2FVUVJJc0JTWk1rRGtRb3JFa1ZTU0lKVEZLTEFFbVRKQTVFS0t4SkZVa2lDVXhTaVB4WGpBQkdBWW1LQkFFbkJFY0NKdzJML0tHTUFJdi9pLzJqaXdDampBR0wvNHYrb0lCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRnJ6RUhwQUFLT01Bb3NCaXdLaWpBQkdBb21LQWdFbkJFY0ZpUHFUU1pNa0RrUW9yRWtWU1NJSlRGS01BSWo2amttVEpBNUVLS3hKRlVraUNVeFNqQUdMQUNtbFJJc0JpLzZsUkNjSVpDY1haVVNNQWljTFpJc0NvRW1USkE1RUtLeEpGVWtpQ1V4U2l3R0xBSXYvb1VtVEpBNUVLS3hKRlVraUNVeFNpLytJL3lWSmt5UU9SQ2lzU1JWSklnbE1Vb3dESnd0a2l3R0xBSXYvb1VtVEpBNUVLS3hKRlVraUNVeFNpLytJL3ZoSmt5UU9SQ2lzU1JWSklnbE1Vb3dFaXdTTEE2R01CWXNEaS82blJJc0Rpd0drUklzRE1RQ0krazVFaXdWSmt5UU9SQ2lzU1JWSklnbE1VaWNJWkhJSVNJajZORVFuR0RFQWkvOHBVRkFwaXdOUVVJc0Fpd0dMQktGSmt5UU9SQ2lzU1JWSklnbE1VbEJRVUxDTEE0d0FSZ1dKaWdJQkp3UkhCWWo1aEVtVEpBNUVLS3hKRlVraUNVeFNqQUNJK1g5Smt5UU9SQ2lzU1JWSklnbE1Vb3dCaXdDTC9xVkVpd0VwcFVRbkNHUW5GMlZFakFJbkMyU0xBcUJKa3lRT1JDaXNTUlZKSWdsTVVvc0Fpd0dMLzZGSmt5UU9SQ2lzU1JWSklnbE1Vb3YvaVA0V1NaTWtEa1FvckVrVlNTSUpURktNQXljTFpJc0Fpd0dMLzZGSmt5UU9SQ2lzU1JWSklnbE1Vb3YvaVAzcFNaTWtEa1FvckVrVlNTSUpURktNQklzRWl3T2hqQVdMQTR2K3AwU0xBNHNBcEVTTEF6RUFpUGtBUklzRlNaTWtEa1FvckVrVlNTSUpURkluQ0dSeUNFaUkrT1pFSnhneEFDbUwvMUJRaXdNcFVGQ0xBSXNFb1VtVEpBNUVLS3hKRlVraUNVeFNpd0ZRVUZDd2l3T01BRVlGaVNvMkdnRkpGU0lTUkRFV0l3bUlBQkpKa3lRT1JDaXNTUlZKSWdsTVVsQ3dJME9LQWdFbkJJdi9PQkFoQkJOQkFBT0krUUVuQ1dRbkJtUVhpLytJKzhLTUFJditpd0JKa3lRT1JDaXNTUlZKSWdsTVVvajlpNHdBaVNvMkdnRkpGU0lTUkRFV0l3bUlBQkpKa3lRT1JDZz0KCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCWJ5dGUgYjY0IHJFa1ZTU0lKVEZKUXNDTkRpZ0lCSndTTC96Z1FJUVFUUVFBRGlQaW5Kd3BrSndka0Y0di9pUHRvakFDTC9vc0FTWk1rRGtRb3JFa1ZTU0lKVEZLSS9rQ01BSWsyR2dsSkZTSVNSRFlhQ0VrVkl4SkVGellhQnhjMkdnWkpGU01TUkJjMkdnVVhOaG9FU1JVaEJ4SkVOaG9EU1JVaUVrUTJHZ0pKRlNJU1JEWWFBUmVJQUFJalE0b0pBQ3VML21jbkVZdjlaeWNTaS94bkp4T0FBUVpuSnd3bkRZRUtJUVNVRnFOSmt5UU9SQ2lzU1JWSklnbE1VbWNuRUNVbkJTVlBBbFJuSndpTC8yY25DWXY3WnljS2kvbG5Kd2FMK2haWEJ3Rm5Kd2VMK0JaWEJ3Rm5Kd3VMOTJlSmlBQUNJME9LQUFBeEFDdGtFa1FuRUdRbFV5TVRSQ2NRSXljRkpVOENWR2N5Q2ljTVpMOG5CbVFYSXhKQkFBb25DV1FwTWdxSTlmMUVKd2RrRnlNU1FRQUtKd3BrS1RJS2lQWHFSSW1BQkNScUl6VTJHZ0NPQWY4QUFJQUVaWDBUN0lBRXRxNGFKU2NWZ0FUc21XQkJKdzZBQkx1ekdmTW5ENEFFdFVJaEpZQUVTcGFQajRBRVRpS2p1b0FFTTI2Tlg0QUVaakJDKzRBRXZFcFVBSUFFeVkzUVZTY1dnQVJuUTBBeGdBUjU5YkNOZ0FSd2dFZHBnQVRZTmFkR2dBUXpvUU5jZ0FSVUxnOExnQVRPTVlvNmdBVEZzWmJPZ0FRQ3dmTFFnQVMreDIySE5ob0FqaG52TSs5QzcxSHZhKytJNzdqd2hmRGo4UTd4dS9LNjhzanpBUE1vODE3enRmUFE4L2owSHZTRitGcjZlLzJPL2VqKzZBQ0FCRWIzWlRNMkdnQ09BZk5kQUlBRUpJZkRMRFlhQUk0QjgyWUEKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6ODUKCS8vIGNsZWFyU3RhdGVQcm9ncmFtOiBQb29sLmNsZWFyUHJvZ3JhbSgpCglieXRlIGI2NCBDZz09CglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjg2CgkvLyBleHRyYVByb2dyYW1QYWdlczogMwoJaW50IDMKCWl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6ODcKCS8vIGxvY2FsTnVtQnl0ZVNsaWNlOiBQb29sLnNjaGVtYS5sb2NhbC5udW1CeXRlU2xpY2UKCWludCAwCglpdHhuX2ZpZWxkIExvY2FsTnVtQnl0ZVNsaWNlCgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjg4CgkvLyBsb2NhbE51bVVpbnQ6IFBvb2wuc2NoZW1hLmxvY2FsLm51bVVpbnQKCWludCAwCglpdHhuX2ZpZWxkIExvY2FsTnVtVWludAoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czo4OQoJLy8gZ2xvYmFsTnVtQnl0ZVNsaWNlOiBQb29sLnNjaGVtYS5nbG9iYWwubnVtQnl0ZVNsaWNlCglpbnQgOQoJaXR4bl9maWVsZCBHbG9iYWxOdW1CeXRlU2xpY2UKCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6OTAKCS8vIGdsb2JhbE51bVVpbnQ6IFBvb2wuc2NoZW1hLmdsb2JhbC5udW1VaW50CglpbnQgMwoJaXR4bl9maWVsZCBHbG9iYWxOdW1VaW50CgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjkxCgkvLyBmZWU6IGdsb2JhbHMubWluVHhuRmVlCglnbG9iYWwgTWluVHhuRmVlCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6OTMKCS8vIHBvb2xJZCA9IHRoaXMuaXR4bi5jcmVhdGVkQXBwbGljYXRpb25JRAoJaXR4biBDcmVhdGVkQXBwbGljYXRpb25JRAoJZnJhbWVfYnVyeSAwIC8vIHBvb2xJZDogdWludDY0CgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjk1CgkvLyBzZW5kUGF5bWVudCh7CgkvLyAgICAgICBzZW5kZXI6IHRoaXMuYXBwLmFkZHJlc3MsCgkvLyAgICAgICByZWNlaXZlcjogcG9vbElkLmFkZHJlc3MsCgkvLyAgICAgICBhbW91bnQ6IGdsb2JhbHMubWluQmFsYW5jZSAqIDUgKyBnbG9iYWxzLm1pblR4bkZlZSAqIDEwLAoJLy8gICAgICAgZmVlOiBnbG9iYWxzLm1pblR4bkZlZSwKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IHBheQoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czo5NgoJLy8gc2VuZGVyOiB0aGlzLmFwcC5hZGRyZXNzCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJaXR4bl9maWVsZCBTZW5kZXIKCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6OTcKCS8vIHJlY2VpdmVyOiBwb29sSWQuYWRkcmVzcwoJZnJhbWVfZGlnIDAgLy8gcG9vbElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czo5OAoJLy8gYW1vdW50OiBnbG9iYWxzLm1pbkJhbGFuY2UgKiA1ICsgZ2xvYmFscy5taW5UeG5GZWUgKiAxMAoJZ2xvYmFsIE1pbkJhbGFuY2UKCWludCA1CgkqCglnbG9iYWwgTWluVHhuRmVlCglpbnQgMTAKCSoKCSsKCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjk5CgkvLyBmZWU6IGdsb2JhbHMubWluVHhuRmVlCglnbG9iYWwgTWluVHhuRmVlCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6MTAyCgkvLyB0aGlzLlBvb2xDcmVhdGVkLmxvZyh7CgkvLyAgICAgICBwb29sSWQ6IHBvb2xJZCwKCS8vICAgICAgIGFscGhhSWQ6IGFscGhhSWQsCgkvLyAgICAgICBhbHBoYVR5cGU6IGFscGhhVHlwZSwKCS8vICAgICAgIGJldGFJZDogYmV0YUlkLAoJLy8gICAgICAgYmV0YVR5cGU6IGJldGFUeXBlLAoJLy8gICAgICAgc3dhcEZlZTogc3dhcEZlZSwKCS8vICAgICB9KQoJYnl0ZSAweGUwYzgzODQzIC8vIFBvb2xDcmVhdGVkKHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ4LHVpbnQyNTYpCglmcmFtZV9kaWcgMCAvLyBwb29sSWQ6IHVpbnQ2NAoJaXRvYgoJZnJhbWVfZGlnIC00IC8vIGFscGhhSWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTUgLy8gYWxwaGFUeXBlOiB1aW50OAoJaXRvYgoJZXh0cmFjdCA3IDEKCWNvbmNhdAoJZnJhbWVfZGlnIC02IC8vIGJldGFJZDogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtNyAvLyBiZXRhVHlwZTogdWludDgKCWl0b2IKCWV4dHJhY3QgNyAxCgljb25jYXQKCWZyYW1lX2RpZyAtOCAvLyBzd2FwRmVlOiB1aW50MjU2Cgljb25jYXQKCWNvbmNhdAoJbG9nCgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjExMQoJLy8gcmV0dXJuIHBvb2xJZC5pZDsKCWZyYW1lX2RpZyAwIC8vIHBvb2xJZDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIHBvb2xCb290c3RyYXAodWludDY0KXZvaWQKKmFiaV9yb3V0ZV9wb29sQm9vdHN0cmFwOgoJLy8gcG9vbElkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIHBvb2xCb290c3RyYXAodWludDY0KXZvaWQKCWNhbGxzdWIgcG9vbEJvb3RzdHJhcAoJaW50IDEKCXJldHVybgoKLy8gcG9vbEJvb3RzdHJhcChwb29sSWQ6IEFwcElEKTogdm9pZApwb29sQm9vdHN0cmFwOgoJcHJvdG8gMSAwCgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjExNQoJLy8gc2VuZE1ldGhvZENhbGw8W10sIHZvaWQ+KHsKCS8vICAgICAgIG5hbWU6ICdib290c3RyYXAnLAoJLy8gICAgICAgbWV0aG9kQXJnczogW10sCgkvLyAgICAgICBzZW5kZXI6IHRoaXMuYXBwLmFkZHJlc3MsCgkvLyAgICAgICBhcHBsaWNhdGlvbklEOiBwb29sSWQsCgkvLyAgICAgICBmZWU6IGdsb2JhbHMubWluVHhuRmVlLAoJLy8gICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJib290c3RyYXAoKXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czoxMTcKCS8vIG1ldGhvZEFyZ3M6IFtdCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6MTE4CgkvLyBzZW5kZXI6IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglpdHhuX2ZpZWxkIFNlbmRlcgoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czoxMTkKCS8vIGFwcGxpY2F0aW9uSUQ6IHBvb2xJZAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xJZDogQXBwSUQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czoxMjAKCS8vIGZlZTogZ2xvYmFscy5taW5UeG5GZWUKCWdsb2JhbCBNaW5UeG5GZWUKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czoxMjMKCS8vIHRoaXMuUG9vbEJvb3RzdHJhcC5sb2coewoJLy8gICAgICAgcG9vbElkOiBwb29sSWQsCgkvLyAgICAgfSkKCWJ5dGUgMHg0ZWZkMzdmZCAvLyBQb29sQm9vdHN0cmFwKHVpbnQ2NCkKCWZyYW1lX2RpZyAtMSAvLyBwb29sSWQ6IEFwcElECglpdG9iCgljb25jYXQKCWxvZwoJcmV0c3ViCgovLyBzZXRGZWUodWludDY0KWJvb2wKKmFiaV9yb3V0ZV9zZXRGZWU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIGZlZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBzZXRGZWUodWludDY0KWJvb2wKCWNhbGxzdWIgc2V0RmVlCglieXRlIDB4MDAKCWludCAwCgl1bmNvdmVyIDIKCXNldGJpdAoJY29uY2F0Cglsb2cKCWludCAxCglyZXR1cm4KCi8vIHNldEZlZShmZWU6IHVpbnQ2NCk6IGJvb2xlYW4Kc2V0RmVlOgoJcHJvdG8gMSAxCgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjEyOQoJLy8gYXNzZXJ0KHRoaXMud2FyZGVuLnZhbHVlID09PSB0aGlzLnR4bi5zZW5kZXIsICJ1bmF1dGhvcml6ZWQiKQoJYnl0ZSAweDc3NjE3MjY0NjU2ZSAvLyAid2FyZGVuIgoJYXBwX2dsb2JhbF9nZXQKCXR4biBTZW5kZXIKCT09CgoJLy8gdW5hdXRob3JpemVkCglhc3NlcnQKCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6MTMwCgkvLyB0aGlzLmJvb3RzdHJhcEZlZS52YWx1ZSA9IGZlZQoJYnl0ZSAweDYyNmY2Zjc0NzM3NDcyNjE3MDVmNjY2NTY1IC8vICJib290c3RyYXBfZmVlIgoJZnJhbWVfZGlnIC0xIC8vIGZlZTogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czoxMzEKCS8vIHJldHVybiB0cnVlOwoJaW50IDEKCXJldHN1YgoKLy8gc2V0UGxhdGZvcm1GZWUodWludDI1Nilib29sCiphYmlfcm91dGVfc2V0UGxhdGZvcm1GZWU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGUgMHgxNTFmN2M3NQoKCS8vIGZlZTogdWludDI1NgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChmZWUpIGZvciBzZXRQbGF0Zm9ybUZlZSBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzZXRQbGF0Zm9ybUZlZSh1aW50MjU2KWJvb2wKCWNhbGxzdWIgc2V0UGxhdGZvcm1GZWUKCWJ5dGUgMHgwMAoJaW50IDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50IDEKCXJldHVybgoKLy8gc2V0UGxhdGZvcm1GZWUoZmVlOiB1aW50MjU2KTogYm9vbGVhbgpzZXRQbGF0Zm9ybUZlZToKCXByb3RvIDEgMQoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czoxMzUKCS8vIGFzc2VydCh0aGlzLndhcmRlbi52YWx1ZSA9PT0gdGhpcy50eG4uc2VuZGVyLCAidW5hdXRob3JpemVkIikKCWJ5dGUgMHg3NzYxNzI2NDY1NmUgLy8gIndhcmRlbiIKCWFwcF9nbG9iYWxfZ2V0Cgl0eG4gU2VuZGVyCgk9PQoKCS8vIHVuYXV0aG9yaXplZAoJYXNzZXJ0CgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjEzNgoJLy8gdGhpcy5wbGF0Zm9ybUZlZS52YWx1ZSA9IGZlZQoJYnl0ZSAweDcwNmM2MTc0NjY2ZjcyNmQ1ZjY2NjU2NSAvLyAicGxhdGZvcm1fZmVlIgoJZnJhbWVfZGlnIC0xIC8vIGZlZTogdWludDI1NgoJYXBwX2dsb2JhbF9wdXQKCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6MTM3CgkvLyByZXR1cm4gdHJ1ZTsKCWludCAxCglyZXRzdWIKCi8vIHNldFBvb2xNYW5hZ2VyKHVpbnQ2NCxhZGRyZXNzKXZvaWQKKmFiaV9yb3V0ZV9zZXRQb29sTWFuYWdlcjoKCS8vIG1hbmFnZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnQgMzIKCT09CgoJLy8gYXJndW1lbnQgMCAobWFuYWdlcikgZm9yIHNldFBvb2xNYW5hZ2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBwb29sSWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgc2V0UG9vbE1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZAoJY2FsbHN1YiBzZXRQb29sTWFuYWdlcgoJaW50IDEKCXJldHVybgoKLy8gc2V0UG9vbE1hbmFnZXIocG9vbElkOiBBcHBJRCwgbWFuYWdlcjogQWRkcmVzcyk6IHZvaWQKc2V0UG9vbE1hbmFnZXI6Cglwcm90byAyIDAKCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6MTQxCgkvLyBhc3NlcnQodGhpcy53YXJkZW4udmFsdWUgPT09IHRoaXMudHhuLnNlbmRlciwgInVuYXV0aG9yaXplZCIpCglieXRlIDB4Nzc2MTcyNjQ2NTZlIC8vICJ3YXJkZW4iCglhcHBfZ2xvYmFsX2dldAoJdHhuIFNlbmRlcgoJPT0KCgkvLyB1bmF1dGhvcml6ZWQKCWFzc2VydAoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czoxNDIKCS8vIHNlbmRNZXRob2RDYWxsPFtBZGRyZXNzXSwgdm9pZD4oewoJLy8gICAgICAgbmFtZTogJ2dyYW50JywKCS8vICAgICAgIG1ldGhvZEFyZ3M6IFttYW5hZ2VyXSwKCS8vICAgICAgIHNlbmRlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgIGFwcGxpY2F0aW9uSUQ6IHBvb2xJZCwKCS8vICAgICAgIGZlZTogZ2xvYmFscy5taW5UeG5GZWUKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAiZ3JhbnQoYWRkcmVzcyl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6MTQ0CgkvLyBtZXRob2RBcmdzOiBbbWFuYWdlcl0KCWZyYW1lX2RpZyAtMiAvLyBtYW5hZ2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czoxNDUKCS8vIHNlbmRlcjogdGhpcy5hcHAuYWRkcmVzcwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgU2VuZGVyCgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjE0NgoJLy8gYXBwbGljYXRpb25JRDogcG9vbElkCglmcmFtZV9kaWcgLTEgLy8gcG9vbElkOiBBcHBJRAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjE0NwoJLy8gZmVlOiBnbG9iYWxzLm1pblR4bkZlZQoJZ2xvYmFsIE1pblR4bkZlZQoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIHNldFBvb2xGZWUodWludDY0LHVpbnQyNTYpdm9pZAoqYWJpX3JvdXRlX3NldFBvb2xGZWU6CgkvLyBmZWU6IHVpbnQyNTYKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnQgMzIKCT09CgoJLy8gYXJndW1lbnQgMCAoZmVlKSBmb3Igc2V0UG9vbEZlZSBtdXN0IGJlIGEgdWludDI1NgoJYXNzZXJ0CgoJLy8gcG9vbElkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIHNldFBvb2xGZWUodWludDY0LHVpbnQyNTYpdm9pZAoJY2FsbHN1YiBzZXRQb29sRmVlCglpbnQgMQoJcmV0dXJuCgovLyBzZXRQb29sRmVlKHBvb2xJZDogQXBwSUQsIGZlZTogdWludDI1Nik6IHZvaWQKc2V0UG9vbEZlZToKCXByb3RvIDIgMAoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czoxNTIKCS8vIGFzc2VydCh0aGlzLndhcmRlbi52YWx1ZSA9PT0gdGhpcy50eG4uc2VuZGVyLCAidW5hdXRob3JpemVkIikKCWJ5dGUgMHg3NzYxNzI2NDY1NmUgLy8gIndhcmRlbiIKCWFwcF9nbG9iYWxfZ2V0Cgl0eG4gU2VuZGVyCgk9PQoKCS8vIHVuYXV0aG9yaXplZAoJYXNzZXJ0CgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjE1MwoJLy8gc2VuZE1ldGhvZENhbGw8W3VpbnQyNTZdLCBib29sZWFuPih7CgkvLyAgICAgICBuYW1lOiAnc2V0RmVlcycsCgkvLyAgICAgICBtZXRob2RBcmdzOiBbZmVlXSwKCS8vICAgICAgIHNlbmRlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgIGFwcGxpY2F0aW9uSUQ6IHBvb2xJZCwKCS8vICAgICAgIGZlZTogZ2xvYmFscy5taW5UeG5GZWUKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAic2V0RmVlcyh1aW50MjU2KWJvb2wiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czoxNTUKCS8vIG1ldGhvZEFyZ3M6IFtmZWVdCglmcmFtZV9kaWcgLTIgLy8gZmVlOiB1aW50MjU2CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czoxNTYKCS8vIHNlbmRlcjogdGhpcy5hcHAuYWRkcmVzcwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgU2VuZGVyCgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjE1NwoJLy8gYXBwbGljYXRpb25JRDogcG9vbElkCglmcmFtZV9kaWcgLTEgLy8gcG9vbElkOiBBcHBJRAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjE1OAoJLy8gZmVlOiBnbG9iYWxzLm1pblR4bkZlZQoJZ2xvYmFsIE1pblR4bkZlZQoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludCAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWludCAwCglnZXRiaXQKCXJldHN1YgoKLy8gd2l0aGRyYXcoYWRkcmVzcyx1aW50MjU2LCh1aW50NjQsdWludDY0KSl2b2lkCiphYmlfcm91dGVfd2l0aGRyYXc6CgkvLyBpZDogKHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglkdXAKCWxlbgoJaW50IDE2Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKGlkKSBmb3Igd2l0aGRyYXcgbXVzdCBiZSBhICh1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gYW1vdW50OiB1aW50MjU2Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50IDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKGFtb3VudCkgZm9yIHdpdGhkcmF3IG11c3QgYmUgYSB1aW50MjU2Cglhc3NlcnQKCgkvLyB0bzogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAzMgoJPT0KCgkvLyBhcmd1bWVudCAyICh0bykgZm9yIHdpdGhkcmF3IG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIHdpdGhkcmF3KGFkZHJlc3MsdWludDI1NiwodWludDY0LHVpbnQ2NCkpdm9pZAoJY2FsbHN1YiB3aXRoZHJhdwoJaW50IDEKCXJldHVybgoKLy8gd2l0aGRyYXcodG86IEFkZHJlc3MsIGFtb3VudDogdWludDI1NiwgaWQ6IFt1aW50NjQsIHVpbnQ2NF0pOiB2b2lkCndpdGhkcmF3OgoJcHJvdG8gMyAwCgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjE2MwoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy53YXJkZW4udmFsdWUsICJ1bmF1dGhvcml6ZWQiKQoJdHhuIFNlbmRlcgoJYnl0ZSAweDc3NjE3MjY0NjU2ZSAvLyAid2FyZGVuIgoJYXBwX2dsb2JhbF9nZXQKCT09CgoJLy8gdW5hdXRob3JpemVkCglhc3NlcnQKCgkvLyAqaWY0X2NvbmRpdGlvbgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjE2NAoJLy8gaWRbMF0gPiAwCglmcmFtZV9kaWcgLTMgLy8gaWQ6IFt1aW50NjQsIHVpbnQ2NF0KCWV4dHJhY3QgMCA4CglidG9pCglpbnQgMAoJPgoJYnogKmlmNF9lbHNlaWYxX2NvbmRpdGlvbgoKCS8vICppZjRfY29uc2VxdWVudAoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjE2NQoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NChpZFswXSksCgkvLyAgICAgICAgIHNlbmRlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgYXNzZXRSZWNlaXZlcjogdG8sCgkvLyAgICAgICAgIGFzc2V0QW1vdW50OiA8dWludDY0PmFtb3VudCwKCS8vICAgICAgICAgZmVlOiBnbG9iYWxzLm1pblR4bkZlZSwKCS8vICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6MTY2CgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NChpZFswXSkKCWZyYW1lX2RpZyAtMyAvLyBpZDogW3VpbnQ2NCwgdWludDY0XQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjE2NwoJLy8gc2VuZGVyOiB0aGlzLmFwcC5hZGRyZXNzCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJaXR4bl9maWVsZCBTZW5kZXIKCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6MTY4CgkvLyBhc3NldFJlY2VpdmVyOiB0bwoJZnJhbWVfZGlnIC0xIC8vIHRvOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6MTY5CgkvLyBhc3NldEFtb3VudDogPHVpbnQ2ND5hbW91bnQKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnQ6IHVpbnQyNTYKCWR1cAoJYml0bGVuCglpbnQgNjQKCTw9CgoJLy8gPHVpbnQ2ND5hbW91bnQgb3ZlcmZsb3dlZCA2NCBiaXRzCglhc3NlcnQKCWV4dHJhY3QgMjQgOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czoxNzAKCS8vIGZlZTogZ2xvYmFscy5taW5UeG5GZWUKCWdsb2JhbCBNaW5UeG5GZWUKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJYiAqaWY0X2VuZAoKKmlmNF9lbHNlaWYxX2NvbmRpdGlvbjoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czoxNzIKCS8vIGlkWzFdID4gMAoJZnJhbWVfZGlnIC0zIC8vIGlkOiBbdWludDY0LCB1aW50NjRdCglleHRyYWN0IDggOAoJYnRvaQoJaW50IDAKCT4KCWJ6ICppZjRfZWxzZQoKCS8vICppZjRfZWxzZWlmMV9jb25zZXF1ZW50CgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6MTczCgkvLyBzZW5kTWV0aG9kQ2FsbDxbQWRkcmVzcywgdWludDI1Nl0sIHVpbnQyNTY+KHsKCS8vICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChpZFsxXSksCgkvLyAgICAgICAgIHNlbmRlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgbmFtZTogJ2FyYzIwMF90cmFuc2ZlcicsCgkvLyAgICAgICAgIG1ldGhvZEFyZ3M6IFt0bywgYW1vdW50XSwKCS8vICAgICAgICAgZmVlOiBnbG9iYWxzLm1pblR4bkZlZSwKCS8vICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJhcmMyMDBfdHJhbnNmZXIoYWRkcmVzcyx1aW50MjU2KXVpbnQyNTYiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czoxNzQKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQoaWRbMV0pCglmcmFtZV9kaWcgLTMgLy8gaWQ6IFt1aW50NjQsIHVpbnQ2NF0KCWV4dHJhY3QgOCA4CglidG9pCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6MTc1CgkvLyBzZW5kZXI6IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglpdHhuX2ZpZWxkIFNlbmRlcgoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czoxNzcKCS8vIG1ldGhvZEFyZ3M6IFt0bywgYW1vdW50XQoJZnJhbWVfZGlnIC0xIC8vIHRvOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudDogdWludDI1NgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6MTc4CgkvLyBmZWU6IGdsb2JhbHMubWluVHhuRmVlCglnbG9iYWwgTWluVHhuRmVlCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50IDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJYiAqaWY0X2VuZAoKKmlmNF9lbHNlOgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjE4MQoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICBzZW5kZXI6IHRoaXMuYXBwLmFkZHJlc3MsCgkvLyAgICAgICAgIHJlY2VpdmVyOiB0bywKCS8vICAgICAgICAgYW1vdW50OiA8dWludDY0PmFtb3VudCwKCS8vICAgICAgICAgZmVlOiBnbG9iYWxzLm1pblR4bkZlZSwKCS8vICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnQgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjE4MgoJLy8gc2VuZGVyOiB0aGlzLmFwcC5hZGRyZXNzCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJaXR4bl9maWVsZCBTZW5kZXIKCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6MTgzCgkvLyByZWNlaXZlcjogdG8KCWZyYW1lX2RpZyAtMSAvLyB0bzogQWRkcmVzcwoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIHNyYy9jb250cmFjdHMvUG9vbEZhY3RvcnkuYWxnby50czoxODQKCS8vIGFtb3VudDogPHVpbnQ2ND5hbW91bnQKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnQ6IHVpbnQyNTYKCWR1cAoJYml0bGVuCglpbnQgNjQKCTw9CgoJLy8gPHVpbnQ2ND5hbW91bnQgb3ZlcmZsb3dlZCA2NCBiaXRzCglhc3NlcnQKCWV4dHJhY3QgMjQgOAoJYnRvaQoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBzcmMvY29udHJhY3RzL1Bvb2xGYWN0b3J5LmFsZ28udHM6MTg1CgkvLyBmZWU6IGdsb2JhbHMubWluVHhuRmVlCglnbG9iYWwgTWluVHhuRmVlCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjRfZW5kOgoJLy8gc3JjL2NvbnRyYWN0cy9Qb29sRmFjdG9yeS5hbGdvLnRzOjE4OAoJLy8gdGhpcy5XaXRoZHJhdy5sb2coewoJLy8gICAgICAgdG86IHRvLAoJLy8gICAgICAgYW1vdW50OiBhbW91bnQsCgkvLyAgICAgICBhc2FJZDogaWRbMF0sCgkvLyAgICAgICBzbWFydEFzc2V0SWQ6IGlkWzFdCgkvLyAgICAgfSkKCWJ5dGUgMHhlYmI3NmRkOCAvLyBXaXRoZHJhdyhhZGRyZXNzLHVpbnQyNTYsdWludDY0LHVpbnQ2NCkKCWZyYW1lX2RpZyAtMSAvLyB0bzogQWRkcmVzcwoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudDogdWludDI1NgoJY29uY2F0CglmcmFtZV9kaWcgLTMgLy8gaWQ6IFt1aW50NjQsIHVpbnQ2NF0KCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBpZDogW3VpbnQ2NCwgdWludDY0XQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY29uY2F0Cglsb2cKCXJldHN1YgoKLy8gbm9vcCh1aW50NjQpdm9pZAoqYWJpX3JvdXRlX25vb3A6CgkvLyBfbjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBub29wKHVpbnQ2NCl2b2lkCgljYWxsc3ViIG5vb3AKCWludCAxCglyZXR1cm4KCi8vIG5vb3AoX246IHVpbnQ2NCk6IHZvaWQKbm9vcDoKCXByb3RvIDEgMAoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CgltZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJbWV0aG9kICJtYW5hZ2VyKClhZGRyZXNzIgoJbWV0aG9kICJncmFudChhZGRyZXNzKXZvaWQiCgltZXRob2QgImNyZWF0ZVBvb2wocGF5LGJ5dGVbMzJdLGJ5dGVbOF0sdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50OCx1aW50MjU2KXVpbnQ2NCIKCW1ldGhvZCAicG9vbEJvb3RzdHJhcCh1aW50NjQpdm9pZCIKCW1ldGhvZCAic2V0RmVlKHVpbnQ2NClib29sIgoJbWV0aG9kICJzZXRQbGF0Zm9ybUZlZSh1aW50MjU2KWJvb2wiCgltZXRob2QgInNldFBvb2xNYW5hZ2VyKHVpbnQ2NCxhZGRyZXNzKXZvaWQiCgltZXRob2QgInNldFBvb2xGZWUodWludDY0LHVpbnQyNTYpdm9pZCIKCW1ldGhvZCAid2l0aGRyYXcoYWRkcmVzcyx1aW50MjU2LCh1aW50NjQsdWludDY0KSl2b2lkIgoJbWV0aG9kICJub29wKHVpbnQ2NCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9tYW5hZ2VyICphYmlfcm91dGVfZ3JhbnQgKmFiaV9yb3V0ZV9jcmVhdGVQb29sICphYmlfcm91dGVfcG9vbEJvb3RzdHJhcCAqYWJpX3JvdXRlX3NldEZlZSAqYWJpX3JvdXRlX3NldFBsYXRmb3JtRmVlICphYmlfcm91dGVfc2V0UG9vbE1hbmFnZXIgKmFiaV9yb3V0ZV9zZXRQb29sRmVlICphYmlfcm91dGVfd2l0aGRyYXcgKmFiaV9yb3V0ZV9ub29wCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJyCgoqY2FsbF9VcGRhdGVBcHBsaWNhdGlvbjoKCW1ldGhvZCAidXBkYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX3VwZGF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgVXBkYXRlQXBwbGljYXRpb24KCWVycgoKKmNhbGxfRGVsZXRlQXBwbGljYXRpb246CgltZXRob2QgImRlbGV0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9kZWxldGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIERlbGV0ZUFwcGxpY2F0aW9uCgllcnI=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "contract": { "name": "PoolFactory", "desc": "", "methods": [ { "name": "updat