mirror of
https://github.com/Instadapp/aave-protocol-v2.git
synced 2024-07-29 21:47:30 +00:00
883 lines
39 KiB
TypeScript
883 lines
39 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 { TransactionOverrides } from ".";
|
|
import { AToken } from "./AToken";
|
|
|
|
export class ATokenFactory extends ContractFactory {
|
|
constructor(signer?: Signer) {
|
|
super(_abi, _bytecode, signer);
|
|
}
|
|
|
|
deploy(
|
|
_tokenName: string,
|
|
_tokenSymbol: string,
|
|
overrides?: TransactionOverrides
|
|
): Promise<AToken> {
|
|
return super.deploy(_tokenName, _tokenSymbol, overrides) as Promise<AToken>;
|
|
}
|
|
getDeployTransaction(
|
|
_tokenName: string,
|
|
_tokenSymbol: string,
|
|
overrides?: TransactionOverrides
|
|
): UnsignedTransaction {
|
|
return super.getDeployTransaction(_tokenName, _tokenSymbol, 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: "string",
|
|
name: "_tokenName",
|
|
type: "string"
|
|
},
|
|
{
|
|
internalType: "string",
|
|
name: "_tokenSymbol",
|
|
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: "ATOKEN_REVISION",
|
|
outputs: [
|
|
{
|
|
internalType: "uint256",
|
|
name: "",
|
|
type: "uint256"
|
|
}
|
|
],
|
|
stateMutability: "view",
|
|
type: "function"
|
|
},
|
|
{
|
|
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: "contract LendingPoolAddressesProvider",
|
|
name: "_addressesProvider",
|
|
type: "address"
|
|
},
|
|
{
|
|
internalType: "address",
|
|
name: "_underlyingAsset",
|
|
type: "address"
|
|
},
|
|
{
|
|
internalType: "uint8",
|
|
name: "_underlyingAssetDecimals",
|
|
type: "uint8"
|
|
},
|
|
{
|
|
internalType: "string",
|
|
name: "_tokenName",
|
|
type: "string"
|
|
},
|
|
{
|
|
internalType: "string",
|
|
name: "_tokenSymbol",
|
|
type: "string"
|
|
}
|
|
],
|
|
name: "initialize",
|
|
outputs: [],
|
|
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: [
|
|
{
|
|
internalType: "address",
|
|
name: "_target",
|
|
type: "address"
|
|
},
|
|
{
|
|
internalType: "uint256",
|
|
name: "_amount",
|
|
type: "uint256"
|
|
}
|
|
],
|
|
name: "transferUnderlyingTo",
|
|
outputs: [
|
|
{
|
|
internalType: "uint256",
|
|
name: "",
|
|
type: "uint256"
|
|
}
|
|
],
|
|
stateMutability: "nonpayable",
|
|
type: "function"
|
|
},
|
|
{
|
|
inputs: [],
|
|
name: "underlyingAssetAddress",
|
|
outputs: [
|
|
{
|
|
internalType: "address",
|
|
name: "",
|
|
type: "address"
|
|
}
|
|
],
|
|
stateMutability: "view",
|
|
type: "function"
|
|
},
|
|
{
|
|
stateMutability: "payable",
|
|
type: "receive"
|
|
}
|
|
];
|
|
|
|
const _bytecode =
|
|
"0x6080604052600080553480156200001557600080fd5b5060405162002e6238038062002e62833981810160405260408110156200003b57600080fd5b81019080805160405193929190846401000000008211156200005c57600080fd5b9083019060208201858111156200007257600080fd5b82516401000000008111828201881017156200008d57600080fd5b82525081516020918201929091019080838360005b83811015620000bc578181015183820152602001620000a2565b50505050905090810190601f168015620000ea5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010e57600080fd5b9083019060208201858111156200012457600080fd5b82516401000000008111828201881017156200013f57600080fd5b82525081516020918201929091019080838360005b838110156200016e57818101518382015260200162000154565b50505050905090810190601f1680156200019c5780820380516001836020036101000a031916815260200191505b50604052505082518391508290620001bc906037906020850190620001eb565b508051620001d2906038906020840190620001eb565b50506039805460ff191660121790555062000290915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200022e57805160ff19168380011785556200025e565b828001600101855582156200025e579182015b828111156200025e57825182559160200191906001019062000241565b506200026c92915062000270565b5090565b6200028d91905b808211156200026c576000815560010162000277565b90565b612bc280620002a06000396000f3fe6080604052600436106101bb5760003560e01c80635eae177c116100ec578063c634dfaa1161008a578063dd62ed3e11610064578063dd62ed3e1461071e578063ee9907a414610759578063f85f6f741461078c578063f866c3191461087e57610217565b8063c634dfaa146106ac578063d0fc81d2146106df578063db006a75146106f457610217565b806394362e8b116100c657806394362e8b146105ec57806395d89b4114610625578063a457c2d71461063a578063a9059cbb1461067357610217565b80635eae177c1461056b57806370a08231146105a457806389d1a0fc146105d757610217565b806323b872dd11610159578063395093511161013357806339509351146104715780633edb7cb8146104aa578063445e8010146104e35780634efecaa51461053257610217565b806323b872dd146103c8578063313ce5671461040b578063325a9b131461043657610217565b80630e49072d116101955780630e49072d1461031a57806312c87c2d1461034d57806318160ddd146103805780631d51e7cf1461039557610217565b806306fdde031461021c578063095ea7b3146102a65780630bd7ad3b146102f357610217565b36610217576039546101da9061010090046001600160a01b03166108c1565b6102155760405162461bcd60e51b81526004018080602001828103825260398152602001806128f76039913960400191505060405180910390fd5b005b600080fd5b34801561022857600080fd5b506102316108e7565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026b578181015183820152602001610253565b50505050905090810190601f1680156102985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102b257600080fd5b506102df600480360360408110156102c957600080fd5b506001600160a01b03813516906020013561097e565b604080519115158252519081900360200190f35b3480156102ff57600080fd5b5061030861099c565b60408051918252519081900360200190f35b34801561032657600080fd5b506102156004803603602081101561033d57600080fd5b50356001600160a01b03166109a1565b34801561035957600080fd5b506102156004803603602081101561037057600080fd5b50356001600160a01b03166109ae565b34801561038c57600080fd5b50610308610a4d565b3480156103a157600080fd5b50610308600480360360208110156103b857600080fd5b50356001600160a01b0316610b0f565b3480156103d457600080fd5b506102df600480360360608110156103eb57600080fd5b506001600160a01b03813581169160208101359091169060400135610b2a565b34801561041757600080fd5b50610420610bb7565b6040805160ff9092168252519081900360200190f35b34801561044257600080fd5b506102156004803603604081101561045957600080fd5b506001600160a01b0381358116916020013516610bc0565b34801561047d57600080fd5b506102df6004803603604081101561049457600080fd5b506001600160a01b038135169060200135610c26565b3480156104b657600080fd5b50610215600480360360408110156104cd57600080fd5b506001600160a01b038135169060200135610c7a565b3480156104ef57600080fd5b506105166004803603602081101561050657600080fd5b50356001600160a01b0316610d6f565b604080516001600160a01b039092168252519081900360200190f35b34801561053e57600080fd5b506103086004803603604081101561055557600080fd5b506001600160a01b038135169060200135610d8d565b34801561057757600080fd5b506102df6004803603604081101561058e57600080fd5b506001600160a01b038135169060200135610dfb565b3480156105b057600080fd5b50610308600480360360208110156105c757600080fd5b50356001600160a01b0316610e96565b3480156105e357600080fd5b50610516610f49565b3480156105f857600080fd5b506102156004803603604081101561060f57600080fd5b506001600160a01b038135169060200135610f5d565b34801561063157600080fd5b50610231611032565b34801561064657600080fd5b506102df6004803603604081101561065d57600080fd5b506001600160a01b038135169060200135611093565b34801561067f57600080fd5b506102df6004803603604081101561069657600080fd5b506001600160a01b038135169060200135611101565b3480156106b857600080fd5b50610308600480360360208110156106cf57600080fd5b50356001600160a01b0316611115565b3480156106eb57600080fd5b50610308611120565b34801561070057600080fd5b506102156004803603602081101561071757600080fd5b5035611126565b34801561072a57600080fd5b506103086004803603604081101561074157600080fd5b506001600160a01b0381358116916020013516611360565b34801561076557600080fd5b506103086004803603602081101561077c57600080fd5b50356001600160a01b031661138b565b34801561079857600080fd5b50610215600480360360a08110156107af57600080fd5b6001600160a01b03823581169260208101359091169160ff60408301351691908101906080810160608201356401000000008111156107ed57600080fd5b8201836020820111156107ff57600080fd5b8035906020019184600183028401116401000000008311171561082157600080fd5b91939092909160208101903564010000000081111561083f57600080fd5b82018360208201111561085157600080fd5b8035906020019184600183028401116401000000008311171561087357600080fd5b5090925090506113a6565b34801561088a57600080fd5b50610215600480360360608110156108a157600080fd5b506001600160a01b0381358116916020810135909116906040013561152f565b6001600160a01b03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee145b919050565b60378054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109735780601f1061094857610100808354040283529160200191610973565b820191906000526020600020905b81548152906001019060200180831161095657829003601f168201915b505050505090505b90565b600061099261098b611588565b848461158c565b5060015b92915050565b600181565b6109ab3382611678565b50565b6001600160a01b0381163314156109f65760405162461bcd60e51b81526004018080602001828103825260258152602001806129306025913960400191505060405180910390fd5b336000818152603d602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519092917fc2d6a42a9d5273283f73009a07aacfb043f2f91173a8d9d33b504afe898db08b91a350565b600080610a58611867565b905080610a6957600091505061097b565b603f546039546040805163d15e005360e01b81526001600160a01b03610100909304831660048201529051610b0993610b0493169163d15e0053916024808301926020929190829003018186803b158015610ac357600080fd5b505afa158015610ad7573d6000803e3d6000fd5b505050506040513d6020811015610aed57600080fd5b5051610af88461186d565b9063ffffffff61188316565b6118ce565b91505090565b6001600160a01b03166000908152603c602052604090205490565b6000610b378484846118e7565b610bad84610b43611588565b610ba885604051806060016040528060288152602001612976602891396001600160a01b038a16600090815260356020526040812090610b81611588565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61195616565b61158c565b5060019392505050565b60395460ff1690565b6001600160a01b038281166000908152603d6020526040902054163314610c185760405162461bcd60e51b815260040180806020018281038252603a815260200180612b53603a913960400191505060405180910390fd5b610c228282611678565b5050565b6000610992610c33611588565b84610ba88560356000610c44611588565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6119ed16565b603f546001600160a01b03163314610cc35760405162461bcd60e51b8152600401808060200182810382526032815260200180612afc6032913960400191505060405180910390fd5b6000806000610cd185611a47565b93509350935050610ce3858386611b38565b610ced8585611c38565b6000610cff848663ffffffff611d4016565b610d0f57610d0c86611d82565b90505b856001600160a01b03167f90e5d3d68ec162d9c7de393037a3ede04dd44f68e051bf2ace4a73c299dbc4db868584610d475785610d4a565b60005b60408051938452602084019290925282820152519081900360600190a2505050505050565b6001600160a01b039081166000908152603b60205260409020541690565b603f546000906001600160a01b03163314610dd95760405162461bcd60e51b8152600401808060200182810382526032815260200180612afc6032913960400191505060405180910390fd5b603954610df59061010090046001600160a01b03168484611e34565b50919050565b603f54603954604080516376e9d61560e01b81526101009092046001600160a01b039081166004840152858116602484015260448301859052905160009391909116916376e9d615916064808301926020929190829003018186803b158015610e6357600080fd5b505afa158015610e77573d6000803e3d6000fd5b505050506040513d6020811015610e8d57600080fd5b50519392505050565b600080610ea283611f0d565b6001600160a01b0384166000908152603c602052604090205490915081158015610eca575080155b15610eda576000925050506108e2565b6001600160a01b038481166000908152603b602052604090205416610f2b57610f2281610f1686610f11868463ffffffff6119ed16565b611f28565b9063ffffffff611d4016565b925050506108e2565b610f22610f3c82610f168785611f28565b839063ffffffff6119ed16565b60395461010090046001600160a01b031681565b603f546001600160a01b03163314610fa65760405162461bcd60e51b8152600401808060200182810382526032815260200180612afc6032913960400191505060405180910390fd5b600080610fb284611a47565b935093505050610fd684610fcf85856119ed90919063ffffffff16565b6000611b38565b610fe08484611fdd565b604080518481526020810184905280820183905290516001600160a01b038616917fbe7799898ca2d813ff902b487c1b434ab45b47edd8f38b77ad5e99aae8341b7a919081900360600190a250505050565b60388054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109735780601f1061094857610100808354040283529160200191610973565b60006109926110a0611588565b84610ba885604051806060016040528060258152602001612b2e60259139603560006110ca611588565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61195616565b600061099261110e611588565b84846118e7565b600061099682611f0d565b60001981565b6000811161117b576040805162461bcd60e51b815260206004820181905260248201527f416d6f756e7420746f2072656465656d206e6565647320746f206265203e2030604482015290519081900360640190fd5b600080600061118933611a47565b919550935091508490506000198114156111a05750825b838111156111df5760405162461bcd60e51b815260040180806020018281038252603281526020018061287d6032913960400191505060405180910390fd5b6111e93382610dfb565b61123a576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b611245338483611b38565b61124f3382611c38565b6000611261858363ffffffff611d4016565b6112715761126e33611d82565b90505b603f546039546001600160a01b0391821691639895e3d89161010090041633856112a18a8263ffffffff611d4016565b6040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001838152602001828152602001945050505050600060405180830381600087803b15801561131057600080fd5b505af1158015611324573d6000803e3d6000fd5b50505050336001600160a01b03167fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a7646838684610d475786610d4a565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b6001600160a01b03166000908152603a602052604090205490565b60006113b06120db565b60015490915060ff16806113c757506113c76120e0565b806113d3575060005481115b61140e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806129c8602e913960400191505060405180910390fd5b60015460ff1615801561142d576001805460ff19168117905560008290555b6114396037878761279f565b506114466038858561279f565b50611450876120e6565b603e80546001600160a01b0319166001600160a01b038b8116919091179182905560408051630261bf8b60e01b815290519290911691630261bf8b91600480820192602092909190829003018186803b1580156114ac57600080fd5b505afa1580156114c0573d6000803e3d6000fd5b505050506040513d60208110156114d657600080fd5b5051603f80546001600160a01b0319166001600160a01b0392831617905560398054610100600160a81b031916610100928b16929092029190911790558015611524576001805460ff191690555b505050505050505050565b603f546001600160a01b031633146115785760405162461bcd60e51b8152600401808060200182810382526032815260200180612afc6032913960400191505060405180910390fd5b6115838383836120fc565b505050565b3390565b6001600160a01b0383166115d15760405162461bcd60e51b8152600401808060200182810382526024815260200180612aae6024913960400191505060405180910390fd5b6001600160a01b0382166116165760405162461bcd60e51b81526004018080602001828103825260228152602001806128af6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260356020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038083166000908152603b602052604090205481169082168114156116d55760405162461bcd60e51b815260040180806020018281038252602a81526020018061299e602a913960400191505060405180910390fd5b6000806000806116e487611a47565b93509350935093506000831161172b5760405162461bcd60e51b81526004018080602001828103825260428152602001806129f66042913960600191505060405180910390fd5b6001600160a01b038516156117465761174687600086611b38565b866001600160a01b0316866001600160a01b031614156117d2576001600160a01b0387166000818152603b6020908152604080832080546001600160a01b03191690558051878152918201869052818101859052519192917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a35050505050610c22565b6001600160a01b038781166000908152603b6020526040812080546001600160a01b0319169289169290921790915561180e9088908590611b38565b604080518481526020810184905280820183905290516001600160a01b0380891692908a16917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050505050565b60365490565b600061099682633b9aca0063ffffffff61224b16565b60006118c76b033b2e3c9fd0803ce80000006118bb6118a8868663ffffffff61224b16565b6b019d971e4fe8401e74000000906119ed565b9063ffffffff6122a416565b9392505050565b6000631dcd65006118c7633b9aca006118bb83866119ed565b82816118f38282610dfb565b611944576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b61194f8585856120fc565b5050505050565b600081848411156119e55760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156119aa578181015183820152602001611992565b50505050905090810190601f1680156119d75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156118c7576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000806000806000611a5886611f0d565b90506000611a6982610f1689610e96565b9050611a758782611fdd565b603f546039546040805163d15e005360e01b81526101009092046001600160a01b0390811660048401529051600093919091169163d15e0053916024808301926020929190829003018186803b158015611ace57600080fd5b505afa158015611ae2573d6000803e3d6000fd5b505050506040513d6020811015611af857600080fd5b50516001600160a01b0389166000908152603a60205260409020819055905082611b28818463ffffffff6119ed16565b9099909850919650945092505050565b6001600160a01b038084166000908152603b60205260409020541680611b5e5750611583565b600080611b6a83611a47565b6001600160a01b0387166000908152603c60205260409020549195509350611ba09250869150610f16908863ffffffff6119ed16565b6001600160a01b038085166000908152603c6020908152604080832094909455603b90529190912054168015611bdc57611bdc84846000611b38565b60408051848152602081018490528082018890526060810187905290516001600160a01b038616917f70ff8cf632603e2bfd1afb7e4061acce53d95356b1be9726b99fa22ba733b01f919081900360800190a250505050505050565b6001600160a01b038216611c7d5760405162461bcd60e51b8152600401808060200182810382526021815260200180612a686021913960400191505060405180910390fd5b611c8982600083611583565b611ccc8160405180606001604052806022815260200161285b602291396001600160a01b038516600090815260346020526040902054919063ffffffff61195616565b6001600160a01b038316600090815260346020526040902055603654611cf8908263ffffffff611d4016565b6036556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60006118c783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611956565b6001600160a01b0381166000818152603b6020908152604080832080546001600160a01b03191690558051838152918201839052818101839052519192839290917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a7348735594919081900360600190a36001600160a01b0382166000908152603c6020526040902054611e2c57506001600160a01b0381166000908152603a602052604081205560016108e2565b5060006108e2565b80611e3e57611583565b611e47836108c1565b15611ef3576040516000906001600160a01b0384169061c35090849084818181858888f193505050503d8060008114611e9c576040519150601f19603f3d011682016040523d82523d6000602084013e611ea1565b606091505b5050905080611eed576040805162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b50611583565b6115836001600160a01b038416838363ffffffff6122e616565b6001600160a01b031660009081526034602052604090205490565b6001600160a01b038083166000908152603a6020908152604080832054603f54603954835163d15e005360e01b815261010090910487166004820152925194956118c795610b04959394611fd194939092169263d15e00539260248082019391829003018186803b158015611f9c57600080fd5b505afa158015611fb0573d6000803e3d6000fd5b505050506040513d6020811015611fc657600080fd5b5051610af88761186d565b9063ffffffff61233816565b6001600160a01b038216612038576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61204460008383611583565b603654612057908263ffffffff6119ed16565b6036556001600160a01b038216600090815260346020526040902054612083908263ffffffff6119ed16565b6001600160a01b03831660008181526034602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600190565b303b1590565b6039805460ff191660ff92909216919091179055565b6000811161213b5760405162461bcd60e51b8152600401808060200182810382526030815260200180612a386030913960400191505060405180910390fd5b600080600061214986611a47565b9350935093505060008061215c87611a47565b93509350505061216d888588611b38565b61218187610fcf848963ffffffff6119ed16565b61218c888888612370565b600061219e868863ffffffff611d4016565b1580156121bd5750876001600160a01b0316896001600160a01b031614155b156121ce576121cb89611d82565b90505b876001600160a01b0316896001600160a01b03167f89a178eaa27e0cd201bd795ca8ff716ac0df9618494510ca79771cfc66ffcde8898887866122115789612214565b60005b60408051948552602085019390935283830191909152606083015260808201879052519081900360a00190a3505050505050505050565b60008261225a57506000610996565b8282028284828161226757fe5b04146118c75760405162461bcd60e51b81526004018080602001828103825260218152602001806129556021913960400191505060405180910390fd5b60006118c783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124d9565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261158390849061253e565b600060028204612368836118bb61235b876b033b2e3c9fd0803ce800000061224b565b849063ffffffff6119ed16565b949350505050565b6001600160a01b0383166123b55760405162461bcd60e51b8152600401808060200182810382526025815260200180612a896025913960400191505060405180910390fd5b6001600160a01b0382166123fa5760405162461bcd60e51b81526004018080602001828103825260238152602001806128386023913960400191505060405180910390fd5b612405838383611583565b612448816040518060600160405280602681526020016128d1602691396001600160a01b038616600090815260346020526040902054919063ffffffff61195616565b6001600160a01b03808516600090815260346020526040808220939093559084168152205461247d908263ffffffff6119ed16565b6001600160a01b0380841660008181526034602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081836125285760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156119aa578181015183820152602001611992565b50600083858161253457fe5b0495945050505050565b6060612593826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166125ef9092919063ffffffff16565b805190915015611583578080602001905160208110156125b257600080fd5b50516115835760405162461bcd60e51b815260040180806020018281038252602a815260200180612ad2602a913960400191505060405180910390fd5b60606123688484600085606061260485612766565b612655576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106126945780518252601f199092019160209182019101612675565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146126f6576040519150601f19603f3d011682016040523d82523d6000602084013e6126fb565b606091505b5091509150811561270f5791506123689050565b80511561271f5780518082602001fd5b60405162461bcd60e51b81526020600482018181528651602484015286518793919283926044019190850190808383600083156119aa578181015183820152602001611992565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590612368575050151592915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106127e05782800160ff1982351617855561280d565b8280016001018555821561280d579182015b8281111561280d5782358255916020019190600101906127f2565b5061281992915061281d565b5090565b61097b91905b80821115612819576000815560010161282356fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f742072656465656d206d6f7265207468616e2074686520617661696c61626c652062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63655472616e736665727320617265206f6e6c7920616c6c6f7765642069662074686520756e6465726c79696e6720617373657420697320455448557365722063616e6e6f74206769766520616c6c6f77616e636520746f2068696d73656c66536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365496e74657265737420697320616c7265616479207265646972656374656420746f207468652075736572436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564496e7465726573742073747265616d2063616e206f6e6c79206265207265646972656374656420696620746865726520697320612076616c69642062616c616e63655472616e7366657272656420616d6f756e74206e6565647320746f2062652067726561746572207468616e207a65726f45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f43616c6c6572206973206e6f7420616c6c6f77656420746f2072656469726563742074686520696e746572657374206f66207468652075736572a2646970667358221220bbe3ae28c9bda65fb2e89f4b71fd0a9cda9128f6b741ee2a4718c5a6882b746164736f6c63430006080033";
|