{ "address": "0x1c2bB46f36561bc4F05A94BD50916496aa501078", "abi": [ { "inputs": [ { "components": [ { "internalType": "address", "name": "liquidity", "type": "address" }, { "internalType": "address", "name": "factory", "type": "address" }, { "internalType": "address", "name": "adminImplementation", "type": "address" }, { "internalType": "address", "name": "secondaryImplementation", "type": "address" }, { "internalType": "address", "name": "supplyToken", "type": "address" }, { "internalType": "address", "name": "borrowToken", "type": "address" }, { "internalType": "uint8", "name": "supplyDecimals", "type": "uint8" }, { "internalType": "uint8", "name": "borrowDecimals", "type": "uint8" }, { "internalType": "uint256", "name": "vaultId", "type": "uint256" }, { "internalType": "bytes32", "name": "liquiditySupplyExchangePriceSlot", "type": "bytes32" }, { "internalType": "bytes32", "name": "liquidityBorrowExchangePriceSlot", "type": "bytes32" }, { "internalType": "bytes32", "name": "liquidityUserSupplySlot", "type": "bytes32" }, { "internalType": "bytes32", "name": "liquidityUserBorrowSlot", "type": "bytes32" } ], "internalType": "struct Structs.ConstantViews", "name": "constants_", "type": "tuple" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "uint256", "name": "colLiquidated", "type": "uint256" }, { "internalType": "uint256", "name": "debtLiquidated", "type": "uint256" } ], "name": "FluidLiquidateResult", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "errorId_", "type": "uint256" } ], "name": "FluidLiquidityCalcsError", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "errorId_", "type": "uint256" } ], "name": "FluidSafeTransferError", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "errorId_", "type": "uint256" } ], "name": "FluidVaultError", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "colAbsorbedRaw_", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "debtAbsorbedRaw_", "type": "uint256" } ], "name": "LogAbsorb", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "liquidator_", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "colAmt_", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "debtAmt_", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "to_", "type": "address" } ], "name": "LogLiquidate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "user_", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "nftId_", "type": "uint256" }, { "indexed": false, "internalType": "int256", "name": "colAmt_", "type": "int256" }, { "indexed": false, "internalType": "int256", "name": "debtAmt_", "type": "int256" }, { "indexed": false, "internalType": "address", "name": "to_", "type": "address" } ], "name": "LogOperate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "int256", "name": "colAmt_", "type": "int256" }, { "indexed": false, "internalType": "int256", "name": "debtAmt_", "type": "int256" } ], "name": "LogRebalance", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "supplyExPrice_", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "borrowExPrice_", "type": "uint256" } ], "name": "LogUpdateExchangePrice", "type": "event" }, { "stateMutability": "nonpayable", "type": "fallback" }, { "inputs": [], "name": "LIQUIDITY", "outputs": [ { "internalType": "contract IFluidLiquidity", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "VAULT_FACTORY", "outputs": [ { "internalType": "contract IFluidVaultFactory", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "VAULT_ID", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "absorb", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "constantsView", "outputs": [ { "components": [ { "internalType": "address", "name": "liquidity", "type": "address" }, { "internalType": "address", "name": "factory", "type": "address" }, { "internalType": "address", "name": "adminImplementation", "type": "address" }, { "internalType": "address", "name": "secondaryImplementation", "type": "address" }, { "internalType": "address", "name": "supplyToken", "type": "address" }, { "internalType": "address", "name": "borrowToken", "type": "address" }, { "internalType": "uint8", "name": "supplyDecimals", "type": "uint8" }, { "internalType": "uint8", "name": "borrowDecimals", "type": "uint8" }, { "internalType": "uint256", "name": "vaultId", "type": "uint256" }, { "internalType": "bytes32", "name": "liquiditySupplyExchangePriceSlot", "type": "bytes32" }, { "internalType": "bytes32", "name": "liquidityBorrowExchangePriceSlot", "type": "bytes32" }, { "internalType": "bytes32", "name": "liquidityUserSupplySlot", "type": "bytes32" }, { "internalType": "bytes32", "name": "liquidityUserBorrowSlot", "type": "bytes32" } ], "internalType": "struct Structs.ConstantViews", "name": "constantsView_", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "int256", "name": "positionTick_", "type": "int256" }, { "internalType": "uint256", "name": "positionTickId_", "type": "uint256" }, { "internalType": "uint256", "name": "positionRawDebt_", "type": "uint256" }, { "internalType": "uint256", "name": "tickData_", "type": "uint256" } ], "name": "fetchLatestPosition", "outputs": [ { "internalType": "int256", "name": "", "type": "int256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "positionRawCol_", "type": "uint256" }, { "internalType": "uint256", "name": "branchId_", "type": "uint256" }, { "internalType": "uint256", "name": "branchData_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "debtAmt_", "type": "uint256" }, { "internalType": "uint256", "name": "colPerUnitDebt_", "type": "uint256" }, { "internalType": "address", "name": "to_", "type": "address" }, { "internalType": "bool", "name": "absorb_", "type": "bool" } ], "name": "liquidate", "outputs": [ { "internalType": "uint256", "name": "actualDebtAmt_", "type": "uint256" }, { "internalType": "uint256", "name": "actualColAmt_", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token_", "type": "address" }, { "internalType": "uint256", "name": "amount_", "type": "uint256" }, { "internalType": "bytes", "name": "data_", "type": "bytes" } ], "name": "liquidityCallback", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "nftId_", "type": "uint256" }, { "internalType": "int256", "name": "newCol_", "type": "int256" }, { "internalType": "int256", "name": "newDebt_", "type": "int256" }, { "internalType": "address", "name": "to_", "type": "address" } ], "name": "operate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "int256", "name": "", "type": "int256" }, { "internalType": "int256", "name": "", "type": "int256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "slot_", "type": "bytes32" } ], "name": "readFromStorage", "outputs": [ { "internalType": "uint256", "name": "result_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rebalance", "outputs": [ { "internalType": "int256", "name": "supplyAmt_", "type": "int256" }, { "internalType": "int256", "name": "borrowAmt_", "type": "int256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "vaultVariables2_", "type": "uint256" } ], "name": "updateExchangePrices", "outputs": [ { "internalType": "uint256", "name": "liqSupplyExPrice_", "type": "uint256" }, { "internalType": "uint256", "name": "liqBorrowExPrice_", "type": "uint256" }, { "internalType": "uint256", "name": "vaultSupplyExPrice_", "type": "uint256" }, { "internalType": "uint256", "name": "vaultBorrowExPrice_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "updateExchangePricesOnStorage", "outputs": [ { "internalType": "uint256", "name": "liqSupplyExPrice_", "type": "uint256" }, { "internalType": "uint256", "name": "liqBorrowExPrice_", "type": "uint256" }, { "internalType": "uint256", "name": "vaultSupplyExPrice_", "type": "uint256" }, { "internalType": "uint256", "name": "vaultBorrowExPrice_", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" } ], "transactionHash": "0xf293ef8cae6025ff66f56834a6386d3ada8fefde89c32c0ba7898f6930b5199d", "args": [ { "liquidity": "0x52Aa899454998Be5b000Ad077a46Bbe360F4e497", "factory": "0x324c5Dc1fC42c7a4D43d92df1eBA58a54d13Bf2d", "adminImplementation": "0x8730d7a5aF435678b2686289eEB6A74A042081e6", "secondaryImplementation": "0x836580Dc0B1FF9351c58c173CD1dA8b31A536733", "supplyToken": "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", "borrowToken": "0xdac17f958d2ee523a2206206994597c13d831ec7", "supplyDecimals": 18, "borrowDecimals": 6, "vaultId": 5, "liquidityTotalSupplySlot": "0x94416004645a626907820dc10a83f0e7e82fe5572b44e84e877643ce205ff0ed", "liquidityTotalBorrowSlot": "0x76591fc11dbbd749b6df72a71faf88b812c3702b5747249a615a8b3dc6bb6a6a", "liquiditySupplyExchangePriceSlot": "0xc24eaceff5753c99066a839532d708a8661af7a9b01d44d0cd915c53969eb725", "liquidityBorrowExchangePriceSlot": "0x0a7e0e74b40a947daf7b6df34c66be699f819f509940d1bd48c4d99bc5e3353c", "liquidityUserSupplySlot": "0xb5234beeb4c0a819ea269691e0c7c9096e5622ae95fff82de141a01d970f127f", "liquidityUserBorrowSlot": "0xb6fe81773edd346ee3aef4c24f99d0ad357f5d5bb9cb75753b70bfef8ae8514d" } ], "numDeployments": 1, "bytecode": "0x6102206040523480156200001257600080fd5b5060405162005fa238038062005fa28339810160408190526200003591620002a6565b80516001600160a01b0390811661014081815260208401518316610160908152610100808601516101809081526080808801518716905260a0808801518716905260c08088015160ff90811690915260e0808901519091169052610120808801516101a0819052948801516101c052928701516101e052860151610200526040808701518616909152606086015190941690526000805466100000004000001781559251632d71cdb960e21b815260048101919091526001600160401b0391605b9163b5c736e490602401602060405180830381865afa1580156200011e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000144919062000396565b901c16905060006001600160401b03609b610140516001600160a01b031663b5c736e46101c0516040518263ffffffff1660e01b81526004016200018a91815260200190565b602060405180830381865afa158015620001a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ce919062000396565b901c16905064e8d4a51000821080620001eb575064e8d4a5100081105b1562000212576040516330090e6560e11b8152617924600482015260240160405180910390fd5b60401b177ce8d4a51000000000e8d4a51000000000000000000000000000000000001760085550620003b0565b6040516101a081016001600160401b03811182821017156200027157634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200028f57600080fd5b919050565b805160ff811681146200028f57600080fd5b60006101a08284031215620002ba57600080fd5b620002c46200023f565b620002cf8362000277565b8152620002df6020840162000277565b6020820152620002f26040840162000277565b6040820152620003056060840162000277565b6060820152620003186080840162000277565b60808201526200032b60a0840162000277565b60a08201526200033e60c0840162000294565b60c08201526200035160e0840162000294565b60e08201526101008381015190820152610120808401519082015261014080840151908201526101608084015190820152610180928301519281019290925250919050565b600060208284031215620003a957600080fd5b5051919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051615a526200055060003960006106fe0152600081816106d70152611c010152600081816106b001526124b301526000818161068901526123d1015260008181610458015281816106620152610c1f01526000818161010d015281816101c7015281816103830152818161054b01528181610c4b0152610d3b0152600081816104240152818161052601528181611c2701528181611d5101528181611f8e015281816120ad0152818161219201528181612419015281816124e001528181613c5601528181613d7301528181613f7f015261402f01526000818161059a01528181612906015261405f01526000818161028b01526105730152600061063b015260006106130152600081816105ea01528181610a4701528181611ef001528181611fcb015281816121d001528181612a4601528181613bf90152613c930152600081816105c2015281816109a101528181611db801528181611dfd015281816120eb0152613d9a0152615a526000f3fe6080604052600436106100d25760003560e01c8063540acabc1161007f578063ad20750111610059578063ad207501146104b8578063b5c736e4146104d8578063b7791bf2146104f7578063ebd93ac61461072f576100d2565b8063540acabc146104465780637d7c2a1c146104885780638433ea22146104a5576100d2565b8063103f2907116100b0578063103f29071461037157806322348cc7146103ca5780632861c7d114610412576100d2565b806302161887146102e9578063032d22761461032357806309f0d8cb14610351575b3480156100de57600080fd5b506040517f4502d0630000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690634502d06390602401602060405180830381865afa158015610169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018d9190615424565b8061024757506040517fe04c8e5d0000000000000000000000000000000000000000000000000000000081523060048201523360248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e04c8e5d90604401602060405180830381865afa158015610223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102479190615424565b610286576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792560048201526024015b60405180910390fd5b6102e77f00000000000000000000000000000000000000000000000000000000000000006000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061074492505050565b005b3480156102f557600080fd5b506102fe610790565b6040805194855260208501939093529183015260608201526080015b60405180910390f35b610336610331366004615463565b610884565b6040805193845260208401929092529082015260600161031a565b34801561035d57600080fd5b506102fe61036c3660046154a4565b6123a6565b34801561037d57600080fd5b506103a57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161031a565b3480156103d657600080fd5b506103ea6103e53660046154bd565b61263e565b604080519586526020860194909452928401919091526060830152608082015260a00161031a565b34801561041e57600080fd5b506103a57f000000000000000000000000000000000000000000000000000000000000000081565b34801561045257600080fd5b5061047a7f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200161031a565b6104906128fe565b6040805192835260208301919091520161031a565b6104906104b33660046154ef565b61297e565b3480156104c457600080fd5b506102e76104d336600461552e565b613f67565b3480156104e457600080fd5b5061047a6104f33660046154a4565b5490565b34801561050357600080fd5b50604080516101a08101825273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000811660208301527f00000000000000000000000000000000000000000000000000000000000000008116828401527f0000000000000000000000000000000000000000000000000000000000000000811660608301527f0000000000000000000000000000000000000000000000000000000000000000811660808301527f00000000000000000000000000000000000000000000000000000000000000001660a082015260ff7f0000000000000000000000000000000000000000000000000000000000000000811660c08301527f00000000000000000000000000000000000000000000000000000000000000001660e08201527f00000000000000000000000000000000000000000000000000000000000000006101008201527f00000000000000000000000000000000000000000000000000000000000000006101208201527f00000000000000000000000000000000000000000000000000000000000000006101408201527f00000000000000000000000000000000000000000000000000000000000000006101608201527f0000000000000000000000000000000000000000000000000000000000000000610180820152905161031a91906155b7565b34801561073b57600080fd5b506102e761405a565b6060600080835160208501865af43d6040519250601f19601f6020830101168301604052808352806000602085013e81156001810361078757816000803e816000fd5b50505092915050565b6000806000806107a16001546123a6565b9296509094509250905067ffffffffffffffff8411806107c8575067ffffffffffffffff83115b806107da575067ffffffffffffffff82115b806107ec575067ffffffffffffffff81115b15610827576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792d600482015260240161027d565b604083811b8517608084901b1760c083901b17600855517fcde545703e0372175cadfff811d67c32910c3dcb33199679b3271c4106afdf9a906108769084908490918252602082015260400190565b60405180910390a190919293565b60008054819081906001811682036108a257600181176000556108d8565b6040517f60121cca000000000000000000000000000000000000000000000000000000008152617919600482015260240161027d565b861580156108e4575085155b806109245750861580159061092457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8f087138015610924575061271087125b806109645750851580159061096457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8f086138015610964575061271086125b1561099f576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791a600482015260240161027d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480156109f85750600087135b15610a3f57348714610a3a576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791b600482015260240161027d565b610ad8565b3415610ad8577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee148015610a9e5750600086125b610ad8576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791b600482015260240161027d565b610b58604051806102000160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600154610100820152600282901c620fffff166000808215610ba05782600116600114610b91576207ffff600184901c16600003610bc2565b6207ffff600184901c16610bc2565b7f80000000000000000000000000000000000000000000000000000000000000005b61014085015260008c9003610cf4577f800000000000000000000000000000000000000000000000000000000000000060c08501526040517f94bf804d0000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201523360248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906394bf804d906044016020604051808303816000875af1158015610ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccd9190615706565b9b50847a040000000000000000000000000000000000000000000000000000019450610f13565b60008b1280610d03575060008a135b8015610dd457506040517f6352211e000000000000000000000000000000000000000000000000000000008152600481018d905233907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa158015610d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbb919061571f565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610e0f576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791c600482015260240161027d565b60008c8152600360205260408120549350839003610e5d576040517f60121cca000000000000000000000000000000000000000000000000000000008152617923600482015260240161027d565b66ffffffffffffff603584901c811660ff602d86901c81169190911b6060870152607585901c909116606d85901c9182161b60a086015267ffffffffffffffff16915060018084169003610ed6577f800000000000000000000000000000000000000000000000000000000000000060c0850152610f13565b82600216600214610ef3576207ffff600284901c16600003610efe565b6207ffff600284901c165b60c0850152601583901c62ffffff1660e08501525b7f80000000000000000000000000000000000000000000000000000000000000008460c00151131561120157602d9290921c60ff16918215610f5e5760608401516001841b01610f67565b83606001516001015b9250606083610f7c8660c0015160020b6140be565b610f86919061576b565b610f92911c6001615782565b608085015260c0840151600090815260056020526040902054925060018084161480610fca57508360e0015162ffffff600185901c16115b156110f257610fe78460c001518560e0015186608001518661263e565b6101c089015260608801919091526080870182905260c087019290925260a086015191935011156110bb5767ffffffffffffffff6034856101c00151901c16925060ff8316600884901c901b92508360800151836110459190615795565b9250606483101561105557606492505b603461106684603860086001614320565b6101c086015160008581526007602052604090207ffffffffffffffffffffffffffffffffffff0000000000000000fffffffffffff9091169190921b17905560a08401516080850180519190910390526111f9565b83608001518460a00151600a546110d29190615782565b6110dc9190615795565b600a5560006080850181905260608501526111f9565b67ffffffffffffffff601984901c16915081600003611141576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791d600482015260240161027d565b60ff8216600883901c901b915081846080015110611160576000611168565b836080015182035b91506127108210156111af57600091508361014001518460c00151036111a05761119784610140015186614449565b61014086015294505b6111af8460c00151600061462b565b60196111c083603860086000614320565b60c08601516000908152600560205260409020911b6301ffffff851617905560a08401516080850180516111f5908390615795565b9052505b600060a08501525b60c08401516040850152606084015184526080840151602085015261010084015161122b906123a6565b6101a08801526101808701525061016085015260008b13156112d15761018084015161125c64e8d4a510008d61576b565b61126691906157d7565b846060018181516112779190615782565b90525060608401516fffffffffffffffffffffffffffffffff10156112cc576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792f600482015260240161027d565b611428565b60008b1215611428577fffffffffffffffffffffffffffffffff800000000000000000000000000000008b13156113845761018084015160019061131a64e8d4a510008e6157eb565b6113249190615837565b61132e919061589f565b90508360600151816000031115611375576040517f60121cca000000000000000000000000000000000000000000000000000000008152617926600482015260240161027d565b60608401805182019052611428565b7f80000000000000000000000000000000000000000000000000000000000000008b036113f25764e8d4a5100084610180015185606001516113c6919061576b565b6113d091906157d7565b6113d9906158c6565b6113e49060016158fe565b600060608601529a50611428565b6040517f60121cca00000000000000000000000000000000000000000000000000000000815261792f600482015260240161027d565b60008a13156114f8576101a084015161144664e8d4a510008c61576b565b61145091906157d7565b61145b906001615782565b92506127106103ff6052866101000151901c1684611479919061576b565b61148391906157d7565b61148d9084615782565b8460800181815161149e9190615782565b90525060808401516fffffffffffffffffffffffffffffffff10156114f3576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792f600482015260240161027d565b611618565b60008a1215611618577fffffffffffffffffffffffffffffffff800000000000000000000000000000008a13156115ad576101a084015161153e64e8d4a510008c6157eb565b6115489190615837565b6115539060016158fe565b9050806000039050836080015181111561159d576040517f60121cca000000000000000000000000000000000000000000000000000000008152617927600482015260240161027d565b6080840180518290039052611618565b7f80000000000000000000000000000000000000000000000000000000000000008a036113f257600164e8d4a51000856101a0015186608001516115f1919061576b565b6115fb91906157d7565b611604906158c6565b61160e919061589f565b6000608086015299505b8a158015611624575089155b1561165f576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791a600482015260240161027d565b6080840151156118d4576116978460600151633b9aca008660800151633b9aca01028161168e5761168e6157a8565b0460010161469e565b60a0880152608087015260e086015260c085015260008a12156117095783602001518460a0015185608001516116cd9190615795565b1115611709576040517f60121cca000000000000000000000000000000000000000000000000000000008152617934600482015260240161027d565b60008b138015611717575089155b156117bc578351602085015161173b906c010000000000000000000000009061576b565b61174591906157d7565b84606001516c010000000000000000000000008660a00151876080015161176c9190615795565b611776919061576b565b61178091906157d7565b11156117bc576040517f60121cca000000000000000000000000000000000000000000000000000000008152617934600482015260240161027d565b8361014001518460c00151126118cf5760008460c00151126117e95760018460c00151901b6001176117f5565b60c084015160000360011b5b92508460021660000361183257600283901b857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000161794506118fb565b6001603486811c633fffffff16919091016000818152600760205260409020780fffffffc00000000000000000000000000000000000000000609089901b167afffff000000000000000000000000000000000000000000000000060c28a901b161790557ffffffffffffffffffffffffffffffffffffffffffffc00000000000000000000909616600285901b17601687901b179086901b179491505b6118fb565b7f800000000000000000000000000000000000000000000000000000000000000060c08501525b60008b128061190a575060008a135b15611aeb5773ffffffffffffffffffffffffffffffffffffffff891661192e573398505b608084015115611aeb576060846101000151901c73ffffffffffffffffffffffffffffffffffffffff1663e6aa216c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b09190615706565b9250836101a00151846101800151846119c9919061576b565b6119d391906157d7565b92506103e86103ff6020866101000151901c168402816119f5576119f56157a8565b049150722cd76fe086b93ce2f768a00b22a000000000008210611a35576c010000000000000000000000006b033b2e3c9fd0803ce8000000830402611a54565b6b033b2e3c9fd0803ce80000006c010000000000000000000000008302045b9150611a5f8261487b565b5080915050808460c001511315611aeb578360c001518460400151131580611ab05750633b9aca008460200151633b9aca010281611a9f57611a9f6157a8565b046001018460a00151856080015103115b15611aeb576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791e600482015260240161027d565b7f80000000000000000000000000000000000000000000000000000000000000008460c001511315611b475760008460c0015112611b345760018460c00151901b600117611b40565b60c084015160000360011b5b9250611b4c565b600092505b60a0840151606d90611b6390603860086000614320565b6060860151911b90602d90611b7d90603860086000614320565b60e0870151911b9060151b600186901b8615611b9a576000611b9d565b60015b60ff1617171717600360008e81526020019081526020016000208190555060008b1215611d4657610100840151603e1c6103ff1692508215611d46576040517fb5c736e40000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b5c736e490602401602060405180830381865afa158015611c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca79190615706565b6101e0850181905266ffffffffffffff600982901c1660ff600183901c161b9250611cd29083614c83565b9050600081138015611d0b575083610160015164e8d4a510008c6000030281611cfd57611cfd6157a8565b05816103e885810385020503125b15611d46576040517f60121cca000000000000000000000000000000000000000000000000000000008152617928600482015260240161027d565b60008b1315611ec4577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad967e1573eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614611df9576000611dfb565b345b7f00000000000000000000000000000000000000000000000000000000000000008e600080600033604051602001611e4f919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401611e7f96959493929190615982565b604080518083038185885af1158015611e9c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ec191906159db565b50505b60008a1215612092577fffffffffffffffffffffffff11111111111111111111111111111111111111127f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1601611f875789600003925082341115611f4957611f4433843403614d15565b611f8c565b82341015611f44576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791b600482015260240161027d565b600092505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad967e15847f000000000000000000000000000000000000000000000000000000000000000060008e6000803360405160200161201d919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6040516020818303038152906040526040518863ffffffff1660e01b815260040161204d96959493929190615982565b604080518083038185885af115801561206a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061208f91906159db565b50505b60008b121561217757604080516000808252602082019092527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169163ad967e15917f0000000000000000000000000000000000000000000000000000000000000000918f918e9082906040518763ffffffff1660e01b815260040161213296959493929190615982565b60408051808303816000875af1158015612150573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217491906159db565b50505b60008a131561225d57604080516000808252602082019092527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169163ad967e15917f000000000000000000000000000000000000000000000000000000000000000091908e9082908f906040518763ffffffff1660e01b815260040161221896959493929190615982565b60408051808303816000875af1158015612236573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225a91906159db565b50505b67ffffffffffffffff605286901c1692508360000151846060015160ff8516600886901c901b61228d9190615782565b6122979190615795565b925067ffffffffffffffff609286901c16915083602001518460a0015185608001516122c39190615795565b6122d690600885901c60ff86161b615782565b6122e09190615795565b915060926122f383603860086001614320565b901b605261230685603860086000614320565b901b7ffffffffffffc00000000000000000000000000000003ffffffffffffffffffff8716171760005560408051338152602081018e90529081018c9052606081018b905273ffffffffffffffffffffffffffffffffffffffff8a1660808201527ffef64760e30a41b9d5ba7dd65ff7236a61d89ed8b44c67a29e84db1a67513a1c9060a00160405180910390a150999a98995096979650505050505050565b6008546040517fb5c736e40000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015260009182918291829161248a9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b5c736e4906024015b602060405180830381865afa158015612461573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124859190615706565b614d64565b506040517fb5c736e40000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006004820152909550612524907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b5c736e490602401612444565b94505067ffffffffffffffff81811690604083901c168187108061254757508086105b15612582576040517f60121cca000000000000000000000000000000000000000000000000000000008152617932600482015260240161027d565b61271061ffff8916670de0b6b3a7640000848a670de0b6b3a764000002816125ac576125ac6157a8565b040302816125bc576125bc6157a8565b04945061271061ffff60108a901c16670de0b6b3a76400008389670de0b6b3a764000002816125ed576125ed6157a8565b040302816125fd576125fd6157a8565b049350670de0b6b3a7640000608084901c67ffffffffffffffff1686820102049450670de0b6b3a764000060c084901c858201020493505050509193509193565b600080808080868180600189901c62ffffff168b9003612684575050601a87901c633fffffff169250603887901c6603ffffffffffff166001601989901c8116146126db565b60008c8152600660205260408120600360028e0181810660550292918491048152602081019190915260400160002054901c600181811c633fffffff169750601f82901c6603ffffffffffff169450908116149150505b6000858152600760205260409020549350801561271e577f80000000000000000000000000000000000000000000000000000000000000009b50600099506128ea565b836003166002036127885761274082607486901c6603ffffffffffff16614f72565b91506001612750600f6023615782565b6001901b61275e9190615795565b82146127885760a69390931c633fffffff166000818152600760205260409020549094509261271e565b83600316600314806127b4575060016127a3600f6023615782565b6001901b6127b19190615795565b82145b156127e5577f80000000000000000000000000000000000000000000000000000000000000009b50600099506128ea565b6127fd8a607486901c6603ffffffffffff168461500a565b9950606483048a111561281a5761271061270f8b0204995061281f565b600099505b89156128c65783600416600414612842576207ffff600385901c1660000361284d565b6207ffff600385901c165b9b50600061285d8d60020b6140be565b905061271f612710820204633fffffff601687901c811661287e8385615795565b612888919061576b565b61289291906157d7565b61289c9082615782565b6128b36c010000000000000000000000008e61576b565b6128bd91906157d7565b975050506128ea565b7f80000000000000000000000000000000000000000000000000000000000000009b505b8b8a97509750505050945094509450945094565b6000806129627f00000000000000000000000000000000000000000000000000000000000000006000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061074492505050565b80602001905181019061297591906159db565b90939092509050565b6000806129b36040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b60008054906001821690036108a257600181176000556127108810806129e857506fffffffffffffffffffffffffffffffff88115b15612a23576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792e600482015260240161027d565b7fffffffffffffffffffffffff11111111111111111111111111111111111111127f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1601612ae857873414158015612aa8575061dead73ffffffffffffffffffffffffffffffffffffffff871614155b15612ae3576040517f60121cca000000000000000000000000000000000000000000000000000000008152617920600482015260240161027d565b612b24565b3415612b24576040517f60121cca000000000000000000000000000000000000000000000000000000008152617920600482015260240161027d565b6001548252600281901c620fffff16600003612b70576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791f600482015260240161027d565b8151612b7b906123a6565b90919250909150836060018460800182815250828152505050612bf86040518061018001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b612c316040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b601683901c633fffffff16808252600090815260076020908152604082205490830181905260741c6603ffffffffffff166060830181905281908103612c7f576603ffffffffc00060608401525b602083015160c41c620fffff1691508115612cc65781600116600114612cb1576207ffff600183901c16600003612cbc565b6207ffff600183901c165b6080840152612ced565b7f800000000000000000000000000000000000000000000000000000000000000060808401525b84600416600414612d0a576207ffff600386901c16600003612d15565b6207ffff600386901c165b60c08501526002851615612d2a576002612d2d565b60015b60ff1684610100018181525050612d7a6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60c085015181528651604080517fe6aa216c000000000000000000000000000000000000000000000000000000008152905160609290921c9163e6aa216c916004808201926020929091908290030181865afa158015612dde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e029190615706565b92508660800151876060015184612e19919061576b565b612e2391906157d7565b9250612e4683760a70c3c40a64e6c51999090b65f67d92400000000000006157d7565b87519092506127109060481c6103ff1681018302046060860152722cd76fe086b93ce2f768a00b22a000000000008310612e9d576c010000000000000000000000006b033b2e3c9fd0803ce8000000840402612ebc565b6b033b2e3c9fd0803ce80000006c010000000000000000000000008402045b87519093506103e890602a1c6103ff168402049150612eda8261487b565b50602088015286516103e89060341c6103ff168402049150612efb8261487b565b506040880152608087015164e8d4a510008e0281612f1b57612f1b6157a8565b0485528915612fb15760025485516fffffffffffffffffffffffffffffffff8216945060809190911c9250831115612f965784518390612f5b908461576b565b612f6591906157d7565b60a08601819052612f769083615795565b855160808088018290526000885282901b94039384176002559150612fb1565b6000600255845183900385526080850183905260a085018290525b86602001518560c00151138015612fd0575086604001518560c0015113155b15613ab357845115613ab3576040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081018290528190680100000000000000009060008960c0015112613041576101008960c001518161303b5761303b6157a8565b0561305e565b60016101008a60c001516001018161305b5761305b6157a8565b05035b6040820152845161306e906140be565b604086015261010089015160010361309957604085015160e08a015260c089015160208201526131a0565b61271f856040015161271002816130b2576130b26157a8565b046060860181905260408601510360808601819052602089015160161c633fffffff90811660c0880181905290910260608701519190040160e08a0152845160208c015160010114801561310a57508460c001516001145b156131a05773ffffffffffffffffffffffffffffffffffffffff8f1661dead0361316a576040517fcc36aa44000000000000000000000000000000000000000000000000000000008152600060048201819052602482015260440161027d565b6040517f60121cca000000000000000000000000000000000000000000000000000000008152617935600482015260240161027d565b8861010001516001036132105760c0890180516000908152600560205260408082205460608c01518c5194518452919092206301fffffe8316601a9490941b9390931760389190911b1760011790915566ffffffffffffff602182901c1660ff601983901c161b97509550613233565b67ffffffffffffffff60348960200151901c16965060ff8716600888901c901b96505b86896020018181516132459190615782565b90525060e08901516132646c010000000000000000000000008961576b565b61326e91906157d7565b8960400181815161327f9190615782565b90525060c0890151602082015114801561329e57508861010001516001145b806132ab57506080810151155b156133db5780608001516000036132d45760408082015160009081526004602052205460808201525b88610100015160010361332b57604081015160c08a015160009081036101009283020190910160608301819052608083018051821b90911c90819052900361332b5760408082015160009081526004602052908120555b608081015115613359576001613344826080015161504f565b604083015161010002010360208201526133db565b8a602001518160400151610100021215613398577f800000000000000000000000000000000000000000000000000000000000000060208201526133db565b604080820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190819052600090815260046020522054608082015261332b565b806020015188608001511380156133f957508a602001518860800151135b156134165760808801516101208a015260026101608a0152613452565b8a602001518160200151131561343e5760208101516101208a015260016101608a0152613452565b60208b01516101208a015260036101608a01525b61346389610120015160020b6140be565b60408601526101608901516002036134f75761271f8560400151612710028161348e5761348e6157a8565b046060860181905260408087015191909103608087019081526020808b015160a61c633fffffff908116600090815260079092529290205460a08b0181905260161c821660c0880181905290510260608701519190040160a086018190526101408a0152613514565b604085015160a086018190526101408a0152633fffffff60c08601525b6c010000000000000000000000008961014001518a60600151613537919061576b565b61354191906157d7565b613557906b033b2e3c9fd0803ce8000000615795565b8960e001518a602001518b6101400151613571919061576b565b61357b91906157d7565b8a6020015161358a9190615795565b6135a0906b033b2e3c9fd0803ce800000061576b565b6135aa91906157d7565b93506b033b2e3c9fd0803ce80000008960600151856135c9919061576b565b6135d391906157d7565b9250838960200151036135ee576135eb600185615795565b93505b88518410158061360357508861016001516003145b156138cd5760808101516040808301516000908152600460205220558851841061374257885160608a01519094506b033b2e3c9fd0803ce800000090613649908661576b565b61365391906157d7565b92508289604001516136659190615795565b6c01000000000000000000000000858b602001516136839190615795565b61368d919061576b565b61369791906157d7565b96506136a28761487b565b606087015280865260208c015113156136c85784516002018552600160c0860152613755565b84516001018552606085015161271061271f8202046040870181905281900360808701819052908803633fffffff0281613704576137046157a8565b0460c086018190521561373557633fffffff8560c00151101561372b578460c00151613738565b633ffffffe613738565b60015b60c0860152613755565b6101208901516001908101865260c08601525b60208901516137648582615795565b61376e908461576b565b61377891906157d7565b9150838960800181815161378c9190615782565b9052506020890180518591906137a3908390615795565b90525060a0890180518491906137ba908390615782565b9052506040890180518491906137d1908390615795565b90525060608801516137e39083615105565b606089015260208901516064111561382b576040517f60121cca000000000000000000000000000000000000000000000000000000008152617930600482015260240161027d565b8451600013613841578451600190811b1761384a565b845160000360011b5b606089015160208b015191975060741b9060349061386d90603860086001614320565b901b60168760c00151901b600289901b60a6808d60200151901c901b60011717171717600760008a6000015181526020019081526020016000208190555060168860000151901b600287901b6034808d901c901b60021717179950613aae565b8851849003895260208901516138e38582615795565b6138ed908461576b565b6138f791906157d7565b9150838960800181815161390b9190615782565b905250602089018051859190613922908390615795565b90525060a089018051849190613939908390615782565b905250604089018051849190613950908390615795565b90525060608801516139629083615105565b6060890152610160890151680100000000000000009250600203613a8757633fffffff60a68960200151901c1696508760a00151955060006603ffffffffffff607488901c16905060006139c38a60600151836151a990919063ffffffff16565b6020808c0180518d516000908152600790935260409092207fffffffffffffffffffffffc00000000000000000000000000000000000000000909216607484901b17600217909155998b5298889052506060890181905260c487901c620fffff16978815613a5d5788600116600114613a48576207ffff60018a901c16600003613a53565b6207ffff60018a901c165b60808b0152613a84565b7f800000000000000000000000000000000000000000000000000000000000000060808b01525b50505b61012089015160c08a01526101608901516101008a015261014089015160e08a01526131a0565b505050505b64e8d4a5100087608001518660800151613acd919061576b565b613ad791906157d7565b985064e8d4a5100087606001518660a00151613af3919061576b565b613afd91906157d7565b97508c891115613b2157613b11898e6157d7565b613b1b908961576b565b97508c98505b8b89613b358a670de0b6b3a764000061576b565b613b3f91906157d7565b1015613b7b576040517f60121cca000000000000000000000000000000000000000000000000000000008152617921600482015260240161027d565b73ffffffffffffffffffffffffffffffffffffffff8b1661dead03613bd6576040517fcc36aa4400000000000000000000000000000000000000000000000000000000815260048101899052602481018a905260440161027d565b7fffffffffffffffffffffffff11111111111111111111111111111111111111127f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1601613c4f5788925034891015613c4a57613c4a338a3403614d15565b613c54565b600092505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad967e15847f000000000000000000000000000000000000000000000000000000000000000060008d60000360008033604051602001613ce8919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401613d1896959493929190615982565b604080518083038185885af1158015613d35573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613d5a91906159db565b505073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663ad967e157f000000000000000000000000000000000000000000000000000000000000000060008b8103908f81806040519080825280601f01601f191660200182016040528015613dec576020820181803683370190505b506040518763ffffffff1660e01b8152600401613e0e96959493929190615982565b60408051808303816000875af1158015613e2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e5091906159db565b505067ffffffffffffffff605287901c1692508460a0015160ff8416600885901c901b613e7d9190615795565b925067ffffffffffffffff609287901c169150846080015160ff8316600884901c901b613eaa9190615795565b91506092613ebd83603860086001614320565b901b6052613ed085603860086000614320565b7ffffffffffffc00000000000000000000000000000003ffffffffffffffffffff8916911b171760005560408051338152602081018a90529081018a905273ffffffffffffffffffffffffffffffffffffffff8c1660608201527f80fd9cc6b1821f4a510e45ffce6852ea3404807b5d3d833ffa85664408afcb669060800160405180910390a15050505050505094509492505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614613fda576040517f60121cca000000000000000000000000000000000000000000000000000000008152617929600482015260240161027d565b60005460011660000361401d576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792a600482015260240161027d565b6140548461402d838501856159ff565b7f000000000000000000000000000000000000000000000000000000000000000086615254565b50505050565b6140bb7f00000000000000000000000000000000000000000000000000000000000000006000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061074492505050565b50565b600060ff82901d80831803617fff8111156140d857600080fd5b700100000000000000000000000000000000600182161561410657506fff9dd7de423466c20352b1246ce4856f5b6002821615614125576fff3bd55f4488ad277531fa1c725a66d00260801c5b6004821615614144576ffe78410fd6498b73cb96a6917f8532590260801c5b6008821615614163576ffcf2d9987c9be178ad5bfeffaa1232730260801c5b6010821615614182576ff9ef02c4529258b057769680fc6601b30260801c5b60208216156141a1576ff402d288133a85a17784a411f7aba0820260801c5b60408216156141c0576fe895615b5beb6386553757b0352bda900260801c5b60808216156141df576fd34f17a00ffa00a8309940a15930391a0260801c5b6101008216156141ff576fae6b7961714e20548d88ea5123f9a0ff0260801c5b61020082161561421f576f76d6461f27082d74e0feed3b388c0ca10260801c5b61040082161561423f576f372a3bfe0745d8b6b19d985d9a8b85bb0260801c5b61080082161561425f576f0be32cbee48979763cf7247dd7bb539d0260801c5b61100082161561427e576e8d4f70c9ff4924dac37612d1e2921e0260801c5b61200082161561429c576d4e009ae5519380809a02ca7aec770260801c5b6140008216156142b8576b17c45e641b6e95dee056ff100260801c5b600091507f80000000000000000000000000000000000000000000000000000000000000008416614316577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0463ffffffff81161561431657600191505b60201c0192915050565b600080856fffffffffffffffffffffffffffffffff8111156143435760809150811c5b67ffffffffffffffff81111561435b576040918201911c5b63ffffffff81111561436f576020918201911c5b61ffff811115614381576010918201911c5b60ff811115614392576008918201911c5b600f8111156143a3576004918201911c5b60038111156143b4576002918201911c5b60018111156143c4576001820191505b80156143d1576001820191505b50848110156143dd5750835b848103905085811c6000821184161561442c57600181019050806001871b0361442c57506001908101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86011b5b6001851b821061443b57600080fd5b90931b909201949350505050565b601681901c633fffffff166000818152600760205260408120549091829182600160c483901c81169003614487575060c581901c6207ffff166144bf565b5060c581901c6207ffff166000819003906144bf57507f80000000000000000000000000000000000000000000000000000000000000005b60006144ca8861531b565b90508082136144d957806144db565b815b94507f8000000000000000000000000000000000000000000000000000000000000000850361452e57867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000116965061461d565b8085036145a457600085121561457157600385600003901b877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000011617965061461d565b600385901b877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000011660041717965061461d565b6000848152600760205260408120557ffffffffffffffffffffffffffffffffffffffffffffc00000000000000000001909616623ffffc60c284901c1617660fffffffc00000609084901c16177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff840160341b17600217955b869550505050509250929050565b600080831261463e576101008305614649565b600161010084820105035b90506101008102830382614671576000828152600460205260409020546001821b1916614686565b6000828152600460205260409020546001821b175b60009283526004602052604090922091909155505050565b6000806000806127108510156146e4576040517f60121cca000000000000000000000000000000000000000000000000000000008152617933600482015260240161027d565b6000866146fe6c010000000000000000000000008861576b565b61470891906157d7565b90506147138161487b565b60019091019550905061271061271f82020490506060614733888361576b565b901c92506147418684615795565b600086815260056020526040812054600181901c62ffffff169650919350851580159061476f575060018216155b156147b05766ffffffffffffff602183901c1660ff601984901c161b6147958682615782565b9150806000036147aa576147aa88600161462b565b50614804565b85156147f0576000878152600660209081526040808320600360028b0181810486529190935292208054601986901c929093066055029190911b90911790555b85600101955084905061480487600161462b565b612710811015614844576040517f60121cca000000000000000000000000000000000000000000000000000000008152617931600482015260240161027d565b601961485582603860086000614320565b6000898152600560205260409020911b600188901b179055509497939650919450925050565b600080630235b88083107473d85bca016a2338b31715f8e13054c005f8b995d3841117156148a857600080fd5b6c0100000000000000000000000083106000816148de57506c010000000000000000000000006a52b7d2dcc80cd2e40000008502045b811561490157507652b7d2dcc80cd2e40000000000000000000000000000008490045b6f037af932b2affa9738cc6c38ca527831811061494257614000841793506f037af932b2affa9738cc6c38ca5278316a52b7d2dcc80cd2e400000082020490505b6d010f7a088a76f267264caa114f0a811061497f57612000841793506d010f7a088a76f267264caa114f0a6a52b7d2dcc80cd2e400000082020490505b6b95da74f87f839fc2e0dc5bd981106149b857611000841793506b95da74f87f839fc2e0dc5bd96a52b7d2dcc80cd2e400000082020490505b6b06f55dedafd8491caed5a1b881106149f157610800841793506b06f55dedafd8491caed5a1b86a52b7d2dcc80cd2e400000082020490505b6b017fdd10ee11e624491b4cc18110614a2a57610400841793506b017fdd10ee11e624491b4cc16a52b7d2dcc80cd2e400000082020490505b6ab23131bf0c30217b0a2c698110614a6157610200841793506ab23131bf0c30217b0a2c696a52b7d2dcc80cd2e400000082020490505b6a79683edcb9280d797aded78110614a9857610100841793506a79683edcb9280d797aded76a52b7d2dcc80cd2e400000082020490505b6a64366e2f9919f0d9b0dc908110614ace576080841793506a64366e2f9919f0d9b0dc906a52b7d2dcc80cd2e400000082020490505b6a5b0bcda5a78850646b0a818110614b04576040841793506a5b0bcda5a78850646b0a816a52b7d2dcc80cd2e400000082020490505b6a56c840f992c70f959ae8108110614b3a576020841793506a56c840f992c70f959ae8106a52b7d2dcc80cd2e400000082020490505b6a54b9cd178695194f9be0a08110614b70576010841793506a54b9cd178695194f9be0a06a52b7d2dcc80cd2e400000082020490505b6a53b7458aff204b5e65d6818110614ba6576008841793506a53b7458aff204b5e65d6816a52b7d2dcc80cd2e400000082020490505b6a53372a2f38c240d689e4008110614bdc576004841793506a53372a2f38c240d689e4006a52b7d2dcc80cd2e400000082020490505b6a52f76617a04499e66400008110614c12576002841793506a52f76617a04499e66400006a52b7d2dcc80cd2e400000082020490505b6a52d79660f3dec355c000008110614c48576001841793506a52d79660f3dec355c000006a52b7d2dcc80cd2e400000082020490505b81614c6057806a52b7d2dcc80cd2e400000086020492505b8115614c7c579219926a52d79660f3dec355c000008582020492505b5050915091565b600066ffffffffffffff604984901c1660ff604185901c161b808203614cad576000915050614d0f565b612710613fff60a286901c168402046401ffffffff608186901c16420362ffffff60b087901c16614cde828461576b565b614ce891906157d7565b9050808311614cf8576000614cfc565b8083035b9350508084038381111561078757925050505b92915050565b600080600080600085875af1905080614d5f576040517fdee51a8a0000000000000000000000000000000000000000000000000000000081526201155a600482015260240161027d565b505050565b67ffffffffffffffff605b82901c811690609b83901c16811580614d86575080155b15614dc2576040517fd50d751200000000000000000000000000000000000000000000000000000000815262011171600482015260240161027d565b61ffff8316603a84901c6401ffffffff16428181039160ea87901c617fff16911480614dec575082155b80614df75750806001145b15614e0457505050915091565b64496cebb80084840283020484019350617fff60db87901c16925082600103614e2f57505050915091565b82600116600103614e845760019290921c91826c7e37be2022c0914b268000000081614e5d57614e5d6157a8565b049250612710601e87901c613fff166b033b2e3c9fd0803ce8000000850102049250614eb1565b60019290921c916305f5e100601e87901c613fff166127108501026b033b2e3c9fd0803ce8000000020492505b80600116600103614ee85760011c61271081016b033b2e3c9fd0803ce8000000820281614ee057614ee06157a8565b049050614f1e565b60011c61271081016b033b2e3c9fd0803ce8000000820281614f0c57614f0c6157a8565b046b033b2e3c9fd0803ce80000000390505b760a70c3c40a64e6c51999090b65f67d92400000000000008382026127100261ffff881691900402601087901c613fff16612710030292506801b5a660ea44b8000085840283020485019450505050915091565b6000600f83811c9083901c0281681fffffffffffffffff8211614f96576022614f99565b60235b91821c919050617fff858116908516018101614000811015614fba57600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00001617fff811115614ff957506603ffffffffffff9250614d0f915050565b600f9290921b909117949350505050565b6000617fff83811690831603608181101561504257600f83811c821b9085901c860281615039576150396157a8565b04915050615048565b60009150505b9392505050565b6000816fffffffffffffffffffffffffffffffff8311156150715760809150811c5b67ffffffffffffffff811115615089576040918201911c5b63ffffffff81111561509d576020918201911c5b61ffff8111156150af576010918201911c5b60ff8111156150c0576008918201911c5b600f8111156150d1576004918201911c5b60038111156150e2576002918201911c5b60018111156150f2576001820191505b80156150ff576001820191505b50919050565b6000600f83901c8202816c03ffffffffffffffffffffffff821161514c576c01ffffffffffffffffffffffff8211615145576151408261504f565b61514f565b606261514f565b60635b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd617fff87168201810194500191821c919050604083111561519c57604083600f84901b010392506151a1565b600080fd5b505092915050565b600080600f83901c7fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000603186901b16816151e5576151e56157a8565b0490506000604082901c6001146151fd576040615200565b60415b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd81019290921c91617fff8581166040019250613fdd908716909101018181111561519c5703600f9190911b179050614d0f565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080615314576040517fdee51a8a00000000000000000000000000000000000000000000000000000000815262011559600482015260240161027d565b5050505050565b600080600080841261533157610100840561533c565b600161010085820105035b600081815260046020526040812054919350859003610100808502919091010190811b811c91505b81156153835760016153758361504f565b84610100020103935061540e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f036001016153f8577f8000000000000000000000000000000000000000000000000000000000000000935061540e565b6000838152600460205260409020549150615364565b505050919050565b80151581146140bb57600080fd5b60006020828403121561543657600080fd5b815161504881615416565b73ffffffffffffffffffffffffffffffffffffffff811681146140bb57600080fd5b6000806000806080858703121561547957600080fd5b843593506020850135925060408501359150606085013561549981615441565b939692955090935050565b6000602082840312156154b657600080fd5b5035919050565b600080600080608085870312156154d357600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000806080858703121561550557600080fd5b8435935060208501359250604085013561551e81615441565b9150606085013561549981615416565b6000806000806060858703121561554457600080fd5b843561554f81615441565b935060208501359250604085013567ffffffffffffffff8082111561557357600080fd5b818701915087601f83011261558757600080fd5b81358181111561559657600080fd5b8860208285010111156155a857600080fd5b95989497505060200194505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101a0810160208301516155fd602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151615625604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015161564d606084018273ffffffffffffffffffffffffffffffffffffffff169052565b506080830151615675608084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060a083015161569d60a084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060c08301516156b260c084018260ff169052565b5060e08301516156c760e084018260ff169052565b50610100838101519083015261012080840151908301526101408084015190830152610160808401519083015261018092830151929091019190915290565b60006020828403121561571857600080fd5b5051919050565b60006020828403121561573157600080fd5b815161504881615441565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417614d0f57614d0f61573c565b80820180821115614d0f57614d0f61573c565b81810381811115614d0f57614d0f61573c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826157e6576157e66157a8565b500490565b808202600082127f8000000000000000000000000000000000000000000000000000000000000000841416156158235761582361573c565b8181058314821517614d0f57614d0f61573c565b600082615846576158466157a8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f80000000000000000000000000000000000000000000000000000000000000008314161561589a5761589a61573c565b500590565b81810360008312801583831316838312821617156158bf576158bf61573c565b5092915050565b60007f800000000000000000000000000000000000000000000000000000000000000082036158f7576158f761573c565b5060000390565b80820182811260008312801582168215821617156151a1576151a161573c565b6000815180845260005b8181101561594457602081850181015186830182015201615928565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b600073ffffffffffffffffffffffffffffffffffffffff8089168352876020840152866040840152808616606084015280851660808401525060c060a08301526159cf60c083018461591e565b98975050505050505050565b600080604083850312156159ee57600080fd5b505080516020909101519092909150565b600060208284031215615a1157600080fd5b81356150488161544156fea264697066735822122087df04e04950c10d1518836e4d6b3d1a189dc7708362a0a8cb74ff0277b71c5464736f6c63430008150033", "deployedBytecode": "0x6080604052600436106100d25760003560e01c8063540acabc1161007f578063ad20750111610059578063ad207501146104b8578063b5c736e4146104d8578063b7791bf2146104f7578063ebd93ac61461072f576100d2565b8063540acabc146104465780637d7c2a1c146104885780638433ea22146104a5576100d2565b8063103f2907116100b0578063103f29071461037157806322348cc7146103ca5780632861c7d114610412576100d2565b806302161887146102e9578063032d22761461032357806309f0d8cb14610351575b3480156100de57600080fd5b506040517f4502d0630000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690634502d06390602401602060405180830381865afa158015610169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018d9190615424565b8061024757506040517fe04c8e5d0000000000000000000000000000000000000000000000000000000081523060048201523360248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e04c8e5d90604401602060405180830381865afa158015610223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102479190615424565b610286576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792560048201526024015b60405180910390fd5b6102e77f00000000000000000000000000000000000000000000000000000000000000006000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061074492505050565b005b3480156102f557600080fd5b506102fe610790565b6040805194855260208501939093529183015260608201526080015b60405180910390f35b610336610331366004615463565b610884565b6040805193845260208401929092529082015260600161031a565b34801561035d57600080fd5b506102fe61036c3660046154a4565b6123a6565b34801561037d57600080fd5b506103a57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161031a565b3480156103d657600080fd5b506103ea6103e53660046154bd565b61263e565b604080519586526020860194909452928401919091526060830152608082015260a00161031a565b34801561041e57600080fd5b506103a57f000000000000000000000000000000000000000000000000000000000000000081565b34801561045257600080fd5b5061047a7f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200161031a565b6104906128fe565b6040805192835260208301919091520161031a565b6104906104b33660046154ef565b61297e565b3480156104c457600080fd5b506102e76104d336600461552e565b613f67565b3480156104e457600080fd5b5061047a6104f33660046154a4565b5490565b34801561050357600080fd5b50604080516101a08101825273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000811660208301527f00000000000000000000000000000000000000000000000000000000000000008116828401527f0000000000000000000000000000000000000000000000000000000000000000811660608301527f0000000000000000000000000000000000000000000000000000000000000000811660808301527f00000000000000000000000000000000000000000000000000000000000000001660a082015260ff7f0000000000000000000000000000000000000000000000000000000000000000811660c08301527f00000000000000000000000000000000000000000000000000000000000000001660e08201527f00000000000000000000000000000000000000000000000000000000000000006101008201527f00000000000000000000000000000000000000000000000000000000000000006101208201527f00000000000000000000000000000000000000000000000000000000000000006101408201527f00000000000000000000000000000000000000000000000000000000000000006101608201527f0000000000000000000000000000000000000000000000000000000000000000610180820152905161031a91906155b7565b34801561073b57600080fd5b506102e761405a565b6060600080835160208501865af43d6040519250601f19601f6020830101168301604052808352806000602085013e81156001810361078757816000803e816000fd5b50505092915050565b6000806000806107a16001546123a6565b9296509094509250905067ffffffffffffffff8411806107c8575067ffffffffffffffff83115b806107da575067ffffffffffffffff82115b806107ec575067ffffffffffffffff81115b15610827576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792d600482015260240161027d565b604083811b8517608084901b1760c083901b17600855517fcde545703e0372175cadfff811d67c32910c3dcb33199679b3271c4106afdf9a906108769084908490918252602082015260400190565b60405180910390a190919293565b60008054819081906001811682036108a257600181176000556108d8565b6040517f60121cca000000000000000000000000000000000000000000000000000000008152617919600482015260240161027d565b861580156108e4575085155b806109245750861580159061092457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8f087138015610924575061271087125b806109645750851580159061096457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8f086138015610964575061271086125b1561099f576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791a600482015260240161027d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480156109f85750600087135b15610a3f57348714610a3a576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791b600482015260240161027d565b610ad8565b3415610ad8577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee148015610a9e5750600086125b610ad8576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791b600482015260240161027d565b610b58604051806102000160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600154610100820152600282901c620fffff166000808215610ba05782600116600114610b91576207ffff600184901c16600003610bc2565b6207ffff600184901c16610bc2565b7f80000000000000000000000000000000000000000000000000000000000000005b61014085015260008c9003610cf4577f800000000000000000000000000000000000000000000000000000000000000060c08501526040517f94bf804d0000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201523360248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906394bf804d906044016020604051808303816000875af1158015610ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccd9190615706565b9b50847a040000000000000000000000000000000000000000000000000000019450610f13565b60008b1280610d03575060008a135b8015610dd457506040517f6352211e000000000000000000000000000000000000000000000000000000008152600481018d905233907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa158015610d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbb919061571f565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610e0f576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791c600482015260240161027d565b60008c8152600360205260408120549350839003610e5d576040517f60121cca000000000000000000000000000000000000000000000000000000008152617923600482015260240161027d565b66ffffffffffffff603584901c811660ff602d86901c81169190911b6060870152607585901c909116606d85901c9182161b60a086015267ffffffffffffffff16915060018084169003610ed6577f800000000000000000000000000000000000000000000000000000000000000060c0850152610f13565b82600216600214610ef3576207ffff600284901c16600003610efe565b6207ffff600284901c165b60c0850152601583901c62ffffff1660e08501525b7f80000000000000000000000000000000000000000000000000000000000000008460c00151131561120157602d9290921c60ff16918215610f5e5760608401516001841b01610f67565b83606001516001015b9250606083610f7c8660c0015160020b6140be565b610f86919061576b565b610f92911c6001615782565b608085015260c0840151600090815260056020526040902054925060018084161480610fca57508360e0015162ffffff600185901c16115b156110f257610fe78460c001518560e0015186608001518661263e565b6101c089015260608801919091526080870182905260c087019290925260a086015191935011156110bb5767ffffffffffffffff6034856101c00151901c16925060ff8316600884901c901b92508360800151836110459190615795565b9250606483101561105557606492505b603461106684603860086001614320565b6101c086015160008581526007602052604090207ffffffffffffffffffffffffffffffffffff0000000000000000fffffffffffff9091169190921b17905560a08401516080850180519190910390526111f9565b83608001518460a00151600a546110d29190615782565b6110dc9190615795565b600a5560006080850181905260608501526111f9565b67ffffffffffffffff601984901c16915081600003611141576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791d600482015260240161027d565b60ff8216600883901c901b915081846080015110611160576000611168565b836080015182035b91506127108210156111af57600091508361014001518460c00151036111a05761119784610140015186614449565b61014086015294505b6111af8460c00151600061462b565b60196111c083603860086000614320565b60c08601516000908152600560205260409020911b6301ffffff851617905560a08401516080850180516111f5908390615795565b9052505b600060a08501525b60c08401516040850152606084015184526080840151602085015261010084015161122b906123a6565b6101a08801526101808701525061016085015260008b13156112d15761018084015161125c64e8d4a510008d61576b565b61126691906157d7565b846060018181516112779190615782565b90525060608401516fffffffffffffffffffffffffffffffff10156112cc576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792f600482015260240161027d565b611428565b60008b1215611428577fffffffffffffffffffffffffffffffff800000000000000000000000000000008b13156113845761018084015160019061131a64e8d4a510008e6157eb565b6113249190615837565b61132e919061589f565b90508360600151816000031115611375576040517f60121cca000000000000000000000000000000000000000000000000000000008152617926600482015260240161027d565b60608401805182019052611428565b7f80000000000000000000000000000000000000000000000000000000000000008b036113f25764e8d4a5100084610180015185606001516113c6919061576b565b6113d091906157d7565b6113d9906158c6565b6113e49060016158fe565b600060608601529a50611428565b6040517f60121cca00000000000000000000000000000000000000000000000000000000815261792f600482015260240161027d565b60008a13156114f8576101a084015161144664e8d4a510008c61576b565b61145091906157d7565b61145b906001615782565b92506127106103ff6052866101000151901c1684611479919061576b565b61148391906157d7565b61148d9084615782565b8460800181815161149e9190615782565b90525060808401516fffffffffffffffffffffffffffffffff10156114f3576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792f600482015260240161027d565b611618565b60008a1215611618577fffffffffffffffffffffffffffffffff800000000000000000000000000000008a13156115ad576101a084015161153e64e8d4a510008c6157eb565b6115489190615837565b6115539060016158fe565b9050806000039050836080015181111561159d576040517f60121cca000000000000000000000000000000000000000000000000000000008152617927600482015260240161027d565b6080840180518290039052611618565b7f80000000000000000000000000000000000000000000000000000000000000008a036113f257600164e8d4a51000856101a0015186608001516115f1919061576b565b6115fb91906157d7565b611604906158c6565b61160e919061589f565b6000608086015299505b8a158015611624575089155b1561165f576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791a600482015260240161027d565b6080840151156118d4576116978460600151633b9aca008660800151633b9aca01028161168e5761168e6157a8565b0460010161469e565b60a0880152608087015260e086015260c085015260008a12156117095783602001518460a0015185608001516116cd9190615795565b1115611709576040517f60121cca000000000000000000000000000000000000000000000000000000008152617934600482015260240161027d565b60008b138015611717575089155b156117bc578351602085015161173b906c010000000000000000000000009061576b565b61174591906157d7565b84606001516c010000000000000000000000008660a00151876080015161176c9190615795565b611776919061576b565b61178091906157d7565b11156117bc576040517f60121cca000000000000000000000000000000000000000000000000000000008152617934600482015260240161027d565b8361014001518460c00151126118cf5760008460c00151126117e95760018460c00151901b6001176117f5565b60c084015160000360011b5b92508460021660000361183257600283901b857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000161794506118fb565b6001603486811c633fffffff16919091016000818152600760205260409020780fffffffc00000000000000000000000000000000000000000609089901b167afffff000000000000000000000000000000000000000000000000060c28a901b161790557ffffffffffffffffffffffffffffffffffffffffffffc00000000000000000000909616600285901b17601687901b179086901b179491505b6118fb565b7f800000000000000000000000000000000000000000000000000000000000000060c08501525b60008b128061190a575060008a135b15611aeb5773ffffffffffffffffffffffffffffffffffffffff891661192e573398505b608084015115611aeb576060846101000151901c73ffffffffffffffffffffffffffffffffffffffff1663e6aa216c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b09190615706565b9250836101a00151846101800151846119c9919061576b565b6119d391906157d7565b92506103e86103ff6020866101000151901c168402816119f5576119f56157a8565b049150722cd76fe086b93ce2f768a00b22a000000000008210611a35576c010000000000000000000000006b033b2e3c9fd0803ce8000000830402611a54565b6b033b2e3c9fd0803ce80000006c010000000000000000000000008302045b9150611a5f8261487b565b5080915050808460c001511315611aeb578360c001518460400151131580611ab05750633b9aca008460200151633b9aca010281611a9f57611a9f6157a8565b046001018460a00151856080015103115b15611aeb576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791e600482015260240161027d565b7f80000000000000000000000000000000000000000000000000000000000000008460c001511315611b475760008460c0015112611b345760018460c00151901b600117611b40565b60c084015160000360011b5b9250611b4c565b600092505b60a0840151606d90611b6390603860086000614320565b6060860151911b90602d90611b7d90603860086000614320565b60e0870151911b9060151b600186901b8615611b9a576000611b9d565b60015b60ff1617171717600360008e81526020019081526020016000208190555060008b1215611d4657610100840151603e1c6103ff1692508215611d46576040517fb5c736e40000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b5c736e490602401602060405180830381865afa158015611c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca79190615706565b6101e0850181905266ffffffffffffff600982901c1660ff600183901c161b9250611cd29083614c83565b9050600081138015611d0b575083610160015164e8d4a510008c6000030281611cfd57611cfd6157a8565b05816103e885810385020503125b15611d46576040517f60121cca000000000000000000000000000000000000000000000000000000008152617928600482015260240161027d565b60008b1315611ec4577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad967e1573eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614611df9576000611dfb565b345b7f00000000000000000000000000000000000000000000000000000000000000008e600080600033604051602001611e4f919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401611e7f96959493929190615982565b604080518083038185885af1158015611e9c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ec191906159db565b50505b60008a1215612092577fffffffffffffffffffffffff11111111111111111111111111111111111111127f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1601611f875789600003925082341115611f4957611f4433843403614d15565b611f8c565b82341015611f44576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791b600482015260240161027d565b600092505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad967e15847f000000000000000000000000000000000000000000000000000000000000000060008e6000803360405160200161201d919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6040516020818303038152906040526040518863ffffffff1660e01b815260040161204d96959493929190615982565b604080518083038185885af115801561206a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061208f91906159db565b50505b60008b121561217757604080516000808252602082019092527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169163ad967e15917f0000000000000000000000000000000000000000000000000000000000000000918f918e9082906040518763ffffffff1660e01b815260040161213296959493929190615982565b60408051808303816000875af1158015612150573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217491906159db565b50505b60008a131561225d57604080516000808252602082019092527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169163ad967e15917f000000000000000000000000000000000000000000000000000000000000000091908e9082908f906040518763ffffffff1660e01b815260040161221896959493929190615982565b60408051808303816000875af1158015612236573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225a91906159db565b50505b67ffffffffffffffff605286901c1692508360000151846060015160ff8516600886901c901b61228d9190615782565b6122979190615795565b925067ffffffffffffffff609286901c16915083602001518460a0015185608001516122c39190615795565b6122d690600885901c60ff86161b615782565b6122e09190615795565b915060926122f383603860086001614320565b901b605261230685603860086000614320565b901b7ffffffffffffc00000000000000000000000000000003ffffffffffffffffffff8716171760005560408051338152602081018e90529081018c9052606081018b905273ffffffffffffffffffffffffffffffffffffffff8a1660808201527ffef64760e30a41b9d5ba7dd65ff7236a61d89ed8b44c67a29e84db1a67513a1c9060a00160405180910390a150999a98995096979650505050505050565b6008546040517fb5c736e40000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015260009182918291829161248a9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b5c736e4906024015b602060405180830381865afa158015612461573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124859190615706565b614d64565b506040517fb5c736e40000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006004820152909550612524907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b5c736e490602401612444565b94505067ffffffffffffffff81811690604083901c168187108061254757508086105b15612582576040517f60121cca000000000000000000000000000000000000000000000000000000008152617932600482015260240161027d565b61271061ffff8916670de0b6b3a7640000848a670de0b6b3a764000002816125ac576125ac6157a8565b040302816125bc576125bc6157a8565b04945061271061ffff60108a901c16670de0b6b3a76400008389670de0b6b3a764000002816125ed576125ed6157a8565b040302816125fd576125fd6157a8565b049350670de0b6b3a7640000608084901c67ffffffffffffffff1686820102049450670de0b6b3a764000060c084901c858201020493505050509193509193565b600080808080868180600189901c62ffffff168b9003612684575050601a87901c633fffffff169250603887901c6603ffffffffffff166001601989901c8116146126db565b60008c8152600660205260408120600360028e0181810660550292918491048152602081019190915260400160002054901c600181811c633fffffff169750601f82901c6603ffffffffffff169450908116149150505b6000858152600760205260409020549350801561271e577f80000000000000000000000000000000000000000000000000000000000000009b50600099506128ea565b836003166002036127885761274082607486901c6603ffffffffffff16614f72565b91506001612750600f6023615782565b6001901b61275e9190615795565b82146127885760a69390931c633fffffff166000818152600760205260409020549094509261271e565b83600316600314806127b4575060016127a3600f6023615782565b6001901b6127b19190615795565b82145b156127e5577f80000000000000000000000000000000000000000000000000000000000000009b50600099506128ea565b6127fd8a607486901c6603ffffffffffff168461500a565b9950606483048a111561281a5761271061270f8b0204995061281f565b600099505b89156128c65783600416600414612842576207ffff600385901c1660000361284d565b6207ffff600385901c165b9b50600061285d8d60020b6140be565b905061271f612710820204633fffffff601687901c811661287e8385615795565b612888919061576b565b61289291906157d7565b61289c9082615782565b6128b36c010000000000000000000000008e61576b565b6128bd91906157d7565b975050506128ea565b7f80000000000000000000000000000000000000000000000000000000000000009b505b8b8a97509750505050945094509450945094565b6000806129627f00000000000000000000000000000000000000000000000000000000000000006000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061074492505050565b80602001905181019061297591906159db565b90939092509050565b6000806129b36040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b60008054906001821690036108a257600181176000556127108810806129e857506fffffffffffffffffffffffffffffffff88115b15612a23576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792e600482015260240161027d565b7fffffffffffffffffffffffff11111111111111111111111111111111111111127f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1601612ae857873414158015612aa8575061dead73ffffffffffffffffffffffffffffffffffffffff871614155b15612ae3576040517f60121cca000000000000000000000000000000000000000000000000000000008152617920600482015260240161027d565b612b24565b3415612b24576040517f60121cca000000000000000000000000000000000000000000000000000000008152617920600482015260240161027d565b6001548252600281901c620fffff16600003612b70576040517f60121cca00000000000000000000000000000000000000000000000000000000815261791f600482015260240161027d565b8151612b7b906123a6565b90919250909150836060018460800182815250828152505050612bf86040518061018001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b612c316040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b601683901c633fffffff16808252600090815260076020908152604082205490830181905260741c6603ffffffffffff166060830181905281908103612c7f576603ffffffffc00060608401525b602083015160c41c620fffff1691508115612cc65781600116600114612cb1576207ffff600183901c16600003612cbc565b6207ffff600183901c165b6080840152612ced565b7f800000000000000000000000000000000000000000000000000000000000000060808401525b84600416600414612d0a576207ffff600386901c16600003612d15565b6207ffff600386901c165b60c08501526002851615612d2a576002612d2d565b60015b60ff1684610100018181525050612d7a6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60c085015181528651604080517fe6aa216c000000000000000000000000000000000000000000000000000000008152905160609290921c9163e6aa216c916004808201926020929091908290030181865afa158015612dde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e029190615706565b92508660800151876060015184612e19919061576b565b612e2391906157d7565b9250612e4683760a70c3c40a64e6c51999090b65f67d92400000000000006157d7565b87519092506127109060481c6103ff1681018302046060860152722cd76fe086b93ce2f768a00b22a000000000008310612e9d576c010000000000000000000000006b033b2e3c9fd0803ce8000000840402612ebc565b6b033b2e3c9fd0803ce80000006c010000000000000000000000008402045b87519093506103e890602a1c6103ff168402049150612eda8261487b565b50602088015286516103e89060341c6103ff168402049150612efb8261487b565b506040880152608087015164e8d4a510008e0281612f1b57612f1b6157a8565b0485528915612fb15760025485516fffffffffffffffffffffffffffffffff8216945060809190911c9250831115612f965784518390612f5b908461576b565b612f6591906157d7565b60a08601819052612f769083615795565b855160808088018290526000885282901b94039384176002559150612fb1565b6000600255845183900385526080850183905260a085018290525b86602001518560c00151138015612fd0575086604001518560c0015113155b15613ab357845115613ab3576040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081018290528190680100000000000000009060008960c0015112613041576101008960c001518161303b5761303b6157a8565b0561305e565b60016101008a60c001516001018161305b5761305b6157a8565b05035b6040820152845161306e906140be565b604086015261010089015160010361309957604085015160e08a015260c089015160208201526131a0565b61271f856040015161271002816130b2576130b26157a8565b046060860181905260408601510360808601819052602089015160161c633fffffff90811660c0880181905290910260608701519190040160e08a0152845160208c015160010114801561310a57508460c001516001145b156131a05773ffffffffffffffffffffffffffffffffffffffff8f1661dead0361316a576040517fcc36aa44000000000000000000000000000000000000000000000000000000008152600060048201819052602482015260440161027d565b6040517f60121cca000000000000000000000000000000000000000000000000000000008152617935600482015260240161027d565b8861010001516001036132105760c0890180516000908152600560205260408082205460608c01518c5194518452919092206301fffffe8316601a9490941b9390931760389190911b1760011790915566ffffffffffffff602182901c1660ff601983901c161b97509550613233565b67ffffffffffffffff60348960200151901c16965060ff8716600888901c901b96505b86896020018181516132459190615782565b90525060e08901516132646c010000000000000000000000008961576b565b61326e91906157d7565b8960400181815161327f9190615782565b90525060c0890151602082015114801561329e57508861010001516001145b806132ab57506080810151155b156133db5780608001516000036132d45760408082015160009081526004602052205460808201525b88610100015160010361332b57604081015160c08a015160009081036101009283020190910160608301819052608083018051821b90911c90819052900361332b5760408082015160009081526004602052908120555b608081015115613359576001613344826080015161504f565b604083015161010002010360208201526133db565b8a602001518160400151610100021215613398577f800000000000000000000000000000000000000000000000000000000000000060208201526133db565b604080820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190819052600090815260046020522054608082015261332b565b806020015188608001511380156133f957508a602001518860800151135b156134165760808801516101208a015260026101608a0152613452565b8a602001518160200151131561343e5760208101516101208a015260016101608a0152613452565b60208b01516101208a015260036101608a01525b61346389610120015160020b6140be565b60408601526101608901516002036134f75761271f8560400151612710028161348e5761348e6157a8565b046060860181905260408087015191909103608087019081526020808b015160a61c633fffffff908116600090815260079092529290205460a08b0181905260161c821660c0880181905290510260608701519190040160a086018190526101408a0152613514565b604085015160a086018190526101408a0152633fffffff60c08601525b6c010000000000000000000000008961014001518a60600151613537919061576b565b61354191906157d7565b613557906b033b2e3c9fd0803ce8000000615795565b8960e001518a602001518b6101400151613571919061576b565b61357b91906157d7565b8a6020015161358a9190615795565b6135a0906b033b2e3c9fd0803ce800000061576b565b6135aa91906157d7565b93506b033b2e3c9fd0803ce80000008960600151856135c9919061576b565b6135d391906157d7565b9250838960200151036135ee576135eb600185615795565b93505b88518410158061360357508861016001516003145b156138cd5760808101516040808301516000908152600460205220558851841061374257885160608a01519094506b033b2e3c9fd0803ce800000090613649908661576b565b61365391906157d7565b92508289604001516136659190615795565b6c01000000000000000000000000858b602001516136839190615795565b61368d919061576b565b61369791906157d7565b96506136a28761487b565b606087015280865260208c015113156136c85784516002018552600160c0860152613755565b84516001018552606085015161271061271f8202046040870181905281900360808701819052908803633fffffff0281613704576137046157a8565b0460c086018190521561373557633fffffff8560c00151101561372b578460c00151613738565b633ffffffe613738565b60015b60c0860152613755565b6101208901516001908101865260c08601525b60208901516137648582615795565b61376e908461576b565b61377891906157d7565b9150838960800181815161378c9190615782565b9052506020890180518591906137a3908390615795565b90525060a0890180518491906137ba908390615782565b9052506040890180518491906137d1908390615795565b90525060608801516137e39083615105565b606089015260208901516064111561382b576040517f60121cca000000000000000000000000000000000000000000000000000000008152617930600482015260240161027d565b8451600013613841578451600190811b1761384a565b845160000360011b5b606089015160208b015191975060741b9060349061386d90603860086001614320565b901b60168760c00151901b600289901b60a6808d60200151901c901b60011717171717600760008a6000015181526020019081526020016000208190555060168860000151901b600287901b6034808d901c901b60021717179950613aae565b8851849003895260208901516138e38582615795565b6138ed908461576b565b6138f791906157d7565b9150838960800181815161390b9190615782565b905250602089018051859190613922908390615795565b90525060a089018051849190613939908390615782565b905250604089018051849190613950908390615795565b90525060608801516139629083615105565b6060890152610160890151680100000000000000009250600203613a8757633fffffff60a68960200151901c1696508760a00151955060006603ffffffffffff607488901c16905060006139c38a60600151836151a990919063ffffffff16565b6020808c0180518d516000908152600790935260409092207fffffffffffffffffffffffc00000000000000000000000000000000000000000909216607484901b17600217909155998b5298889052506060890181905260c487901c620fffff16978815613a5d5788600116600114613a48576207ffff60018a901c16600003613a53565b6207ffff60018a901c165b60808b0152613a84565b7f800000000000000000000000000000000000000000000000000000000000000060808b01525b50505b61012089015160c08a01526101608901516101008a015261014089015160e08a01526131a0565b505050505b64e8d4a5100087608001518660800151613acd919061576b565b613ad791906157d7565b985064e8d4a5100087606001518660a00151613af3919061576b565b613afd91906157d7565b97508c891115613b2157613b11898e6157d7565b613b1b908961576b565b97508c98505b8b89613b358a670de0b6b3a764000061576b565b613b3f91906157d7565b1015613b7b576040517f60121cca000000000000000000000000000000000000000000000000000000008152617921600482015260240161027d565b73ffffffffffffffffffffffffffffffffffffffff8b1661dead03613bd6576040517fcc36aa4400000000000000000000000000000000000000000000000000000000815260048101899052602481018a905260440161027d565b7fffffffffffffffffffffffff11111111111111111111111111111111111111127f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1601613c4f5788925034891015613c4a57613c4a338a3403614d15565b613c54565b600092505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad967e15847f000000000000000000000000000000000000000000000000000000000000000060008d60000360008033604051602001613ce8919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401613d1896959493929190615982565b604080518083038185885af1158015613d35573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613d5a91906159db565b505073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663ad967e157f000000000000000000000000000000000000000000000000000000000000000060008b8103908f81806040519080825280601f01601f191660200182016040528015613dec576020820181803683370190505b506040518763ffffffff1660e01b8152600401613e0e96959493929190615982565b60408051808303816000875af1158015613e2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e5091906159db565b505067ffffffffffffffff605287901c1692508460a0015160ff8416600885901c901b613e7d9190615795565b925067ffffffffffffffff609287901c169150846080015160ff8316600884901c901b613eaa9190615795565b91506092613ebd83603860086001614320565b901b6052613ed085603860086000614320565b7ffffffffffffc00000000000000000000000000000003ffffffffffffffffffff8916911b171760005560408051338152602081018a90529081018a905273ffffffffffffffffffffffffffffffffffffffff8c1660608201527f80fd9cc6b1821f4a510e45ffce6852ea3404807b5d3d833ffa85664408afcb669060800160405180910390a15050505050505094509492505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614613fda576040517f60121cca000000000000000000000000000000000000000000000000000000008152617929600482015260240161027d565b60005460011660000361401d576040517f60121cca00000000000000000000000000000000000000000000000000000000815261792a600482015260240161027d565b6140548461402d838501856159ff565b7f000000000000000000000000000000000000000000000000000000000000000086615254565b50505050565b6140bb7f00000000000000000000000000000000000000000000000000000000000000006000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061074492505050565b50565b600060ff82901d80831803617fff8111156140d857600080fd5b700100000000000000000000000000000000600182161561410657506fff9dd7de423466c20352b1246ce4856f5b6002821615614125576fff3bd55f4488ad277531fa1c725a66d00260801c5b6004821615614144576ffe78410fd6498b73cb96a6917f8532590260801c5b6008821615614163576ffcf2d9987c9be178ad5bfeffaa1232730260801c5b6010821615614182576ff9ef02c4529258b057769680fc6601b30260801c5b60208216156141a1576ff402d288133a85a17784a411f7aba0820260801c5b60408216156141c0576fe895615b5beb6386553757b0352bda900260801c5b60808216156141df576fd34f17a00ffa00a8309940a15930391a0260801c5b6101008216156141ff576fae6b7961714e20548d88ea5123f9a0ff0260801c5b61020082161561421f576f76d6461f27082d74e0feed3b388c0ca10260801c5b61040082161561423f576f372a3bfe0745d8b6b19d985d9a8b85bb0260801c5b61080082161561425f576f0be32cbee48979763cf7247dd7bb539d0260801c5b61100082161561427e576e8d4f70c9ff4924dac37612d1e2921e0260801c5b61200082161561429c576d4e009ae5519380809a02ca7aec770260801c5b6140008216156142b8576b17c45e641b6e95dee056ff100260801c5b600091507f80000000000000000000000000000000000000000000000000000000000000008416614316577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0463ffffffff81161561431657600191505b60201c0192915050565b600080856fffffffffffffffffffffffffffffffff8111156143435760809150811c5b67ffffffffffffffff81111561435b576040918201911c5b63ffffffff81111561436f576020918201911c5b61ffff811115614381576010918201911c5b60ff811115614392576008918201911c5b600f8111156143a3576004918201911c5b60038111156143b4576002918201911c5b60018111156143c4576001820191505b80156143d1576001820191505b50848110156143dd5750835b848103905085811c6000821184161561442c57600181019050806001871b0361442c57506001908101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86011b5b6001851b821061443b57600080fd5b90931b909201949350505050565b601681901c633fffffff166000818152600760205260408120549091829182600160c483901c81169003614487575060c581901c6207ffff166144bf565b5060c581901c6207ffff166000819003906144bf57507f80000000000000000000000000000000000000000000000000000000000000005b60006144ca8861531b565b90508082136144d957806144db565b815b94507f8000000000000000000000000000000000000000000000000000000000000000850361452e57867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0000116965061461d565b8085036145a457600085121561457157600385600003901b877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000011617965061461d565b600385901b877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc000011660041717965061461d565b6000848152600760205260408120557ffffffffffffffffffffffffffffffffffffffffffffc00000000000000000001909616623ffffc60c284901c1617660fffffffc00000609084901c16177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff840160341b17600217955b869550505050509250929050565b600080831261463e576101008305614649565b600161010084820105035b90506101008102830382614671576000828152600460205260409020546001821b1916614686565b6000828152600460205260409020546001821b175b60009283526004602052604090922091909155505050565b6000806000806127108510156146e4576040517f60121cca000000000000000000000000000000000000000000000000000000008152617933600482015260240161027d565b6000866146fe6c010000000000000000000000008861576b565b61470891906157d7565b90506147138161487b565b60019091019550905061271061271f82020490506060614733888361576b565b901c92506147418684615795565b600086815260056020526040812054600181901c62ffffff169650919350851580159061476f575060018216155b156147b05766ffffffffffffff602183901c1660ff601984901c161b6147958682615782565b9150806000036147aa576147aa88600161462b565b50614804565b85156147f0576000878152600660209081526040808320600360028b0181810486529190935292208054601986901c929093066055029190911b90911790555b85600101955084905061480487600161462b565b612710811015614844576040517f60121cca000000000000000000000000000000000000000000000000000000008152617931600482015260240161027d565b601961485582603860086000614320565b6000898152600560205260409020911b600188901b179055509497939650919450925050565b600080630235b88083107473d85bca016a2338b31715f8e13054c005f8b995d3841117156148a857600080fd5b6c0100000000000000000000000083106000816148de57506c010000000000000000000000006a52b7d2dcc80cd2e40000008502045b811561490157507652b7d2dcc80cd2e40000000000000000000000000000008490045b6f037af932b2affa9738cc6c38ca527831811061494257614000841793506f037af932b2affa9738cc6c38ca5278316a52b7d2dcc80cd2e400000082020490505b6d010f7a088a76f267264caa114f0a811061497f57612000841793506d010f7a088a76f267264caa114f0a6a52b7d2dcc80cd2e400000082020490505b6b95da74f87f839fc2e0dc5bd981106149b857611000841793506b95da74f87f839fc2e0dc5bd96a52b7d2dcc80cd2e400000082020490505b6b06f55dedafd8491caed5a1b881106149f157610800841793506b06f55dedafd8491caed5a1b86a52b7d2dcc80cd2e400000082020490505b6b017fdd10ee11e624491b4cc18110614a2a57610400841793506b017fdd10ee11e624491b4cc16a52b7d2dcc80cd2e400000082020490505b6ab23131bf0c30217b0a2c698110614a6157610200841793506ab23131bf0c30217b0a2c696a52b7d2dcc80cd2e400000082020490505b6a79683edcb9280d797aded78110614a9857610100841793506a79683edcb9280d797aded76a52b7d2dcc80cd2e400000082020490505b6a64366e2f9919f0d9b0dc908110614ace576080841793506a64366e2f9919f0d9b0dc906a52b7d2dcc80cd2e400000082020490505b6a5b0bcda5a78850646b0a818110614b04576040841793506a5b0bcda5a78850646b0a816a52b7d2dcc80cd2e400000082020490505b6a56c840f992c70f959ae8108110614b3a576020841793506a56c840f992c70f959ae8106a52b7d2dcc80cd2e400000082020490505b6a54b9cd178695194f9be0a08110614b70576010841793506a54b9cd178695194f9be0a06a52b7d2dcc80cd2e400000082020490505b6a53b7458aff204b5e65d6818110614ba6576008841793506a53b7458aff204b5e65d6816a52b7d2dcc80cd2e400000082020490505b6a53372a2f38c240d689e4008110614bdc576004841793506a53372a2f38c240d689e4006a52b7d2dcc80cd2e400000082020490505b6a52f76617a04499e66400008110614c12576002841793506a52f76617a04499e66400006a52b7d2dcc80cd2e400000082020490505b6a52d79660f3dec355c000008110614c48576001841793506a52d79660f3dec355c000006a52b7d2dcc80cd2e400000082020490505b81614c6057806a52b7d2dcc80cd2e400000086020492505b8115614c7c579219926a52d79660f3dec355c000008582020492505b5050915091565b600066ffffffffffffff604984901c1660ff604185901c161b808203614cad576000915050614d0f565b612710613fff60a286901c168402046401ffffffff608186901c16420362ffffff60b087901c16614cde828461576b565b614ce891906157d7565b9050808311614cf8576000614cfc565b8083035b9350508084038381111561078757925050505b92915050565b600080600080600085875af1905080614d5f576040517fdee51a8a0000000000000000000000000000000000000000000000000000000081526201155a600482015260240161027d565b505050565b67ffffffffffffffff605b82901c811690609b83901c16811580614d86575080155b15614dc2576040517fd50d751200000000000000000000000000000000000000000000000000000000815262011171600482015260240161027d565b61ffff8316603a84901c6401ffffffff16428181039160ea87901c617fff16911480614dec575082155b80614df75750806001145b15614e0457505050915091565b64496cebb80084840283020484019350617fff60db87901c16925082600103614e2f57505050915091565b82600116600103614e845760019290921c91826c7e37be2022c0914b268000000081614e5d57614e5d6157a8565b049250612710601e87901c613fff166b033b2e3c9fd0803ce8000000850102049250614eb1565b60019290921c916305f5e100601e87901c613fff166127108501026b033b2e3c9fd0803ce8000000020492505b80600116600103614ee85760011c61271081016b033b2e3c9fd0803ce8000000820281614ee057614ee06157a8565b049050614f1e565b60011c61271081016b033b2e3c9fd0803ce8000000820281614f0c57614f0c6157a8565b046b033b2e3c9fd0803ce80000000390505b760a70c3c40a64e6c51999090b65f67d92400000000000008382026127100261ffff881691900402601087901c613fff16612710030292506801b5a660ea44b8000085840283020485019450505050915091565b6000600f83811c9083901c0281681fffffffffffffffff8211614f96576022614f99565b60235b91821c919050617fff858116908516018101614000811015614fba57600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00001617fff811115614ff957506603ffffffffffff9250614d0f915050565b600f9290921b909117949350505050565b6000617fff83811690831603608181101561504257600f83811c821b9085901c860281615039576150396157a8565b04915050615048565b60009150505b9392505050565b6000816fffffffffffffffffffffffffffffffff8311156150715760809150811c5b67ffffffffffffffff811115615089576040918201911c5b63ffffffff81111561509d576020918201911c5b61ffff8111156150af576010918201911c5b60ff8111156150c0576008918201911c5b600f8111156150d1576004918201911c5b60038111156150e2576002918201911c5b60018111156150f2576001820191505b80156150ff576001820191505b50919050565b6000600f83901c8202816c03ffffffffffffffffffffffff821161514c576c01ffffffffffffffffffffffff8211615145576151408261504f565b61514f565b606261514f565b60635b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd617fff87168201810194500191821c919050604083111561519c57604083600f84901b010392506151a1565b600080fd5b505092915050565b600080600f83901c7fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000603186901b16816151e5576151e56157a8565b0490506000604082901c6001146151fd576040615200565b60415b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd81019290921c91617fff8581166040019250613fdd908716909101018181111561519c5703600f9190911b179050614d0f565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080615314576040517fdee51a8a00000000000000000000000000000000000000000000000000000000815262011559600482015260240161027d565b5050505050565b600080600080841261533157610100840561533c565b600161010085820105035b600081815260046020526040812054919350859003610100808502919091010190811b811c91505b81156153835760016153758361504f565b84610100020103935061540e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f036001016153f8577f8000000000000000000000000000000000000000000000000000000000000000935061540e565b6000838152600460205260409020549150615364565b505050919050565b80151581146140bb57600080fd5b60006020828403121561543657600080fd5b815161504881615416565b73ffffffffffffffffffffffffffffffffffffffff811681146140bb57600080fd5b6000806000806080858703121561547957600080fd5b843593506020850135925060408501359150606085013561549981615441565b939692955090935050565b6000602082840312156154b657600080fd5b5035919050565b600080600080608085870312156154d357600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000806080858703121561550557600080fd5b8435935060208501359250604085013561551e81615441565b9150606085013561549981615416565b6000806000806060858703121561554457600080fd5b843561554f81615441565b935060208501359250604085013567ffffffffffffffff8082111561557357600080fd5b818701915087601f83011261558757600080fd5b81358181111561559657600080fd5b8860208285010111156155a857600080fd5b95989497505060200194505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526101a0810160208301516155fd602084018273ffffffffffffffffffffffffffffffffffffffff169052565b506040830151615625604084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015161564d606084018273ffffffffffffffffffffffffffffffffffffffff169052565b506080830151615675608084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060a083015161569d60a084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060c08301516156b260c084018260ff169052565b5060e08301516156c760e084018260ff169052565b50610100838101519083015261012080840151908301526101408084015190830152610160808401519083015261018092830151929091019190915290565b60006020828403121561571857600080fd5b5051919050565b60006020828403121561573157600080fd5b815161504881615441565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417614d0f57614d0f61573c565b80820180821115614d0f57614d0f61573c565b81810381811115614d0f57614d0f61573c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826157e6576157e66157a8565b500490565b808202600082127f8000000000000000000000000000000000000000000000000000000000000000841416156158235761582361573c565b8181058314821517614d0f57614d0f61573c565b600082615846576158466157a8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f80000000000000000000000000000000000000000000000000000000000000008314161561589a5761589a61573c565b500590565b81810360008312801583831316838312821617156158bf576158bf61573c565b5092915050565b60007f800000000000000000000000000000000000000000000000000000000000000082036158f7576158f761573c565b5060000390565b80820182811260008312801582168215821617156151a1576151a161573c565b6000815180845260005b8181101561594457602081850181015186830182015201615928565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b600073ffffffffffffffffffffffffffffffffffffffff8089168352876020840152866040840152808616606084015280851660808401525060c060a08301526159cf60c083018461591e565b98975050505050505050565b600080604083850312156159ee57600080fd5b505080516020909101519092909150565b600060208284031215615a1157600080fd5b81356150488161544156fea264697066735822122087df04e04950c10d1518836e4d6b3d1a189dc7708362a0a8cb74ff0277b71c5464736f6c63430008150033" }