aave-protocol-v2/types/ATokenFactory.ts
2020-06-03 12:23:21 +02:00

845 lines
48 KiB
TypeScript

/* Generated by ts-generator ver. 0.0.8 */
/* tslint:disable */
import { Contract, ContractFactory, Signer } from "ethers";
import { Provider } from "ethers/providers";
import { UnsignedTransaction } from "ethers/utils/transaction";
import { BigNumberish } from "ethers/utils";
import { TransactionOverrides } from ".";
import { AToken } from "./AToken";
export class ATokenFactory extends ContractFactory {
constructor(signer?: Signer) {
super(_abi, _bytecode, signer);
}
deploy(
_addressesProvider: string,
_underlyingAsset: string,
_underlyingAssetDecimals: BigNumberish,
_name: string,
_symbol: string,
overrides?: TransactionOverrides
): Promise<AToken> {
return super.deploy(
_addressesProvider,
_underlyingAsset,
_underlyingAssetDecimals,
_name,
_symbol,
overrides
) as Promise<AToken>;
}
getDeployTransaction(
_addressesProvider: string,
_underlyingAsset: string,
_underlyingAssetDecimals: BigNumberish,
_name: string,
_symbol: string,
overrides?: TransactionOverrides
): UnsignedTransaction {
return super.getDeployTransaction(
_addressesProvider,
_underlyingAsset,
_underlyingAssetDecimals,
_name,
_symbol,
overrides
);
}
attach(address: string): AToken {
return super.attach(address) as AToken;
}
connect(signer: Signer): ATokenFactory {
return super.connect(signer) as ATokenFactory;
}
static connect(address: string, signerOrProvider: Signer | Provider): AToken {
return new Contract(address, _abi, signerOrProvider) as AToken;
}
}
const _abi = [
{
inputs: [
{
internalType: "contract LendingPoolAddressesProvider",
name: "_addressesProvider",
type: "address"
},
{
internalType: "address",
name: "_underlyingAsset",
type: "address"
},
{
internalType: "uint8",
name: "_underlyingAssetDecimals",
type: "uint8"
},
{
internalType: "string",
name: "_name",
type: "string"
},
{
internalType: "string",
name: "_symbol",
type: "string"
}
],
stateMutability: "nonpayable",
type: "constructor"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "owner",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "spender",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "value",
type: "uint256"
}
],
name: "Approval",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_from",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_to",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_value",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_toBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromIndex",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_toIndex",
type: "uint256"
}
],
name: "BalanceTransfer",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_from",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_value",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromIndex",
type: "uint256"
}
],
name: "BurnOnLiquidation",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_from",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_to",
type: "address"
}
],
name: "InterestRedirectionAllowanceChanged",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_from",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "_to",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_redirectedBalance",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromIndex",
type: "uint256"
}
],
name: "InterestStreamRedirected",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_from",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_value",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromIndex",
type: "uint256"
}
],
name: "MintOnDeposit",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_from",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_value",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_fromIndex",
type: "uint256"
}
],
name: "Redeem",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "_targetAddress",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "_targetBalanceIncrease",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_targetIndex",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_redirectedBalanceAdded",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "_redirectedBalanceRemoved",
type: "uint256"
}
],
name: "RedirectedBalanceUpdated",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "from",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "to",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "value",
type: "uint256"
}
],
name: "Transfer",
type: "event"
},
{
inputs: [],
name: "UINT_MAX_VALUE",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_to",
type: "address"
}
],
name: "allowInterestRedirectionTo",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "owner",
type: "address"
},
{
internalType: "address",
name: "spender",
type: "address"
}
],
name: "allowance",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "spender",
type: "address"
},
{
internalType: "uint256",
name: "amount",
type: "uint256"
}
],
name: "approve",
outputs: [
{
internalType: "bool",
name: "",
type: "bool"
}
],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "balanceOf",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_account",
type: "address"
},
{
internalType: "uint256",
name: "_value",
type: "uint256"
}
],
name: "burnOnLiquidation",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [],
name: "decimals",
outputs: [
{
internalType: "uint8",
name: "",
type: "uint8"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "spender",
type: "address"
},
{
internalType: "uint256",
name: "subtractedValue",
type: "uint256"
}
],
name: "decreaseAllowance",
outputs: [
{
internalType: "bool",
name: "",
type: "bool"
}
],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "getInterestRedirectionAddress",
outputs: [
{
internalType: "address",
name: "",
type: "address"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "getRedirectedBalance",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "getUserIndex",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "spender",
type: "address"
},
{
internalType: "uint256",
name: "addedValue",
type: "uint256"
}
],
name: "increaseAllowance",
outputs: [
{
internalType: "bool",
name: "",
type: "bool"
}
],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_user",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
}
],
name: "isTransferAllowed",
outputs: [
{
internalType: "bool",
name: "",
type: "bool"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_account",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
}
],
name: "mintOnDeposit",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [],
name: "name",
outputs: [
{
internalType: "string",
name: "",
type: "string"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_user",
type: "address"
}
],
name: "principalBalanceOf",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "uint256",
name: "_amount",
type: "uint256"
}
],
name: "redeem",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_to",
type: "address"
}
],
name: "redirectInterestStream",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_from",
type: "address"
},
{
internalType: "address",
name: "_to",
type: "address"
}
],
name: "redirectInterestStreamOf",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [],
name: "symbol",
outputs: [
{
internalType: "string",
name: "",
type: "string"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [],
name: "totalSupply",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "recipient",
type: "address"
},
{
internalType: "uint256",
name: "amount",
type: "uint256"
}
],
name: "transfer",
outputs: [
{
internalType: "bool",
name: "",
type: "bool"
}
],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "sender",
type: "address"
},
{
internalType: "address",
name: "recipient",
type: "address"
},
{
internalType: "uint256",
name: "amount",
type: "uint256"
}
],
name: "transferFrom",
outputs: [
{
internalType: "bool",
name: "",
type: "bool"
}
],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_from",
type: "address"
},
{
internalType: "address",
name: "_to",
type: "address"
},
{
internalType: "uint256",
name: "_value",
type: "uint256"
}
],
name: "transferOnLiquidation",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [],
name: "underlyingAssetAddress",
outputs: [
{
internalType: "address",
name: "",
type: "address"
}
],
stateMutability: "view",
type: "function"
}
];
const _bytecode =
"0x60806040523480156200001157600080fd5b50604051620040fd380380620040fd833981810160405260a08110156200003757600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805160405193929190846401000000008211156200007657600080fd5b838201915060208201858111156200008d57600080fd5b8251866001820283011164010000000082111715620000ab57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000e1578082015181840152602081019050620000c4565b50505050905090810190601f1680156200010f5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200013357600080fd5b838201915060208201858111156200014a57600080fd5b82518660018202830111640100000000821117156200016857600080fd5b8083526020830192505050908051906020019080838360005b838110156200019e57808201518184015260208101905062000181565b50505050905090810190601f168015620001cc5780820380516001836020036101000a031916815260200191505b5060405250505081818160039080519060200190620001ed92919062000593565b5080600490805190602001906200020692919062000593565b506012600560006101000a81548160ff021916908360ff160217905550505062000236836200057560201b60201c565b84600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b158015620002e057600080fd5b505afa158015620002f5573d6000803e3d6000fd5b505050506040513d60208110156200030c57600080fd5b8101908080519060200190929190505050600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c657600080fd5b505afa158015620003db573d6000803e3d6000fd5b505050506040513d6020811015620003f257600080fd5b8101908080519060200190929190505050600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f58b80d6040518163ffffffff1660e01b815260040160206040518083038186803b158015620004ac57600080fd5b505afa158015620004c1573d6000803e3d6000fd5b505050506040513d6020811015620004d857600080fd5b8101908080519060200190929190505050600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505062000642565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620005d657805160ff191683800117855562000607565b8280016001018555821562000607579182015b8281111562000606578251825591602001919060010190620005e9565b5b5090506200061691906200061a565b5090565b6200063f91905b808211156200063b57600081600090555060010162000621565b5090565b90565b613aab80620006526000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80635eae177c116100de578063a9059cbb11610097578063db006a7511610071578063db006a75146108c0578063dd62ed3e146108ee578063ee9907a414610966578063f866c319146109be57610173565b8063a9059cbb146107e4578063c634dfaa1461084a578063d0fc81d2146108a257610173565b80635eae177c146105a557806370a082311461060b57806389d1a0fc1461066357806394362e8b146106ad57806395d89b41146106fb578063a457c2d71461077e57610173565b806323b872dd1161013057806323b872dd1461035f578063313ce567146103e5578063325a9b1314610409578063395093511461046d5780633edb7cb8146104d3578063445e80101461052157610173565b806306fdde0314610178578063095ea7b3146101fb5780630e49072d1461026157806312c87c2d146102a557806318160ddd146102e95780631d51e7cf14610307575b600080fd5b610180610a2c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101c05780820151818401526020810190506101a5565b50505050905090810190601f1680156101ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102476004803603604081101561021157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ace565b604051808215151515815260200191505060405180910390f35b6102a36004803603602081101561027757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aec565b005b6102e7600480360360208110156102bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610af9565b005b6102f1610c59565b6040518082815260200191505060405180910390f35b6103496004803603602081101561031d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d9e565b6040518082815260200191505060405180910390f35b6103cb6004803603606081101561037557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610de7565b604051808215151515815260200191505060405180910390f35b6103ed610ec0565b604051808260ff1660ff16815260200191505060405180910390f35b61046b6004803603604081101561041f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ed7565b005b6104b96004803603604081101561048357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fc8565b604051808215151515815260200191505060405180910390f35b61051f600480360360408110156104e957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061107b565b005b6105636004803603602081101561053757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105f1600480360360408110156105bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611253565b604051808215151515815260200191505060405180910390f35b61064d6004803603602081101561062157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611395565b6040518082815260200191505060405180910390f35b61066b61150a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106f9600480360360408110156106c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611530565b005b610703611674565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610743578082015181840152602081019050610728565b50505050905090810190601f1680156107705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107ca6004803603604081101561079457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611716565b604051808215151515815260200191505060405180910390f35b610830600480360360408110156107fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117e3565b604051808215151515815260200191505060405180910390f35b61088c6004803603602081101561086057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611801565b6040518082815260200191505060405180910390f35b6108aa611813565b6040518082815260200191505060405180910390f35b6108ec600480360360208110156108d657600080fd5b8101908080359060200190929190505050611837565b005b6109506004803603604081101561090457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bad565b6040518082815260200191505060405180910390f35b6109a86004803603602081101561097c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c34565b6040518082815260200191505060405180910390f35b610a2a600480360360608110156109d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c7d565b005b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ac45780601f10610a9957610100808354040283529160200191610ac4565b820191906000526020600020905b815481529060010190602001808311610aa757829003601f168201915b5050505050905090565b6000610ae2610adb611d33565b8484611d3b565b6001905092915050565b610af63382611f32565b50565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806138716025913960400191505060405180910390fd5b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc2d6a42a9d5273283f73009a07aacfb043f2f91173a8d9d33b504afe898db08b60405160405180910390a350565b600080610c64612308565b90506000811415610c79576000915050610d9b565b610d97610d92600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d15e0053600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610d4057600080fd5b505afa158015610d54573d6000803e3d6000fd5b505050506040513d6020811015610d6a57600080fd5b8101908080519060200190929190505050610d8484612312565b61233290919063ffffffff16565b612395565b9150505b90565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610df48484846123da565b610eb584610e00611d33565b610eb0856040518060600160405280602881526020016138b760289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e66611d33565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246a9092919063ffffffff16565b611d3b565b600190509392505050565b6000600560009054906101000a900460ff16905090565b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180613a3c603a913960400191505060405180910390fd5b610fc48282611f32565b5050565b6000611071610fd5611d33565b8461106c8560016000610fe6611d33565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252a90919063ffffffff16565b611d3b565b6001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611121576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806139e56032913960400191505060405180910390fd5b600080600061112f856125b2565b93509350935050611141858386612758565b61114b8585612a4e565b600080905060006111658686612c1290919063ffffffff16565b14156111775761117486612c5c565b90505b8573ffffffffffffffffffffffffffffffffffffffff167f90e5d3d68ec162d9c7de393037a3ede04dd44f68e051bf2ace4a73c299dbc4db8685846111bc57856111bf565b60005b60405180848152602001838152602001828152602001935050505060405180910390a2505050505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166376e9d615600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060206040518083038186803b15801561135257600080fd5b505afa158015611366573d6000803e3d6000fd5b505050506040513d602081101561137c57600080fd5b8101908080519060200190929190505050905092915050565b6000806113a183612df4565b90506000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000821480156113f75750600081145b1561140757600092505050611505565b600073ffffffffffffffffffffffffffffffffffffffff16600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156114d2576114c9816114bb866114b6858761252a90919063ffffffff16565b612e3c565b612c1290919063ffffffff16565b92505050611505565b6115006114f1826114e38785612e3c565b612c1290919063ffffffff16565b8361252a90919063ffffffff16565b925050505b919050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806139e56032913960400191505060405180910390fd5b6000806115e2846125b2565b935093505050611606846115ff858561252a90919063ffffffff16565b6000612758565b6116108484612fb5565b8373ffffffffffffffffffffffffffffffffffffffff167fbe7799898ca2d813ff902b487c1b434ab45b47edd8f38b77ad5e99aae8341b7a84848460405180848152602001838152602001828152602001935050505060405180910390a250505050565b606060048054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561170c5780601f106116e15761010080835404028352916020019161170c565b820191906000526020600020905b8154815290600101906020018083116116ef57829003601f168201915b5050505050905090565b60006117d9611723611d33565b846117d485604051806060016040528060258152602001613a17602591396001600061174d611d33565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246a9092919063ffffffff16565b611d3b565b6001905092915050565b60006117f76117f0611d33565b84846123da565b6001905092915050565b600061180c82612df4565b9050919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81565b600081116118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f416d6f756e7420746f2072656465656d206e6565647320746f206265203e203081525060200191505060405180910390fd5b60008060006118bb336125b2565b9350935093505060008490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8514156118f3578390505b8381111561194c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806137f76032913960400191505060405180910390fd5b6119563382611253565b6119c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5472616e736665722063616e6e6f7420626520616c6c6f7765642e000000000081525060200191505060405180910390fd5b6119d3338483612758565b6119dd3382612a4e565b600080905060006119f78387612c1290919063ffffffff16565b1415611a0957611a0633612c5c565b90505b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639895e3d8600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff163385611a7f878b612c1290919063ffffffff16565b6040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001945050505050600060405180830381600087803b158015611b2257600080fd5b505af1158015611b36573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a7646838684611b7f5786611b82565b60005b60405180848152602001838152602001828152602001935050505060405180910390a2505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d23576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806139e56032913960400191505060405180910390fd5b611d2e83838361317c565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611dc1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806139c16024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806138296022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561201b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806138df602a913960400191505060405180910390fd5b60008060008061202a876125b2565b93509350935093506000831161208b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260428152602001806139096042913960600191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146120cc576120cb87600086612758565b5b8673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156121ff576000600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a734873559485858560405180848152602001838152602001828152602001935050505060405180910390a35050505050612304565b85600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061228987846000612758565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a734873559485858560405180848152602001838152602001828152602001935050505060405180910390a350505050505b5050565b6000600254905090565b600061232b633b9aca00836132f990919063ffffffff16565b9050919050565b600061238d6b033b2e3c9fd0803ce800000061237f61235a85876132f990919063ffffffff16565b60026b033b2e3c9fd0803ce80000008161237057fe5b0461252a90919063ffffffff16565b61337f90919063ffffffff16565b905092915050565b6000806002633b9aca00816123a657fe5b0490506123d2633b9aca006123c4858461252a90919063ffffffff16565b61337f90919063ffffffff16565b915050919050565b82816123e68282611253565b612458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5472616e736665722063616e6e6f7420626520616c6c6f7765642e000000000081525060200191505060405180910390fd5b61246385858561317c565b5050505050565b6000838311158290612517576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156124dc5780820151818401526020810190506124c1565b50505050905090810190601f1680156125095780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156125a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060008060006125c386612df4565b905060006125e2826125d489611395565b612c1290919063ffffffff16565b90506125ee8782612fb5565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d15e0053600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156126b157600080fd5b505afa1580156126c5573d6000803e3d6000fd5b505050506040513d60208110156126db57600080fd5b8101908080519060200190929190505050600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055905082612744838561252a90919063ffffffff16565b838396509650965096505050509193509193565b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156127f75750612a49565b600080612803836125b2565b93509350505061286d8461285f87600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252a90919063ffffffff16565b612c1290919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146129de5761299a83600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252a90919063ffffffff16565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff167f70ff8cf632603e2bfd1afb7e4061acce53d95356b1be9726b99fa22ba733b01f848489896040518085815260200184815260200183815260200182815260200194505050505060405180910390a2505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ad4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061397b6021913960400191505060405180910390fd5b612ae0826000836133c9565b612b4b816040518060600160405280602281526020016137d5602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246a9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ba281600254612c1290919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000612c5483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061246a565b905092915050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a7348735594600080600060405180848152602001838152602001828152602001935050505060405180910390a36000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612dea576000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019050612def565b600090505b919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000612fad612fa8600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f9a600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d15e0053600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612f4857600080fd5b505afa158015612f5c573d6000803e3d6000fd5b505050506040513d6020811015612f7257600080fd5b8101908080519060200190929190505050612f8c87612312565b61233290919063ffffffff16565b6133ce90919063ffffffff16565b612395565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b613064600083836133c9565b6130798160025461252a90919063ffffffff16565b6002819055506130d0816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600081116131d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061394b6030913960400191505060405180910390fd5b60008060006131e3866125b2565b935093509350506000806131f6876125b2565b935093505050613207888588612758565b6132258761321e888561252a90919063ffffffff16565b6000612758565b61323088888861342a565b6000809050600061324a8888612c1290919063ffffffff16565b141561325c5761325989612c5c565b90505b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f89a178eaa27e0cd201bd795ca8ff716ac0df9618494510ca79771cfc66ffcde8898887866132b957896132bc565b60005b88604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a3505050505050505050565b60008083141561330c5760009050613379565b600082840290508284828161331d57fe5b0414613374576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806138966021913960400191505060405180910390fd5b809150505b92915050565b60006133c183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506136eb565b905092915050565b505050565b600080600283816133db57fe5b049050613421836134136134046b033b2e3c9fd0803ce8000000886132f990919063ffffffff16565b8461252a90919063ffffffff16565b61337f90919063ffffffff16565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061399c6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613536576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806137b26023913960400191505060405180910390fd5b6135418383836133c9565b6135ac8160405180606001604052806026815260200161384b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061363f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008083118290613797576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561375c578082015181840152602081019050613741565b50505050905090810190601f1680156137895780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816137a357fe5b04905080915050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f742072656465656d206d6f7265207468616e2074686520617661696c61626c652062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f74206769766520616c6c6f77616e636520746f2068696d73656c66536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365496e74657265737420697320616c7265616479207265646972656374656420746f207468652075736572496e7465726573742073747265616d2063616e206f6e6c79206265207265646972656374656420696620746865726520697320612076616c69642062616c616e63655472616e7366657272656420616d6f756e74206e6565647320746f2062652067726561746572207468616e207a65726f45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f43616c6c6572206973206e6f7420616c6c6f77656420746f2072656469726563742074686520696e746572657374206f66207468652075736572a264697066735822122088d750a4e3b3943503e728f5a5fb21f6a77c593a73246a90c2869cdebaae015964736f6c63430006080033";