@augmentedfinance/protocol-v1
Version:
Augmented Protocol smart contracts
899 lines • 53.9 kB
JavaScript
"use strict";
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
Object.defineProperty(exports, "__esModule", { value: true });
exports.LendingPoolConfiguratorFactory = void 0;
const contracts_1 = require("@ethersproject/contracts");
class LendingPoolConfiguratorFactory extends contracts_1.ContractFactory {
constructor(signer) {
super(_abi, _bytecode, signer);
}
deploy(overrides) {
return super.deploy(overrides || {});
}
getDeployTransaction(overrides) {
return super.getDeployTransaction(overrides || {});
}
attach(address) {
return super.attach(address);
}
connect(signer) {
return super.connect(signer);
}
static connect(address, signerOrProvider) {
return new contracts_1.Contract(address, _abi, signerOrProvider);
}
}
exports.LendingPoolConfiguratorFactory = LendingPoolConfiguratorFactory;
const _abi = [
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "asset",
type: "address",
},
],
name: "BorrowingDisabledOnReserve",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "asset",
type: "address",
},
{
indexed: false,
internalType: "bool",
name: "stableRateEnabled",
type: "bool",
},
],
name: "BorrowingEnabledOnReserve",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "asset",
type: "address",
},
{
indexed: false,
internalType: "uint256",
name: "ltv",
type: "uint256",
},
{
indexed: false,
internalType: "uint256",
name: "liquidationThreshold",
type: "uint256",
},
{
indexed: false,
internalType: "uint256",
name: "liquidationBonus",
type: "uint256",
},
],
name: "CollateralConfigurationChanged",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "asset",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "proxy",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "implementation",
type: "address",
},
],
name: "DepositTokenUpgraded",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "asset",
type: "address",
},
],
name: "ReserveActivated",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "asset",
type: "address",
},
],
name: "ReserveDeactivated",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "asset",
type: "address",
},
{
indexed: false,
internalType: "uint256",
name: "factor",
type: "uint256",
},
],
name: "ReserveFactorChanged",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "asset",
type: "address",
},
],
name: "ReserveFrozen",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "asset",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "depositToken",
type: "address",
},
{
indexed: false,
internalType: "address",
name: "stableDebtToken",
type: "address",
},
{
indexed: false,
internalType: "address",
name: "variableDebtToken",
type: "address",
},
{
indexed: false,
internalType: "address",
name: "strategy",
type: "address",
},
{
indexed: false,
internalType: "bool",
name: "externalStrategy",
type: "bool",
},
],
name: "ReserveInitialized",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "asset",
type: "address",
},
{
indexed: false,
internalType: "address",
name: "strategy",
type: "address",
},
{
indexed: false,
internalType: "bool",
name: "isExternal",
type: "bool",
},
],
name: "ReserveStrategyChanged",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "asset",
type: "address",
},
],
name: "ReserveUnfrozen",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "asset",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "proxy",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "implementation",
type: "address",
},
],
name: "StableDebtTokenUpgraded",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "asset",
type: "address",
},
],
name: "StableRateDisabledOnReserve",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "asset",
type: "address",
},
],
name: "StableRateEnabledOnReserve",
type: "event",
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "asset",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "proxy",
type: "address",
},
{
indexed: true,
internalType: "address",
name: "implementation",
type: "address",
},
],
name: "VariableDebtTokenUpgraded",
type: "event",
},
{
inputs: [],
name: "REVISION",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "pure",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "asset",
type: "address",
},
],
name: "activateReserve",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
components: [
{
internalType: "address",
name: "depositTokenImpl",
type: "address",
},
{
internalType: "address",
name: "stableDebtTokenImpl",
type: "address",
},
{
internalType: "address",
name: "variableDebtTokenImpl",
type: "address",
},
{
internalType: "uint8",
name: "underlyingAssetDecimals",
type: "uint8",
},
{
internalType: "bool",
name: "externalStrategy",
type: "bool",
},
{
internalType: "address",
name: "strategy",
type: "address",
},
{
internalType: "address",
name: "underlyingAsset",
type: "address",
},
{
internalType: "string",
name: "depositTokenName",
type: "string",
},
{
internalType: "string",
name: "depositTokenSymbol",
type: "string",
},
{
internalType: "string",
name: "variableDebtTokenName",
type: "string",
},
{
internalType: "string",
name: "variableDebtTokenSymbol",
type: "string",
},
{
internalType: "string",
name: "stableDebtTokenName",
type: "string",
},
{
internalType: "string",
name: "stableDebtTokenSymbol",
type: "string",
},
{
internalType: "bytes",
name: "params",
type: "bytes",
},
],
internalType: "struct ILendingPoolConfigurator.InitReserveInput[]",
name: "input",
type: "tuple[]",
},
],
name: "batchInitReserve",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "asset",
type: "address",
},
{
internalType: "uint256",
name: "ltv",
type: "uint256",
},
{
internalType: "uint256",
name: "liquidationThreshold",
type: "uint256",
},
{
internalType: "uint256",
name: "liquidationBonus",
type: "uint256",
},
],
name: "configureReserveAsCollateral",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
components: [
{
internalType: "address",
name: "asset",
type: "address",
},
{
internalType: "uint256",
name: "baseLTV",
type: "uint256",
},
{
internalType: "uint256",
name: "liquidationThreshold",
type: "uint256",
},
{
internalType: "uint256",
name: "liquidationBonus",
type: "uint256",
},
{
internalType: "uint256",
name: "reserveFactor",
type: "uint256",
},
{
internalType: "bool",
name: "borrowingEnabled",
type: "bool",
},
{
internalType: "bool",
name: "stableBorrowingEnabled",
type: "bool",
},
],
internalType: "struct ILendingPoolConfigurator.ConfigureReserveInput[]",
name: "inputParams",
type: "tuple[]",
},
],
name: "configureReserves",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "asset",
type: "address",
},
],
name: "deactivateReserve",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "asset",
type: "address",
},
],
name: "disableBorrowingOnReserve",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "asset",
type: "address",
},
],
name: "disableReserveStableRate",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "asset",
type: "address",
},
{
internalType: "bool",
name: "stableBorrowRateEnabled",
type: "bool",
},
],
name: "enableBorrowingOnReserve",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "asset",
type: "address",
},
],
name: "enableReserveStableRate",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "asset",
type: "address",
},
],
name: "freezeReserve",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "string[]",
name: "names",
type: "string[]",
},
],
name: "getFlashloanAdapters",
outputs: [
{
internalType: "address[]",
name: "adapters",
type: "address[]",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "token",
type: "address",
},
],
name: "implementationOf",
outputs: [
{
internalType: "address",
name: "",
type: "address",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "contract IMarketAccessController",
name: "provider",
type: "address",
},
],
name: "initialize",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "asset",
type: "address",
},
],
name: "isPausedFor",
outputs: [
{
internalType: "bool",
name: "",
type: "bool",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [],
name: "listEmergencyGroup",
outputs: [
{
internalType: "address[]",
name: "",
type: "address[]",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "string[]",
name: "names",
type: "string[]",
},
{
internalType: "address[]",
name: "adapters",
type: "address[]",
},
],
name: "setFlashloanAdapters",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "asset",
type: "address",
},
{
internalType: "bool",
name: "val",
type: "bool",
},
],
name: "setPausedFor",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "asset",
type: "address",
},
{
internalType: "uint256",
name: "reserveFactor",
type: "uint256",
},
],
name: "setReserveFactor",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "asset",
type: "address",
},
{
internalType: "address",
name: "strategy",
type: "address",
},
{
internalType: "bool",
name: "isExternal",
type: "bool",
},
],
name: "setReserveStrategy",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "asset",
type: "address",
},
],
name: "unfreezeReserve",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
components: [
{
internalType: "address",
name: "asset",
type: "address",
},
{
internalType: "string",
name: "name",
type: "string",
},
{
internalType: "string",
name: "symbol",
type: "string",
},
{
internalType: "address",
name: "implementation",
type: "address",
},
{
internalType: "bytes",
name: "params",
type: "bytes",
},
],
internalType: "struct ILendingPoolConfigurator.UpdatePoolTokenInput",
name: "input",
type: "tuple",
},
],
name: "updateDepositToken",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
components: [
{
internalType: "address",
name: "asset",
type: "address",
},
{
internalType: "string",
name: "name",
type: "string",
},
{
internalType: "string",
name: "symbol",
type: "string",
},
{
internalType: "address",
name: "implementation",
type: "address",
},
{
internalType: "bytes",
name: "params",
type: "bytes",
},
],
internalType: "struct ILendingPoolConfigurator.UpdatePoolTokenInput",
name: "input",
type: "tuple",
},
],
name: "updateStableDebtToken",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
{
inputs: [
{
components: [
{
internalType: "address",
name: "asset",
type: "address",
},
{
internalType: "string",
name: "name",
type: "string",
},
{
internalType: "string",
name: "symbol",
type: "string",
},
{
internalType: "address",
name: "implementation",
type: "address",
},
{
internalType: "bytes",
name: "params",
type: "bytes",
},
],
internalType: "struct ILendingPoolConfigurator.UpdatePoolTokenInput",
name: "input",
type: "tuple",
},
],
name: "updateVariableDebtToken",
outputs: [],
stateMutability: "nonpayable",
type: "function",
},
];
const _bytecode = "0x60806040526200001360016000196200003f565b60005560006001553480156200002857600080fd5b50600680546001600160a01b031916905562000063565b6000828210156200005e57634e487b7160e01b81526011600452602481fd5b500390565b61395680620000736000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80638b4872b8116100c3578063c4d66de81161007c578063c4d66de8146102e4578063d7f00e0c146102f7578063dde43cba1461030a578063eede87c114610319578063ef1f93731461032c578063f53a25151461033f57600080fd5b80638b4872b81461025a5780639dd8aad514610285578063a8dc0f4514610298578063b75d6f34146102ab578063bf344183146102be578063bfbc47ff146102d157600080fd5b80636b527e43116101155780636b527e43146101f357806378acc7e6146102065780637aca76eb146102195780637b1c1bb41461022c5780637c4e560b146102345780637dc867411461024757600080fd5b806305abb0b21461015d5780630db2bb82146101725780631aab5e7a146101855780632dd650ad146101ad5780633e72a454146101cd5780634b4e6753146101e0575b600080fd5b61017061016b3660046134f0565b610352565b005b610170610180366004613123565b610493565b6101986101933660046130eb565b6105a0565b60405190151581526020015b60405180910390f35b6101c06101bb3660046132b6565b610639565b6040516101a49190613652565b6101706101db3660046130eb565b61074a565b6101706101ee36600461319d565b6108af565b6101706102013660046132b6565b610a0d565b610170610214366004613169565b610b20565b6101706102273660046130eb565b610b64565b6101c0610ba6565b6101706102423660046131c8565b610c2c565b6101706102553660046134f0565b610f02565b61026d6102683660046130eb565b611044565b6040516001600160a01b0390911681526020016101a4565b61017061029336600461335f565b61104f565b6101706102a63660046130eb565b6112b5565b6101706102b93660046130eb565b611411565b6101706102cc3660046130eb565b61156d565b6101706102df3660046134f0565b6116c9565b6101706102f23660046130eb565b61180b565b6101706103053660046132f6565b6118f2565b604051600181526020016101a4565b610170610327366004613169565b6119f5565b61017061033a3660046130eb565b611c8a565b61017061034d3660046130eb565b611cc9565b60408051808201909152600280825261333360f01b6020830152600654610386926001600160a01b03909116913391611e25565b6007546000906001600160a01b03166335ea6a756103a760208501856130eb565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016101806040518083038186803b1580156103e757600080fd5b505afa1580156103fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041f9190613404565b60e00151905061042f8282611e4f565b61043f60808301606084016130eb565b6001600160a01b0390811690821661045a60208501856130eb565b6001600160a01b03167f7eeb6bfbad309e542bb2faa2e55a0979e8e949e49301761186ce184a8b0257f560405160405180910390a45050565b60408051808201909152600280825261333360f01b60208301526006546104c7926001600160a01b03909116913391611e25565b6001600160a01b0382161515806104db5750805b6104e457600080fd5b6007546040516306d95dc160e11b81526001600160a01b0385811660048301528481166024830152831515604483015290911690630db2bb8290606401600060405180830381600087803b15801561053b57600080fd5b505af115801561054f573d6000803e3d6000fd5b5050604080516001600160a01b0386811682528515156020830152871693507ff4eb993fa575f624ccbde7e3317079bcaea14825e82752c23e735294ec9915849250015b60405180910390a2505050565b60075460405163c44b11f760e01b81526001600160a01b0383811660048301526000926106339291169063c44b11f79060240160206040518083038186803b1580156105eb57600080fd5b505afa1580156105ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062391906133e9565b5167020000000000000016151590565b92915050565b60608167ffffffffffffffff81111561066257634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561068b578160200160208202803683370190505b50905060005b828110156107435760088484838181106106bb57634e487b7160e01b600052603260045260246000fd5b90506020028101906106cd9190613732565b6040516106db9291906135d0565b9081526040519081900360200190205482516001600160a01b039091169083908390811061071957634e487b7160e01b600052603260045260246000fd5b6001600160a01b03909216602092830291909101909101528061073b8161389f565b915050610691565b5092915050565b60408051808201909152600280825261333360f01b602083015260065461077e926001600160a01b03909116913391611e25565b610787816120bf565b60075460405163c44b11f760e01b81526001600160a01b038381166004830152600092169063c44b11f79060240160206040518083038186803b1580156107cd57600080fd5b505afa1580156107e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080591906133e9565b9050610812816000612217565b6007548151604051635c69493b60e11b81526001600160a01b039092169163b8d292769161084591869190600401613639565b600060405180830381600087803b15801561085f57600080fd5b505af1158015610873573d6000803e3d6000fd5b50506040516001600160a01b03851692507f6f60cf8bd0f218cabe1ea3150bd07b0b758c35c4cfdf7138017a283e65564d5e9150600090a25050565b60408051808201909152600280825261333360f01b60208301526006546108e3926001600160a01b03909116913391611e25565b60075460405163c44b11f760e01b81526001600160a01b038481166004830152600092169063c44b11f79060240160206040518083038186803b15801561092957600080fd5b505afa15801561093d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096191906133e9565b905061096d818361222b565b6007548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916109a091879190600401613639565b600060405180830381600087803b1580156109ba57600080fd5b505af11580156109ce573d6000803e3d6000fd5b50505050826001600160a01b03167f2694ccb0b585b6a54b8d8b4a47aa874b05c257b43d34e98aee50838be00d34058360405161059391815260200190565b60408051808201909152600280825261333360f01b6020830152600654610a41926001600160a01b03909116913391611e25565b600654604051635c9fcd8560e11b81526208000060048201526000916001600160a01b03169063b93f9b0a9060240160206040518083038186803b158015610a8857600080fd5b505afa158015610a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac09190613107565b905060005b82811015610b1a57610b08848483818110610af057634e487b7160e01b600052603260045260246000fd5b9050602002810190610b029190613777565b83612282565b80610b128161389f565b915050610ac5565b50505050565b6040805180820190915260028152611b9b60f11b6020820152600654610b56916001600160a01b03909116903390600190611e25565b610b60828261279d565b5050565b60408051808201909152600280825261333360f01b6020830152600654610b98926001600160a01b03909116913391611e25565b610ba381600161279d565b50565b600754604080516334651b6f60e21b815290516060926001600160a01b03169163d1946dbc916004808301926000929190829003018186803b158015610beb57600080fd5b505afa158015610bff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c279190810190613202565b905090565b60408051808201909152600280825261333360f01b6020830152600654610c60926001600160a01b03909116913391611e25565b60075460405163c44b11f760e01b81526001600160a01b038681166004830152600092169063c44b11f79060240160206040518083038186803b158015610ca657600080fd5b505afa158015610cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cde91906133e9565b90508284111560405180604001604052806002815260200161373560f01b81525090610d265760405162461bcd60e51b8152600401610d1d919061369f565b60405180910390fd5b508215610dea57610d396001606461383f565b610d4490606461383f565b61ffff16821160405180604001604052806002815260200161373560f01b81525090610d835760405162461bcd60e51b8152600401610d1d919061369f565b50610d906001606461383f565b610d9b90606461383f565b61ffff16610da98484612904565b111560405180604001604052806002815260200161373560f01b81525090610de45760405162461bcd60e51b8152600401610d1d919061369f565b50610e2c565b604080518082019091526002815261373560f01b60208201528215610e225760405162461bcd60e51b8152600401610d1d919061369f565b50610e2c856120bf565b610e368185612a00565b610e408184612a49565b610e4a8183612a9a565b6007548151604051635c69493b60e11b81526001600160a01b039092169163b8d2927691610e7d91899190600401613639565b600060405180830381600087803b158015610e9757600080fd5b505af1158015610eab573d6000803e3d6000fd5b505060408051878152602081018790529081018590526001600160a01b03881692507f637febbda9275aea2e85c0ff690444c8d87eb2e8339bbede9715abcc89cb0995915060600160405180910390a25050505050565b60408051808201909152600280825261333360f01b6020830152600654610f36926001600160a01b03909116913391611e25565b6007546000906001600160a01b03166335ea6a75610f5760208501856130eb565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016101806040518083038186803b158015610f9757600080fd5b505afa158015610fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcf9190613404565b61010001519050610fe08282611e4f565b610ff060808301606084016130eb565b6001600160a01b0390811690821661100b60208501856130eb565b6001600160a01b03167f7a943a5b6c214bf7726c069a878b1e2a8e7371981d516048b84e03743e67bc2860405160405180910390a45050565b600061063382612aed565b60408051808201909152600280825261333360f01b6020830152600654611083926001600160a01b03909116913391611e25565b60005b818110156112b05761114a8383838181106110b157634e487b7160e01b600052603260045260246000fd5b6110c792602060e09092020190810191506130eb565b8484848181106110e757634e487b7160e01b600052603260045260246000fd5b905060e002016020013585858581811061111157634e487b7160e01b600052603260045260246000fd5b905060e002016040013586868681811061113b57634e487b7160e01b600052603260045260246000fd5b905060e0020160600135610c2c565b82828281811061116a57634e487b7160e01b600052603260045260246000fd5b905060e0020160a001602081019061118291906133cf565b156111fd576111f88383838181106111aa57634e487b7160e01b600052603260045260246000fd5b6111c092602060e09092020190810191506130eb565b8484848181106111e057634e487b7160e01b600052603260045260246000fd5b905060e0020160c001602081019061032791906133cf565b611236565b61123683838381811061122057634e487b7160e01b600052603260045260246000fd5b6102a692602060e09092020190810191506130eb565b61129e83838381811061125957634e487b7160e01b600052603260045260246000fd5b61126f92602060e09092020190810191506130eb565b84848481811061128f57634e487b7160e01b600052603260045260246000fd5b905060e00201608001356108af565b806112a88161389f565b915050611086565b505050565b60408051808201909152600280825261333360f01b60208301526006546112e9926001600160a01b03909116913391611e25565b60075460405163c44b11f760e01b81526001600160a01b038381166004830152600092169063c44b11f79060240160206040518083038186803b15801561132f57600080fd5b505afa158015611343573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136791906133e9565b9050611374816000612b7e565b6007548151604051635c69493b60e11b81526001600160a01b039092169163b8d29276916113a791869190600401613639565b600060405180830381600087803b1580156113c157600080fd5b505af11580156113d5573d6000803e3d6000fd5b50506040516001600160a01b03851692507fe9a7e5fd4fc8ea18e602350324bf48e8f05d12434af0ce0be05743e6a5fdcb9e9150600090a25050565b60408051808201909152600280825261333360f01b6020830152600654611445926001600160a01b03909116913391611e25565b60075460405163c44b11f760e01b81526001600160a01b038381166004830152600092169063c44b11f79060240160206040518083038186803b15801561148b57600080fd5b505afa15801561149f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c391906133e9565b90506114d0816001612217565b6007548151604051635c69493b60e11b81526001600160a01b039092169163b8d292769161150391869190600401613639565b600060405180830381600087803b15801561151d57600080fd5b505af1158015611531573d6000803e3d6000fd5b50506040516001600160a01b03851692507f35b80cd8ea3440e9a8454f116fa658b858da1b64c86c48451f4559cefcdfb56c9150600090a25050565b60408051808201909152600280825261333360f01b60208301526006546115a1926001600160a01b03909116913391611e25565b60075460405163c44b11f760e01b81526001600160a01b038381166004830152600092169063c44b11f79060240160206040518083038186803b1580156115e757600080fd5b505afa1580156115fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161f91906133e9565b905061162c816001612b92565b6007548151604051635c69493b60e11b81526001600160a01b039092169163b8d292769161165f91869190600401613639565b600060405180830381600087803b15801561167957600080fd5b505af115801561168d573d6000803e3d6000fd5b50506040516001600160a01b03851692507f8dee2b2f3e98319ae6347eda521788f73f4086c9be9a594942b370b137fb8cb19150600090a25050565b60408051808201909152600280825261333360f01b60208301526006546116fd926001600160a01b03909116913391611e25565b6007546000906001600160a01b03166335ea6a7561171e60208501856130eb565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016101806040518083038186803b15801561175e57600080fd5b505afa158015611772573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117969190613404565b610120015190506117a78282611e4f565b6117b760808301606084016130eb565b6001600160a01b039081169082166117d260208501856130eb565b6001600160a01b03167f9439658a562a5c46b1173589df89cf001483d685bad28aedaff4a88656292d8160405160405180910390a45050565b6001600080600061181b84612ba6565b925092509250806118dd576001849055600680546001600160a01b0319166001600160a01b03871690811790915560408051630261bf8b60e01b81529051630261bf8b91600480820192602092909190829003018186803b15801561187f57600080fd5b505afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b79190613107565b600780546001600160a01b0319166001600160a01b039290921691909117905560008490555b816118eb5760008381556001555b5050505050565b60408051808201909152600280825261333360f01b6020830152600654611926926001600160a01b03909116913391611e25565b82811461193257600080fd5b60005b838110156118eb5782828281811061195d57634e487b7160e01b600052603260045260246000fd5b905060200201602081019061197291906130eb565b600886868481811061199457634e487b7160e01b600052603260045260246000fd5b90506020028101906119a69190613732565b6040516119b49291906135d0565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055806119ed8161389f565b915050611935565b60408051808201909152600280825261333360f01b6020830152600654611a29926001600160a01b03909116913391611e25565b6007546040516335ea6a7560e01b81526001600160a01b03848116600483015260009216906335ea6a75906024016101806040518083038186803b158015611a7057600080fd5b505afa158015611a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa89190613404565b610120810151604080518082019091526002815261373560f01b60208201529192506001600160a01b0316611af05760405162461bcd60e51b8152600401610d1d919061369f565b50811580611b0b57506101008101516001600160a01b031615155b60405180604001604052806002815260200161373560f01b81525090611b445760405162461bcd60e51b8152600401610d1d919061369f565b5060075460405163c44b11f760e01b81526001600160a01b038581166004830152600092169063c44b11f79060240160206040518083038186803b158015611b8b57600080fd5b505afa158015611b9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc391906133e9565b9050611bd0816001612b7e565b611bda8184612b92565b6007548151604051635c69493b60e11b81526001600160a01b039092169163b8d2927691611c0d91889190600401613639565b600060405180830381600087803b158015611c2757600080fd5b505af1158015611c3b573d6000803e3d6000fd5b50505050836001600160a01b03167fab2f7f9e5ca2772fafa94f355c1842a80ae6b9e41f83083098d81f67d7a0b50884604051611c7c911515815260200190565b60405180910390a250505050565b60408051808201909152600280825261333360f01b6020830152600654611cbe926001600160a01b03909116913391611e25565b610ba381600061279d565b60408051808201909152600280825261333360f01b6020830152600654611cfd926001600160a01b03909116913391611e25565b60075460405163c44b11f760e01b81526001600160a01b038381166004830152600092169063c44b11f79060240160206040518083038186803b158015611d4357600080fd5b505afa158015611d57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7b91906133e9565b9050611d88816000612b92565b6007548151604051635c69493b60e11b81526001600160a01b039092169163b8d2927691611dbb91869190600401613639565b600060405180830381600087803b158015611dd557600080fd5b505af1158015611de9573d6000803e3d6000fd5b50506040516001600160a01b03851692507f8bbf35441ac2c607ddecadd3d8ee58636d32f217fad201fb2655581502dd84e39150600090a25050565b611e30848484612e1b565b81906118eb5760405162461bcd60e51b8152600401610d1d919061369f565b600754600090611ef0906001600160a01b031663c44b11f7611e7460208701876130eb565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b158015611eb357600080fd5b505afa158015611ec7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eeb91906133e9565b612e36565b50600654604051635c9fcd8560e11b8152620800006004820152919550600094506001600160a01b0316925063b93f9b0a915060240160206040518083038186803b158015611f3e57600080fd5b505afa158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f769190613107565b604080516080810182526007546001600160a01b03908116825283166020808301919091529293506000929091820190611fb2908801886130eb565b6001600160a01b0316815260ff851660209182015290915060009063e4ae9af760e01b908390611fe490890189613732565b611ff160408b018b613732565b611ffe60808d018d613732565b60405160240161201497969594939291906136b2565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290506001600160a01b038516634f1ef2866120676080890160608a016130eb565b836040518363ffffffff1660e01b8152600401612085929190613615565b600060405180830381600087803b15801561209f57600080fd5b505af11580156120b3573d6000803e3d6000fd5b50505050505050505050565b6007546040516335ea6a7560e01b81526001600160a01b03838116600483015260009216906335ea6a75906024016101806040518083038186803b15801561210657600080fd5b505afa15801561211a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213e9190613404565b60e08101516040516370a0823160e01b81526001600160a01b039182166004820152919250600091908416906370a082319060240160206040518083038186803b15801561218b57600080fd5b505afa15801561219f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c39190613528565b9050801580156121de575060608201516001600160801b0316155b604051806040016040528060028152602001610ccd60f21b81525090610b1a5760405162461bcd60e51b8152600401610d1d919061369f565b610b60826701000000000000001983612e82565b604080518082019091526002815261373160f01b602082015261ffff8211156122675760405162461bcd60e51b8152600401610d1d919061369f565b50815169ffff0000000000000000191660409190911b179052565b604080516080810182526007546001600160a01b0390811682528316602082015260009181016122b860e0860160c087016130eb565b6001600160a01b031681526020016122d66080860160608701613540565b60ff1690529050600061236e6122ef60208601866130eb565b63e4ae9af760e01b8461230560e0890189613732565b6123136101008b018b613732565b6123216101a08d018d613732565b60405160240161233797969594939291906136b2565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612e9a565b9050600061238260a08601608087016133cf565b806123a55750600061239a60608701604088016130eb565b6001600160a01b0316145b6123f4576123ef6123bc60608701604088016130eb565b63e4ae9af760e01b856123d36101208a018a613732565b6123e16101408c018c613732565b6123216101a08e018e613732565b6123f7565b60005b9050600061240b60a08701608088016133cf565b8061242e5750600061242360408801602089016130eb565b6001600160a01b0316145b61247d5761247861244560408801602089016130eb565b63e4ae9af760e01b8661245c6101608b018b613732565b61246a6101808d018d613732565b6123216101a08f018f613732565b612480565b60005b6007546040805160c08082019092529293506001600160a01b039091169163171b531c9181906124b69060e08c01908c016130eb565b6001600160a01b03908116825287811660208301528581166040830152861660608201526080016124ed60c08b0160a08c016130eb565b6001600160a01b0316815260200161250b60a08b0160808c016133cf565b15159052604080516001600160e01b031960e085901b16815282516001600160a01b03908116600483015260208401518116602483015291830151821660448201526060830151821660648201526080830151909116608482015260a090910151151560a482015260c401600060405180830381600087803b15801561259057600080fd5b505af11580156125a4573d6000803e3d6000fd5b5050600754600092506001600160a01b0316905063c44b11f76125cd60e08a0160c08b016130eb565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b15801561260c57600080fd5b505afa158015612620573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264491906133e9565b90506126636126596080890160608a01613540565b829060ff16612f21565b61266e816001612217565b612679816000612f74565b6007546001600160a01b031663b8d2927661269a60e08a0160c08b016130eb565b83516040516001600160e01b031960e085901b1681526126be929190600401613639565b600060405180830381600087803b1580156126d857600080fd5b505af11580156126ec573d6000803e3d6000fd5b5050506001600160a01b038516905061270b60e0890160c08a016130eb565b6001600160a01b03167fb90269893dc38c5d43e604791dc79b162b35d14ceae58e30eff64aab193eb988848661274760c08d0160a08e016130eb565b61275760a08e0160808f016133cf565b60405161278c94939291906001600160a01b039485168152928416602084015292166040820152901515606082015260800190565b60405180910390a350505050505050565b60075460405163c44b11f760e01b81526001600160a01b038481166004830152600092169063c44b11f79060240160206040518083038186803b1580156127e357600080fd5b505afa1580156127f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061281b91906133e9565b90506128278183612f74565b6007548151604051635c69493b60e11b81526001600160a01b039092169163b8d292769161285a91879190600401613639565b600060405180830381600087803b15801561287457600080fd5b505af1158015612888573d6000803e3d6000fd5b5050505081156128cb576040516001600160a01b038416907f85dc710add8a0914461a7dc5a63f6fc529a7700f8c6089a3faf5e93256ccf12a90600090a2505050565b6040516001600160a01b038416907f838ecdc4709a31a26db48b0c853212cedde3f725f07030079d793fb07196476090600090a2505050565b6000821580612911575081155b1561291e57506000610633565b81600261292d6001606461383f565b61293890606461383f565b612942919061380a565b6129529061ffff16600019613888565b61295c919061382b565b83111560405180604001604052806002815260200161068760f31b815250906129985760405162461bcd60e51b8152600401610d1d919061369f565b506129a56001606461383f565b6129b090606461383f565b61ffff1660026129c26001606461383f565b6129cd90606461383f565b6129d7919061380a565b61ffff166129e58486613869565b6129ef91906137f2565b6129f9919061382b565b9392505050565b604080518082019091526002815261363760f01b602082015261ffff821115612a3c5760405162461bcd60e51b8152600401610d1d919061369f565b50815161ffff1916179052565b60408051808201909152600281526106c760f31b602082015261ffff821115612a855760405162461bcd60e51b8152600401610d1d919061369f565b50815163ffff0000191660109190911b179052565b604080518082019091526002815261363960f01b602082015261ffff821115612ad65760405162461bcd60e51b8152600401610d1d919061369f565b50815165ffff00000000191660209190911b179052565b6000806000836001600160a01b0316604051612b1390635c60da1b60e01b815260040190565b600060405180830381855afa9150503d8060008114612b4e576040519150601f19603f3d011682016040523d82523d6000602084013e612b53565b606091505b509150915081612b6257600080fd5b80806020019051810190612b769190613107565b949350505050565b610b60826704000000000000001983612e82565b610b60826708000000000000001983612e82565b6001600080612bb783600019613888565b8310612c055760405162461bcd60e51b815260206004820152601960248201527f696e76616c696420636f6e7472616374207265766973696f6e000000000000006044820152606401610d1d565b60008411612c555760405162461bcd60e51b815260206004820152601e60248201527f696e636f727265637420696e697469616c697a6572207265766973696f6e00006044820152606401610d1d565b82841115612ca55760405162461bcd60e51b815260206004820152601e60248201527f696e636f6e73697374656e7420636f6e7472616374207265766973696f6e00006044820152606401610d1d565b612cb26001600019613888565b6000541015612d2e576000600154118015612cce575082600054105b91508180612cdb5750303b155b80612ce7575060005483115b612d295760405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610d1d565b612d9d565b612d3b6001600019613888565b600054148015612d4a5750303b155b612d8c5760405162461bcd60e51b81526020600482015260136024820152721a5b9a5d1a585b1a5e995c88189b1bd8dad959606a1b6044820152606401610d1d565b600080556001546000199350151591505b8115612df4578360015411612df45760405162461bcd60e51b815260206004820152601f60248201527f696e636f7272656374206f72646572206f6620696e697469616c697a657273006044820152606401610d1d565b6000548411612e10578115612e0857600180555b506001612e14565b5060005b9193909250565b600080612e29858585612f88565b9092161515949350505050565b6000806000806000612e70866000015161ffff81811692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b939a9299509097509550909350915050565b8015612e92575081519019179052565b508151169052565b600654604051633eba8a9760e11b81526000916001600160a01b031690637d75152e90612ecf903090879087906004016135e0565b602060405180830381600087803b158015612ee957600080fd5b505af1158015612efd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f99190613107565b604080518082019091526002815261037360f41b602082015260ff821115612f5c5760405162461bcd60e51b8152600401610d1d919061369f565b50815166ff000000000000191660309190911b179052565b610b60826702000000000000001983612e82565b60405163cc8b29c160e01b81526000906001600160a01b0385169063cc8b29c190612fb99086908690600401613639565b60206040518083038186803b158015612fd157600080fd5b505afa158015612fe5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b769190613528565b8051613014816138fc565b919050565b60008083601f84011261302a578182fd5b50813567ffffffffffffffff811115613041578182fd5b6020830191508360208260051b850101111561305c57600080fd5b9250929050565b8035801515811461301457600080fd5b600060208284031215613084578081fd5b6040516020810181811067ffffffffffffffff821117156130a7576130a76138e6565b6040529151825250919050565b80516001600160801b038116811461301457600080fd5b805164ffffffffff8116811461301457600080fd5b805161301481613911565b6000602082840312156130fc578081fd5b81356129f9816138fc565b600060208284031215613118578081fd5b81516129f9816138fc565b600080600060608486031215613137578182fd5b8335613142816138fc565b92506020840135613152816138fc565b915061316060408501613063565b90509250925092565b6000806040838503121561317b578182fd5b8235613186816138fc565b915061319460208401613063565b90509250929050565b600080604083850312156131af578182fd5b82356131ba816138fc565b946020939093013593505050565b600080600080608085870312156131dd578182fd